Fedora 28がリリースされていたのでバージョンアップしてみた

https://fedoramagazine.org/announcing-fedora-28/
5月1日だったみたいです。Raspberry pi と戯れていたので見逃しました。

さて、今回のバージョンアップ。いつもの fedup がなさそうなので、dnfで実行します。

$ sudo dnf system-upgrade --releasever 28 download

無事にダウンロードができたので、次は再起動します。

$ sudo dnf system-upgrade reboot

うまくいったら、続きを書きます。

一応、再起動で無事に起動したので記載します。
変更点はあまり良くわからないけど、メニューや表示が全部英語表記になってしまいました。

その他、gnome-terminalなど、基本となるアプリが起動しない。これは、設定をやり直さないとだめな感じですね。Ctrl+Alt+F2とかでも仮想端末開かないし、どうしたものか。ちょっと危険なので、しばらく様子をみたほうが良い感じです。

# 先ほど、Ctrl+Alt+F2で仮想端末からログインできました。原因追求は面倒だから、また今度。うまくいったという報告がどこかであったら試します。

Raspberry Pi 3で、Linux From Scratch その3

さて、昨日はch6-build.shを使わないなんて書きましたが、あまりに面倒なので、やり直しました。
まあ、ch6-build.shの最後に、ラズパイ用のソースなんかも展開してくれるスクリプトが入っていたので、やり直したほうが楽でした。
しかし、glibcMakefileの書き換えは後からmakeされると駄目になるので、

sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
make install

の行を

sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
make install || true
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
make install

のように書き換えて、実行して完了しました。make -k install でもOKかもしれませんが、その辺は識者に尋ねてください。

やり直すには、/tools をバックアップしていたtarから展開するだけでなく、/usr /bin /lib /sbin を削除して、もう一度ディレクトリの作成と重要なファイルとシンボリックリンクの作成を実施する必要があります。まあ、面倒だったけどやってみてください。

終わったら、デバッグシンボルの削除なんかやって終了。
次は、第7章に進みます。

で進む前に、
http://www.linuxfromscratch.org/lfs/downloads/stable/lfs-bootscripts-20170626.tar.bz2
http://intestinate.com/pilfs/scripts/pilfs-bootscripts-20170225.tar.xz
この二つをダウンロードしておいてください。

        • -

ここで、問題発覚。
日本語版のLFSはsystemd版だった。Pi LFS は SystemV なので、日本語マニュアルもそっちを見てください。ま、ここで気付いてよかった。/etc/groupと/etc/passwdの修正ぐらいかな?だめなら、また、やり直します。

          • -

ついでに、最後まで行きました。
自作カーネルでは起動しなかったけど、それは、RaspberryPiのconfigを知らないため。調べて作ればよしとしよう。
kernelは arch/arm/boot以下の zImage を /boot/kernel7.img という名前でコピーするだけで読み込んでくれます。まあ、起動してないからなんとも言えませんが。。。

ということで、ゴールデンウィークのお勉強も終了。今後は、今回初めて知った wpa_supplicant を調べようかなと思います。現在RaspberryPiは、3.5inchモニタつなげて「小さくて見えないよ〜」となってます。

Raspberry Pi 3で、Linux From Scratch その2

昨日、
./ch5-build.sh
で終了してましたが、無事にビルドできました。
今日は、Linux From Scratch 第6章からです。

必ず、ここで、/mnt/lfs/toolsをバックアップしてください。
ch6-build.shでエラーになると、もうね、どうにもなりません。

cd $LFS
tar -cf tools_backup.tar tools
でできるから、問題ないでしょ。

さて、本来なら、
6.2 仮想カーネルファイルシステムの準備
6.4 Chroot環境への移行
6.5 ディレクトリの生成
6.6 重要なファイルとシンボリックリンクの生成
まで実行して、その後は

chmod +x ch6-build.sh
./ch6-build.sh

で終わりのはずなのですが、glibcのinstallでエラーになります。
そして、そうなると、ch6-build.shをもう一度実行しようとしても、6.7 Linux-4.16.2 APIヘッダーでエラーになります。つまり、どうにもならなくなります。

仕方がないので、ch6-build.shを使わずに、手作業で実施していきます。
但し、ch6-build.shは非常に有益な資料なので、必ずすぐに見えるところにおいてください。私は、ctrl+Alt+F2で仮想端末を開き、そこで見てます。

6.7 Linux-4.16.2 APIヘッダーは、RaspberryPi専用のものを使ってください。
/mnt/lfs/sourcesディレクトリにrpi-4.14.y.tar.gzというファイルがあるので展開します。
作業は、ch6-build.shを見ながら実施してください。

…全部書くと大変なので、Linux From Scratch日本語版とch6-build.shを読み比べながら、問題ないところは、何も書かずにスルーします。

さて、問題の 6.9 Glibc-2.27 です。
エラーになるのは、
make install
そして、エラーの内容は・・・メモするの忘れた・・・まあ、perlスクリプトでのテスト中に、perlが-lnss_nis付きでビルドされていないよって感じ。それって、その直前で回避用の修正しているのですが。。。

sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile

perlを実行するのではなく、echoで実行しないようにしてるのに、、、なぜ???
きっと、中の小人さんが気を使って、config.statusでMakefileを作り直してくれたのでしょう。余計なことしやがって。。。

ということで、make install でエラーになって、perlスクリプトによるテストだったら、もう一度上記のsedスクリプトMakefileを書き換えてください。

sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile

一度で大丈夫だと思うんだけど、だめなら何回か試してね。

ということで、手元のほうでは順調に進んでいます。
しかし、手動でビルドしているので進みは遅いですね。途中で散歩したり買い物行ったり昼寝したり、放置している時間が長いってのもありますが。。。

現在は、6.16 Binutils-2.30のビルド中です。
今日はここまで、次回があったらそちらも読んでください。

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時間かかったので。。。ということは、前回失敗してやり直してるってことです。まあ、ビルドはできると思うので安心してください。

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

Fefora 26 -> 27

まだBetaらしいのですが、いつものように更新していきます。
今回は fedup コマンドが提供されていないようなので、dnfコマンドで実施

ここを参考に
https://fedoramagazine.org/upgrading-fedora-25-fedora-26/

$ sudo dnf upgrade --refresh

$ sudo dnf system-upgrade download --releasever=27
Before you continue ensure that your system is fully upgraded by running "dnf --refresh upgrade". Do you want to continue [y/N]: y
(中略)
Importing GPG key 0xF5282EE4:
Userid : "Fedora 27 (27) "
Fingerprint: 860E 19B0 AFA8 00A1 7518 81A6 F55E 7430 F528 2EE4
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-27-x86_64
これでいいですか? [y/N]: y
(中略)
トランザクションの要約
================================================================================
インストール 94 パッケージ
アップグレード 2431 パッケージ
削除 3 パッケージ
ダウングレード 13 パッケージ

総ダウンロードサイズ: 2.0 G
DNFにより、パッケージはダウンロードだけをされます。gpgキーがインストールされます。トランザクションを確認します。
これでいいですか? [y/N]: y
(中略)
警告: /var/lib/dnf/system-upgrade/fedora-cba4cf65782eccda/packages/dnf-2.7.3-1.fc27.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f5282ee4: NOKEY
Importing GPG key 0xF5282EE4:
Userid : "Fedora 27 (27) "
Fingerprint: 860E 19B0 AFA8 00A1 7518 81A6 F55E 7430 F528 2EE4
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-27-x86_64
これでいいですか? [y/N]: y
鍵のインポートに成功しました
警告: /var/lib/dnf/system-upgrade/rpmfusion-free-bb633ef348ecd3c8/packages/rpmfusion-free-appstream-data-26-1.fc27.noarch.rpm: ヘッダー V4 RSA/SHA1 Signature、鍵 ID 7d838377: NOKEY
Importing GPG key 0x7D838377:
Userid : "RPM Fusion free repository for Fedora (27) "
Fingerprint: 38FF 4B07 9890 0DAF 5E67 D7D1 1DBD E605 7D83 8377
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-27
これでいいですか? [y/N]: y
鍵のインポートに成功しました
警告: /var/lib/dnf/system-upgrade/rpmfusion-nonfree-49a1ebaeea63d875/packages/rpmfusion-nonfree-appstream-data-26-2.fc27.noarch.rpm: ヘッダー V4 RSA/SHA1 Signature、鍵 ID b9c13282: NOKEY
Importing GPG key 0xB9C13282:
Userid : "RPM Fusion nonfree repository for Fedora (27) "
Fingerprint: C1D5 D345 7F31 7578 802E E337 8704 7784 B9C1 3282
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-nonfree-fedora-27
これでいいですか? [y/N]: y
(中略)
完了しました!
Download complete! Use 'dnf system-upgrade reboot' to start the upgrade.
ダウンロードされたパッケージは、次の成功するトランザクションまで、キャッシュに保存されます。
'dnf clean packages' を実行することでキャッシュを削除できます。

$ sudo dnf system-upgrade reboot

再起動し、無事にupgradeされたようです。
見た目は、ほとんど変わりませんね。

fedup download --release=26の実行

$ sudo fedup download --release=26
ということで、いつものバージョンアップ。conflictがあったから、python系でいくつかパッケージを削除して実行。順調にダウンロードして、実行中。ダウンロード完了したので、以下のコマンド
$ sudo dnf system-upgrade reboot
無事にバージョンアップ完了。
アイコンが変わったぐらいで、特に大きな違いは感じない。

しかし、最近はWindows 7 に切り替えちゃったから、不具合は見つけられないかも。