晴れたり沼ったり

へんなものに沼ることがあります。

M1sという謎のスティックPCになんとかfreebsdを入れたい

表題の願望を実現すべく先日大沼にハマっていた。

 

沼の遠因は raspi3bのfreebsd化でraspi3bが壊れたこと。
ちょっと触ってたらなんかfreebsdが懐かしくなってしまってちょっと使ってみるかな~というキブンに。
だけど入れてもよいAMD64系のマシンが手元にない。いや一台あったんだけど、身内に貸したらいつまでも戻ってこない。vaio type Pは使ってないし使う予定もないから入れてもいいんだけど、さすがに32bitのatomはI/O遅すぎて使い物にならないのでraspiに入れたほうが快適かもしれない。

 



と、いろいろ物色してたらノーブランド(skynewってところが取り扱い?)っぽい M1s というスティックパソコンを持っているのを思い出した。これも遅くてお蔵入りにしたんだけどubuntuの古いのが入っててそれを入れたら他のが入らなくなって時間も無いときだったので放置しまくっていたやつだ。
これはなぜか捨ててなかった。でfreebsdを入れようとおもったのだが、ぜんぜんUSBからbootしてくれない。ちょっとやってうちに放置していた理由を思い出した。BIOSで起動順が変えられないのだ。いや変えるメニューはあるんだけどやっても実際には変わらない。

<うまく行かなくて以前放置していた理由>
boot順が何故か変えられない
ブートデバイスを選ぶチョイスは出来るが起動してくるとその選択が有効になってない。
なので、正しく立ち上がるOSが入ってると別なOSを入れられない
BIOSメニューでEFIブートオフのオプションが入ってない。

 

一応 f7 で起動デバイスを選ぶ選択画面は出る。
(ただしそこで選んだデバイスからは起動しないで元のOSが立ち上がる)
そこでgrubコマンドを選ぶ。
GPTで書き込まれてEFIから認識されるフォーマットで書かれたインストールデバイスQ4OSのインストーライメージでインストール途中にSSDパーティションについてオプションが選べるのでそこでパーティションを全部クリアする。これを反映させてからQ4OSのインストール自体は中止する。


FREEBSDメモリースティックイメージを指して起動すると起動順が全部失敗するので無事途中までインストーラが動き出す。

 



atkbd0: [GIAN-LOCKED]
とか言ってフリーズしてくるので
再起動し、メニューのところで3を選んでオプションを手動で投入。

unset hint.uart.1.at
というコマンドをいれてからbootコマンドを入れる。
(これはググったらすぐに出てきた。)

しばらくするとまた止まってしまう。インストーライメージが入ったDVDがマウントできないよーとか言って
mountroot>
というプロンプトで止まってしまう。

 



入ってる場所を教えて手動でマウントして上げれば続行出来そうだけど、?をいれて調べてみてもどれだかわかりにくい。
ググったらすなおにDVDからインストールするほうがおすすめとか出てきたので、DVD-Rを注文。以前整理した時にもうDVD-RもCD-Rも使わないよな~といって全部捨てたのが災いした。

 

で、DVDだと大分進展した。インストーラは途中までちゃんと動く。たぶん、liveCDも使えるかも?ところがインストーラとして実行してるとフォーマットのところでコケる。もう一回 dd if=/dev/zero.... 作戦かな。一晩かかりそう。

 

 

freebsdに思い入れがなければとっくの昔に放置してるんだが....

クリーン後にやってみたら、こんどはDVDインストーラが起動しなくなってしまった。

なんかドライブ(3台まとめ売りのチャイナ製)が悪いような気もするのでダメ元でUSBインストーラでやってみた。

mountroot> がやはり出る。だめもとでそこからコマンドでリブートしてみたらうまくインストーラが進んでインストールできた!!!最初はUSBのパワーマネジメントかなにかで認識しなかったのかもしれない。原因不明だし対処方法も不明....

 

こうやればうまくいくというガイドラインは得られなかったがうまくいく可能性については下記の自分用メモでまとめとく。

<自分用メモ>

対象PC: M1s celeron N4000

利用イメージ: FreeBSD-14.0-RELEASE-amd64-dvd1.iso

利用書き込みソフト: rufus-4.4.exe

1. インストール対象のSSDにはパーティションは無い(必須じゃないかもしれない)

2. SSD上にはgrubEFI関連の情報が残されていないこと

3. usb でbootするが何度もリセットがかかったみたいになるがBIOSがUSB起動を始めるまでに何度もセルフリセットするみたいなので放置。mountroot> がでたら諦めずにそこでなんどかリブートしてみる....

4. インストーラが立ち上がったら自動インストールが進行する前に 3 を入力して止めてシェルから unset hint.uart.1.at を入力してから boot

5. インストーラの途中で聞かれるフォーマットについてはUCSを選択(必須じゃないかも)

5. 再起動直前になにかやるか?と聞かれるのでシェルに抜けて /boot/device.uart.1.at が含まれる行をviを使ってコメントアウトまたは削除する

 

 

その他の覚えた知見:

(あいかわらずefiブートとgrubについてはよくわかってないので誤解もあるかも)


efi menu が出てる場合はディスク内をさがして ???.efi をコマンド名のようにタイプすればboot出来ることがある。正しくないやつだ良くないことが起こる可能性もある。
探す時は ls が使える。cd はないが、ls で出てきたデバイスディレクトリをタイプするとそこに cd できる。戻り方はわからない:-)

grubからはcを選ぶとgrubシェルが起動できる。
同じく ls が使えるが cd みたいのはやはりないので、
まず ls でブートデバイスっぽくgrubから見えているものを探す
つぎにls (hd0,gpt2)みたいにして grub が入ってるところを探す。それらしいのがあったら
set root=(hd0,gpt1) と set prefix=(hd0,gpt1)/efi/boot/grub
みたいにして
chainloader xxxxx.efi
みたいにしてから
boot
すると動く場合もある。これも正しいイメージじゃないとよくないことが起こる可能性はある。

 

・set prefixのあと単に normal とタイプしても起動することもある。

 

grubからはたんに exit だったか quit すると次の起動オプションに進む場合があるので、どれがイメージかわからないときはgrubシェルを抜けてみるのも試してみると吉かもしれない。

 

・インストールは失敗するけど、USBのイメージファイルでunix系シェルに抜けることが出来る場合は、そのシェルでpartedが出来るならparted。なければ partx それもなければ
dd if=/dev/null of=/dev/mmcblk0 みたいな荒業を噛ませばクリーンにできるので内蔵SSDから起動されなくなり普通にUSBから起動することもありえる。ただしこれも順に試すので3回位ロゴが出てきたりするので無限ループか?とか思ったりした。

 

grubメニューからUSBが見えない時は rufusというブートイメージ作成ツールでGPTとEFIを指定してあげると見えてきて grub でブートさせられることがある。

 

EFIは64bit決め打ちっぽく、32bitのローダは動せないっぽい。なのでwipeoutとかはEFIで止まってしまう。legacyなBIOSモードにbootを変えられれば動くはずだがBIOSにそのメニューがないM1sでは手詰まり。