ハマった環境.
- SSD+HDD搭載ノートPC
- C:(SSD)へWindows7インストール済
- D:(HDD)へデータを格納
- C:とD:それぞれパーティションを切り直して,C:の後ろに/とswapを,D:の後ろに/homeを入れる
- 新たに導入したOSはUbuntu Server 14.04.2
- インストーラはUSBメモリを使用./dev/sdaがUSB,/dev/sdbがC:,/dev/sdcがD:
- expert installでブートローダはLILOを/dev/sdb2のPBRへ導入
- MBRのブートローダはMBMを導入.USBへMBM.144を焼いてインストールするが,edit partitionでは0がUSB,1がD:,2がC:だったくせに,install mbmでは1を指定するとC:のmbrに入った
mbmから/deb/sdb2を指定してliloを起こすも,ディスクを読み込めずプロンプトにinitramfsと表示されるbusyboxが始まる.
原因
USBでインストールしたため,HDDのマッピングがうまくできていなかったこと.
by-idとかで指定してくればいいものを,自動ではやってくれなかった.
対策
- initramfsの状態で,
(initramfs) ls /dev/sd* (initramfs) ls -l /dev/disk/by-uuid/ (initramfs) mkdir /mnt (initramfs) mount /dev/sda2 /mnt # <-インストール時は/dev/sdb2だったが,今は/dev/sda2 (initramfs) cd /mnt/etc (initramfs) /mnt/bin/ed lilo.conf # <-ラインエディタ.viとか見付けられたら,viでもいい.とにかくエディタで修正する
- lilo.confで,
- append="root=/dev/sdb2 " + append="root=/dev/disk/by-uuid/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "
- lilo.confに従いブートローダの再構築.ただし,/mntにマウントした状態ではうまく動作しない&busyboxだとエラーを吐くので,
(initramfs) mv /mnt/dev /mnt/d # <- /devを移動してくるための準備 (initramfs) mv /dev /mnt # <- 後でchrootする/mnt配下にsdXやdisk/by-uuidがないといけない.シンボリックリンクではchroot後に上に辿れないので,移動するしかない (initramfs) ls /mnt/bin/*sh # <- bashとか入ってるか確認.hadacchiはbashでやった (initramfs) chroot /mnt /bin/bash # <- chroot後のパスで指定 # sudo /sbin/lilo # <- rootのプロンプトに見えたけれど,sudoしないと動いてくれなかった # exit # <- busyboxへ戻る (initramfs) reboot
私の環境では,これで通常のubuntuが起き上がってくれた.
あとで,他に不整合が起こってないか確認すること.
といいつつ,/devは起動時に中身を再構築されるっぽいので,/dが残っていることさえ気にしなければ,特に問題ないと思う.
結局,ノートPCのHDMIに接続したディスプレイ,DisplayPortに接続したディスプレイを生かそうとして,DisplayPortの方を生かせなかったので,Debianで試すことにした.
Debianだと,インストーラのUSBに加えて,nicの追加ドライバのためのUSBを挿しても,ちゃんとSSD/HDDがsda/sdbと認識されていて,素晴らしいなと思った.
まぁ,この先,クソだと言うかも知れんけど,現状ではdebianのが洗練されている雰囲気を感じる.
debianだと,gpartedか何かが走ってパーティショニングするところで,ext4ファイルシステムを作ろうとしてフリーズした.
こりゃダメだ な