今朝目覚めたら,rustというパッケージのコンパイルをしていました.ようやく今(夕方)終わって,今度は,Spidermonkeyというのに取りかかりました.

いつ終わるんでしょう😓
横断歩道での一時停止は善意ではなく義務 (Powered by WordPress)
今朝目覚めたら,rustというパッケージのコンパイルをしていました.ようやく今(夕方)終わって,今度は,Spidermonkeyというのに取りかかりました.
いつ終わるんでしょう😓
電流不足の見立ては正解なようで,Raspberry Pi(RPi)4とUSB-SSDの間にSelf-powered HUBを入れることで,安定してSSDからブートするようになり,途中でSSDがdisconnectすることもなくなりました.
やっと,RPi 4が自力で動けるようになりました.
ブートすれば,あとは普通のAMD64やx86マシン同様,systemdのハンドブックに従い,まずはネットの設定をしてから,その他の設定をしていけば良いはずです.
しかし,ネットの設定ではまりました.同ハンドブックには,
/etc/systemd/network/50-dhcp.network
[Match] Name=en* [Network] DHCP=yes
とありますが,これをこのままコピーしてしました.
最初は話を簡単にするために,有線のLANにつないでいます.Raspberry Pi 4の場合,正解は,
Name=eth*
です.ip aコマンドで,eth0になっていることを何度も確認しているのに,このファイルの内容との不整合に気がつきませんでした.
一時は,ネットがつながらないならQEMUを使ったクロスプラットフォームによるchrootでインストールを続けようと試みようとしましたが,内容が古くてだめでした(/usr/portageなんか使っている).
あとで思えば,なんでこんなところでと悔やまれます.もちろん,RPiいじりを一日中やっているわけではありませんが,これで,1日くらいロスしました.
ネットにつながれば,それこそsystemdやおおもとのハンドブックの手順で設定していけます.
しかし,遅い😓
今,rustとかいう言語ツールのコンパイル中ですが,rustc自身がツールの何かひとつをコンパイルするのに,2つのCPUをフルに使い,メモリーを4割使って既に80分以上コンパイル中です.他の3つのタスクも長時間多くのメモリーを使い,swap領域もかなり使っています.これじゃ時間がかかるわけです.
はたしていつ終わるのだろうか😓
ブートしなくなったのにはいろいろ複雑な原因が絡んでいるようです.
ひとつは,USB-SSDドライブに供給する電流の不足と思われます.ぎりぎり足りたり足りなかったりするので,USB2なら虹まで進むのにUSB3では虹まで進まないのでしょう.
電流問題を避けるためSDカードからブートさせてみようと,手持ちの32GB SDカードに,SSDの内容を移して,cmdline.txtと/etc/fstabのディスクの既述をPARTUUIDにして起動させたら,あっさり起動しました.何もしてないのに壊れたのは,筆者のせいではなかったようです.
USB-SSDドライブについても,cmdline.txtの内容を見直して,elevationなんとかと,fsckなんとかを外して,Slackware ARMのものとほぼ同じ内容にしてみたところ,起動するようになりました(ただし,USB2か,USB3の上のポートのみOK).
しかし,rootでログインして,一晩そのままアイドル状態にしておいたところ,途中でUSBドライブがディスコネクトされて,朝には正常動作しなくなっていました.
USBドライブを使うには,外部電源式のUSB-HUBを間に入れるしかなさそうです.
なんということでしょう.rootでログインできるようになったのもつかの間,ブートしなくなりました.
これまでどおりSSDをUSB3ポートにつなぐと,firmwareを見つけられないようで,四角い虹まで進みません.
USB2ポートにつなぐと,虹の四角まで行きますが,そこから先に進みません.
「何もしてないのに壊れた😓」
もう一度最初からやり直します.今度は,GPTでなくてMBRにします😓
Raspberry Pi 4 Model B 4GB(以下RPi4)に,Gentooをインストールしはじめました.
GentooのWikiに,Raspberry Pi 3 Model B(+)(以下RPi3)と,RPi4のインストールメモ書きのようなものがあります.RPi4のページでは,RPi3で既知なことは省略して,RPi4 specificなことしか書いてないので,行ったり来たりしなければなりません.
とにかく,ブート用のイメージがないので,他のマシン,というか,AMD64かx86のGentooの実マシン(以下GentooPC)がないと始まりません.
記憶メディアは,RPi3だとSDカードとなりますが,RPi4は,SSD/HDDからブートできますので,作業効率も考えてSSDにしました.たまたま1TBのSSDが1つ余っているのでそれを使います.
パーティションは,Wikiの記事に逆らってGPTにして,VFAT 512MB, swap 4GB, 残りをrootにしました.
GentooPCでいろいろ準備して,そろそろできた頃合いと思ってSSDをRPi4につないで電源を入れますが起動してくれません.まあ,一発完動しないのはやむを得ません.
Wikiを読み返しながら,なぜかGentooPCの/bootに入ってしまったfirmwareを/mnt/gentoo/bootに移し替えたら,どうやらSSDのVFATからブートしました.
しかし,四角い虹色の画面から進まず,緑のLEDが7回連続して点滅するのを繰り返します.
これは,Raspberry Piのサイトから,「Kernelが見つからない」と判明しました.
これまでは,何かやっても手応えのない,糠に釘状態でしたが,ようやく,症状から原因の端緒につながりそうな弱々しい一条の光が見えてきました.
Kernelはクロスコンパイルして仕立てて/mnt/gentoo/bootに,kernel8.imgとしておいてあるのですが,他のkernel*.imgのうちで,関係なさそうなのをimg-orgという拡張子にしてしまいました.
その結果ようやくKernelがブートしますが,Kernel Panicを起こします.
その時のメッセージで検索してみると,「64bitのinitがインストールしてあるのにKernelは32bit」の場合に出るメッセージだということです.
そこで話を簡単にするため,/mnt/gentoo/bootの,クロスコンパイルして作ったイメージをkernel.imgにして,その他のkernelを全てimgでない拡張子にしました(注: この記述ははなはだ疑わしいというか,たぶん勘違いです.RPi 4はkernel8.imgを使うので,コンパイルして作ったイメージをkernel.imgにしてもブートしないはずです).
これでなんとかCUIのログイン待ちになりました.
しかし,rootでログインできません.デフォルトでは,rootのアカウントがロックされているそうです.これも,ネット検索すると,「/mnt/gentooにchroot」するなんていう答えばかりで,「それができないから苦労しているんだ」と思わず叫びたくなります.
これは,shadowのrootの行を生きているマシン(GentooPC)からコピーすれば解決します.
これから,x86やAMD64では,chrootして行う作業を,実際の起動環境で行っていきます.