KernelPanic!!
2019-02-27-18:01
今回は,ManjaroLinuxで発生したカーネルパニックを直す機会があったので,
そのことについて書いていきます.
僕が経験したカーネルパニックは,Not syncing No init foundでした.
直し方の結論から言うと,GRUBがアップデートに対応できなかったのが原因なので,GRUBからsystemd-bootに変更すれば直ります.
手順は以下に書いて置きます.
まず,システムを修理するためにchrootで中身をいじる準備をします.
--chrootの手順--
まず,インストールメディアを用意します.最初のインストールに使ったものがあればそれを使用してください.
ない場合は,インストールメディアの作成をします.
--インストールメディアの作成手順--
まずは,osを手に入れます.Manjaro公式ページからダウンロードします.
次に,空のUSB(4GB以上であれば何でも良いです)を用意して, それにosを書き込みます.書き込むには専用のソフトウェアが必要です.
色々種類はあるのですが, 僕のオススメはシンプルなGUIで使いやすいetcherです.
USbに書き込めたら,インストールメディアの作成はそれで終了です.
-----------------------------------------------------
次に,インストールメディアを起動します.方法はbootメニューでインストールメディアのUSBを選択するだけです.
bootメニューに入る方法はpcによって違いますが,Thikpadの場合は起動時F12です.
起動したら色々設定できる画面が出てくるので,キーボード配列をjpに変えてからbootなんちゃらを押してManjaroを起動します.
起動が終わってデスクトップが表示されたら,一度ログアウト(シャットダウンではない)をします.
ログアウトが終わったら,ユーザー名にroot,パスワードにmanjaroと入力してrootユーザーでログインします.
ログインできたら,いよいよターミナルでの作業に入ります.
まずは,/ ディレクトリとbootディレクトリの場所を探します.
このように,lsblkコマンドを使えば各ディレクトリがどこかわかります.
今回,僕の場合は,/が "mvme0n1p2",bootが "mvme0n1p1"ですね.
これがわかったら,あとはコマンドを打っていくだけです.
これで,chrootの手順の説明は終了です.
-----------------------
これから,カーネルパニックの原因であるgrubからsystemd-bootへの切り替え作業を行います.
まずは,
を入力,実行します.すると,色々なファイルが作成されるので,作成されたloader.confの中身を編集していきます.
最初,loader.confの中身はこんな感じになっています.(違う場合もありますが,どうせ書き換えるので特に問題ないです.)
それを,こう書き換えてください.
書き終えたら,"CtrlとC", "Y", "Enter"を順に押してファイルを保存しnanoを終了します.
次は,confを作ります.
作成が終わったら,編集する前に/ディレクトリのUUIDやlinuxのバージョンなどを確認します.
まずはUUIDから確認します.
これの,/ディレクトリの場所のUUID(16進数の文字列)をメモしておきます.
次に,linuxのバージョンを確認します.
このvmlinuzのハイフンの後ろの部分の文字列と,initramfs(-fallbackがついていない方)のハイフンの後ろの文字列をメモしておきます.
そうしたら,manjaro.confを編集していきます.
中身はこのようにしてください.
書き終えたら,"CtrlとC", "Y", "Enter"を順に押してファイルを保存しnanoを終了します.
最後に,
を実行して,grubからsystemd-bootへの移行作業は終了です.
その後,
を実行して画面が真っ暗になったらUSBを抜き,そのまま少し待てばOS選択画面がでてくるので,
Manjarolinuxを選択して正常に起動することが確認できたらカーネルパニックの修理は完了です.
お疲れ様です.拙い文章でしたが長い間お付き合いしていただき,ありがとうございました.
最後に
今回はMinfaoxくんに色々助けてもらいました.本当にありがとうございました.
そのことについて書いていきます.
僕が経験したカーネルパニックは,Not syncing No init foundでした.
直し方の結論から言うと,GRUBがアップデートに対応できなかったのが原因なので,GRUBからsystemd-bootに変更すれば直ります.
手順は以下に書いて置きます.
まず,システムを修理するためにchrootで中身をいじる準備をします.
--chrootの手順--
まず,インストールメディアを用意します.最初のインストールに使ったものがあればそれを使用してください.
ない場合は,インストールメディアの作成をします.
--インストールメディアの作成手順--
まずは,osを手に入れます.Manjaro公式ページからダウンロードします.
次に,空のUSB(4GB以上であれば何でも良いです)を用意して, それにosを書き込みます.書き込むには専用のソフトウェアが必要です.
色々種類はあるのですが, 僕のオススメはシンプルなGUIで使いやすいetcherです.
USbに書き込めたら,インストールメディアの作成はそれで終了です.
-----------------------------------------------------
次に,インストールメディアを起動します.方法はbootメニューでインストールメディアのUSBを選択するだけです.
bootメニューに入る方法はpcによって違いますが,Thikpadの場合は起動時F12です.
起動したら色々設定できる画面が出てくるので,キーボード配列をjpに変えてからbootなんちゃらを押してManjaroを起動します.
起動が終わってデスクトップが表示されたら,一度ログアウト(シャットダウンではない)をします.
ログアウトが終わったら,ユーザー名にroot,パスワードにmanjaroと入力してrootユーザーでログインします.
ログインできたら,いよいよターミナルでの作業に入ります.
まずは,/ ディレクトリとbootディレクトリの場所を探します.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 238.5G 0 disk
├─nvme0n1p1 259:1 0 300M 0 part /boot/efi
├─nvme0n1p2 259:2 0 229.4G 0 part /
└─nvme0n1p3 259:3 0 8.8G 0 part [SWAP]
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 238.5G 0 disk
├─nvme0n1p1 259:1 0 300M 0 part /boot/efi
├─nvme0n1p2 259:2 0 229.4G 0 part /
└─nvme0n1p3 259:3 0 8.8G 0 part [SWAP]
このように,lsblkコマンドを使えば各ディレクトリがどこかわかります.
今回,僕の場合は,/が "mvme0n1p2",bootが "mvme0n1p1"ですね.
これがわかったら,あとはコマンドを打っていくだけです.
$ mount /dev/ルートディレクトリの場所 /mnt
$ mount /dev/ブートディレクトリの場所 /mnt/boot
$ cd /mnt
$ mount -t proc proc proc/
$ mount --rbind /sys sys/
$ mount --rbind /dev dev/
$ chroot /mnt /bin/bash
$ mount /dev/ブートディレクトリの場所 /mnt/boot
$ cd /mnt
$ mount -t proc proc proc/
$ mount --rbind /sys sys/
$ mount --rbind /dev dev/
$ chroot /mnt /bin/bash
これで,chrootの手順の説明は終了です.
-----------------------
これから,カーネルパニックの原因であるgrubからsystemd-bootへの切り替え作業を行います.
まずは,
$ bootclt install
を入力,実行します.すると,色々なファイルが作成されるので,作成されたloader.confの中身を編集していきます.
$ nano /boot/loader/loader.conf
最初,loader.confの中身はこんな感じになっています.(違う場合もありますが,どうせ書き換えるので特に問題ないです.)
#timeout 3
default 43l34jkl32j4lk32
default 43l34jkl32j4lk32
それを,こう書き換えてください.
default manjaro
timeout 3
timeout 3
書き終えたら,"CtrlとC", "Y", "Enter"を順に押してファイルを保存しnanoを終了します.
次は,confを作ります.
$ touch /boot/loader/entries/manjaro.conf
作成が終わったら,編集する前に/ディレクトリのUUIDやlinuxのバージョンなどを確認します.
まずはUUIDから確認します.
$ fdisk -l -o +UUID
Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: LENSE20256GMSP34MEAT2TA
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C00C21BA-5E58-4BA6-94A0-D7246616916D
Device Start End Sectors Size Type UUID
/dev/nvme0n1p1 4096 618495 614400 300M EFI 0A159E14-E587-41F9-A0B0-607A5A3CA62A
/dev/nvme0n1p2 618496 481648510 481030015 229.4G Linu A18CF7F5-121F-4DAC-A332-0632FF0D18A9
/dev/nvme0n1p3 481648511 500103449 18454939 8.8G Linu BC4A17B5-F6E2-4DB7-BBC4-6393B76DCEF4
Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: LENSE20256GMSP34MEAT2TA
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C00C21BA-5E58-4BA6-94A0-D7246616916D
Device Start End Sectors Size Type UUID
/dev/nvme0n1p1 4096 618495 614400 300M EFI 0A159E14-E587-41F9-A0B0-607A5A3CA62A
/dev/nvme0n1p2 618496 481648510 481030015 229.4G Linu A18CF7F5-121F-4DAC-A332-0632FF0D18A9
/dev/nvme0n1p3 481648511 500103449 18454939 8.8G Linu BC4A17B5-F6E2-4DB7-BBC4-6393B76DCEF4
これの,/ディレクトリの場所のUUID(16進数の文字列)をメモしておきます.
次に,linuxのバージョンを確認します.
$ ls /boot
efi
intel-ucode.img
grub
linux419-x86_64.kver
initramfs-4.19-x86_64-fallback.img
memtest86+
initramfs-4.19-x86_64.img
vmlinuz-4.19-x86_64
efi
intel-ucode.img
grub
linux419-x86_64.kver
initramfs-4.19-x86_64-fallback.img
memtest86+
initramfs-4.19-x86_64.img
vmlinuz-4.19-x86_64
このvmlinuzのハイフンの後ろの部分の文字列と,initramfs(-fallbackがついていない方)のハイフンの後ろの文字列をメモしておきます.
そうしたら,manjaro.confを編集していきます.
$ nano /boot/loader/entries/manjaro.conf
中身はこのようにしてください.
title Manjarolinux
linux /vmlinuz-先程のvmlinuzのハイフンの後ろの文字列
initrd /initramfs-先程のinitramfsのハイフンの後ろの文字列.img
options root=PARTUUID=先程のルートディレクトリの場所のUUID
linux /vmlinuz-先程のvmlinuzのハイフンの後ろの文字列
initrd /initramfs-先程のinitramfsのハイフンの後ろの文字列.img
options root=PARTUUID=先程のルートディレクトリの場所のUUID
書き終えたら,"CtrlとC", "Y", "Enter"を順に押してファイルを保存しnanoを終了します.
最後に,
$ pacman -Rcnsu grub
を実行して,grubからsystemd-bootへの移行作業は終了です.
その後,
$ exit
$ reboot now
$ reboot now
を実行して画面が真っ暗になったらUSBを抜き,そのまま少し待てばOS選択画面がでてくるので,
Manjarolinuxを選択して正常に起動することが確認できたらカーネルパニックの修理は完了です.
お疲れ様です.拙い文章でしたが長い間お付き合いしていただき,ありがとうございました.
最後に
今回はMinfaoxくんに色々助けてもらいました.本当にありがとうございました.