お腹.ヘッタ。

関数型とかセキュリティとか勉強したい。進捗つらぽよ

linux kernel をbuildしてinstallしたら立ち上がらなくなった時のメモ

言ってる通り立ち上がらなくなった。 とてもつらい気持ちになったのでそれをどうやって解決しましたか?というメモです。

こういうのがネットに転がってるとマジでありがたいので感謝の意を込めて晒しておきます。

前提として

  • grubすら上がらない設定にしてしまった
  • idracとかから busybox のshellに対して書き込みができなくて終わってしまった
    • なんで idracから触れないのか... :innocent:
  • kernel build して make install したら死んだ

こんな感じの顔をして死んでた。linuxさんの色々なアヘ顔って感じです

Gave up waiting for root device. Common problems:
  — Boot args (cat /proc/cmdline)
    — Check rootdelay= (did the system wait long enough?)
    — Check root= (did the system wait for the right device?)
  — Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/mapper/ubuntu--vg-root does not exist. Dropping to a shell! 

BusyBox v.1.21.1 (Ubuntu 1:1.21.1-1ubuntu1) built-in shell (ash)   
Enter 'help' for list of built-in commands.  

(initramfs)

直し方

  • 雑にUSBライブブートをなんかでします。ubuntuとかでも良いです。
  • ライブブートからshellを触れる様にします。
  • とりあえず何も考えず ubuntu server のイメージを使いました。
# shellが触れてたら fdiskで対象のジャーナルを探す
fdisk -l 

# 雑に dev を見たら色々あるのでそれっぽいのをmountする
# sda1がefi, sda2がboot, sda3 が lvという感じ
mount /dev/ubuntu-vg/ubuntu-lv /mnt
mount /dev/sda2 /mnt/boot

# 後から chroot をするときに触りたい環境情報があるものをマウントして使える様にしておきます。これがないとFSとか触れなくて困る。
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

# chroot いわゆるコンテナ化みたいなやつです。(雑
# これで自分の壊したSSDとかのデータにログインするみたいなことができる
chroot /mnt /bin/bash

# 起動のオプションとかインストールが失敗してるだろうからこれで入れ直し
# カーネルのバージョンは /boot/ とかに転がってるファームから分かる。
# /etc/default/grub とかに設定があるからそれを書き換えたりも出来る
grub-install /dev/sda 
update-initramfs -u -k [カーネルのバージョン]

# 後片付け
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt/boot
umount /mnt

sudo reboot 

これで戻ってくるのを信じてもう一度トライ。 これで治らなかったらもっと頑張りましょう(完

もし無理なら /mnt が出来る時点で /home/user/ が手に入るのでそこにあるものをZIPしてどこかに投げつけるとかでレスキューしてOS入れ直しとかをすると良いと思います。

参考