Raspberry Pi 3で、Linux From Scratch

まだ、はじめたばかりだけど、記録を残す。
多分、失敗すると思うので、途中で終了になったらゴメンね。

ラズパイでLFSってプロジェクトがある。
http://intestinate.com/pilfs/
このPILFSを使って、簡単にLFSをするのが今回の目的。

LFSについては、素敵な日本語マニュアルもあるので、そちらを参照。
http://lfsbookja.osdn.jp/


私が使っているのは、Raspberry Pi 3なので、
http://intestinate.com/pilfs/images.html
から、Raspberry Pi 3のイメージをダウンロード
http://intestinate.com/pilfs/binaries/pilfs-base-rpi3-20180303.img.xz

母艦としてWindows 7で作業しています。なので、
32GBのminiSDを用意して、7-Zipで解凍して、
Win 32 Disk Imagerで書き込みます。

起動すると、login: が表示されるので、rootでログインします。パスワードはpilfsです。イメージダウンロードページに「Login as root with password pilfs.」と書かれています。

ラズパイに日本語キーボードをつなげちゃっているので、キーどおりには動きません。
よく使う '"*(){}[]\=_なんかがどこにあるのか分からない。
適当にキーを押して探してください。

次に、Wi-Fi設定。イメージダウンロードページに

wpa_passphrase your_SSID your_password > /etc/sysconfig/wpa_supplicant-wlan0.conf

と書かれています。your_SSIDとyour_passwordは、自分が使うWi-Fiを調べてください。
wpa_suppicantの設定ファイルを作成した後、

ifup wlan0

であっさり繋がりました。


では、PILFSのガイドのページに行きましょう。
http://intestinate.com/pilfs/guide.html


私は、SDカード上のファイルシステムで作業することにしました。


apt-get を実行しようとしたら、そんなコマンドは無いみたいです。まあ、何もしなくても大丈夫です。


LFSパーティションを作りました。私は、fdiskを使ってます。
fdisk /dev/mmcblk0
新規のパーティションをプライマリパーティションで追加し、先頭セクタと最終セクタはデフォルトとしました。最後にwで書き込んで終了です。


次に、フォーマット。
mkfs.ext4 -m 1 -L MyLFS /dev/mmcblk0p3


LFS環境変数を設定し、先ほどフォーマットしたパーティションを/mnt/lfsにマウントします。
コマンドはそのままで大丈夫です。

export LFS=/mnt/lfs
mkdir -pv $LFS
mount -v -t ext4 /dev/mmcblk0p3 $LFS


ソースを取得するディレクトリを作成し、wgetでダウンロード

mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
cd $LFS/sources
wget http://intestinate.com/pilfs/scripts/wget-list
wget -i wget-list -P $LFS/sources

ここで、うまく取れなくても大丈夫。後から手動でwgetすればOKです。


環境変数を設定します。
ここで、PILFSのマニュアルは不親切なので、LFS日本語マニュアルを使います。
手元では、第4章の準備作業の仕上げを見ながら作業しました。

mkdir -v $LFS/tools
ln -sv $LFS/tools /
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd lfs
(パスワードを入力してください)
chown -v lfs $LFS/tools
chown -v lfs $LFS/sources
su - lfs

まあ、toolsというディレクトリを作って、lfsというグループとユーザーを作ってlfsにログインしてるだけです。

日本語マニュアルでは、

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

と書いてますが、私はvi で .bash_profile を編集しました。
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
と書いてある一行です。

.bashrcもviで作成。注意はpilfsのGuideページにあるように、LFS_TGTをLFSマニュアルそのままではなく、LFS_TGT=$(uname -m)-lfs-linux-gnueabihfにすることです。

set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnueabihf
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH


そして、それらを反映します。
source ~/.bash_profile


ではビルド開始。ch5-build.shの所有者がrootのままなので、chmodコマンドはrootで実行しました。

cd $LFS/sources
su
chmod +x ch5-build.sh
exit
./ch5-build.sh

これでしばらく待ちます。前回7時間かかったので。。。ということは、前回失敗してやり直してるってことです。まあ、ビルドはできると思うので安心してください。

今日は、ここまで。次回があれば、そちらも読んでください。