ジャンル不定の日記です。

HDDではなくUSBメモリにLinuxをインストール

昨日の続きでUSBメモリにLinuxをインストールした。
想定外にハマって環境構築できるまでに半日かかった。

メインPCは64bitのArch Linuxだから、32bitが必須なときにも使えるように32bitのLinuxを用意したくて、第一候補はUbuntuだった。
昨日の時点でインストール済みUbuntu上でubiquityコマンドでのインストールは途中でcrashしちゃって断念して、
Virtualbox上のインストールメディアからUSBにインストールしようとしたが同じように途中でcrash。

Ubuntuは諦めてArch Linuxを用意することにしたが、メインPCは64bitなのでVirtualboxでやった。
のだが、HDDやSSDにインストールするのとは違う作業が多かった。


# grub-install --force /dev/sda
grub-installの際に--forceつけないとインストールできなかった。
Ubuntuのインストーラーがcrashするのはこれが原因と思う。

grubをインストールしても起動時に、
VFS: Cannot open root device "sda1" or unknown-block(0,0)
ってな感じでkernel panicする。
これの解決方法調べて、最初kernel起動オプションにrootdelayをつけてマウントを遅らせるとの情報が出てきてそっち方面調べてたがダメ。

かなり時間費やしたあとで、/etc/mkinitcpio.confの HOOKS から始まる行の udev の次にblock を追加して
# mkinitcpio -p linux
でinitramfsの再構築(初期状態でinitramfsは無いので作成後に一度 grub-mkconfig する必要がある。)をすることで突破できた。


そこまでext4でシステムを作ってたのだが、USBメモリに適したF2FSで作り直すことにした。
標準のGRUBはF2FSに対応していないらしいので、/bootはext2で作ることにして512MB割り当てた。
ついでに1番目のパーティションを2GB割当でFAT32にして必要なときはUSBメモリとしても使えるようにすることにした。
8GBのUSBメモリなのでrootfsは残りの5GB。

で、
F2FS: Cannot load crc32 driver.
エラー出てマウントできなかった。

これで調べると/etc/mkinitcpio.confのMODULESの項目でロードするモジュールを設定すると解決するとか情報が出てくるのだが、ダメ。
またもかなり時間費やしたが、最近のkernelで出てきたバグのようで標準kernelではどう設定しても解決できなかった。
そして、kernelを linux-lts にしたら何も設定せず起動できた。
標準kernelで起動できるようになるまではlinux-ltsはアップデートしないことにする。


そんな感じで半日以上かかったがUSBメモリをストレージとしたシステムが完成した。
アプリの起動なんかはストレージアクセス発生するから遅いが、かんぱに☆ガールズ(ブラウザゲーム)の実行中速度は問題ない。
ディスク使用率75%まで行っちゃったんで、FATは1GBにしておくべきだった。bootも256MBで十分だったぽい。

16GBはほしいかなとも思うが、その程度でサブPCとしては容量も速度も十分だし容量の多いSSDよりはるかに安い。
今度からはメインPCのメインストレージ以外はUSBメモリにする。
メインPCの方もストレージ1個だけだと壊れた時やばいし、オンラインストレージに上げられないようなファイルのバックアップストレージ用にもUSBメモリ欲しいかな。