2025.03
250GBのSSDの先頭のEFI領域以外を2つに分けて、Win10領域、Linux領域、として使っていた。EFI領域にはLinux領域をmountするように変更しリビルドしたLinuxカーネルを置いてBIOSにロードさせていた。Win10への切り替えには、Linuxのefibootmgrコマンドを使っている。250GBのSSDを500GBのSSDへ変更し、内容を全てコピーし、これまでと同じような配置とした。しかし何故か、Linuxカーネルは起動が終わる前にログインプロンプトを出し、起動を停止するようになってしまった。idとpasswdを入力してもログインできない。
ChatGPT
500GB SSDへコピーしたことで、Linuxの起動が途中で止まりログインできなくなった原因として、以下の点を確認すると解決できる可能性があります。
### **考えられる原因と対処方法**
#### **1. UUIDの変更**
SSDをクローンまたはコピーした場合、パーティションのUUIDが変更されている可能性があります。
これにより、Linuxの`/etc/fstab`やGRUBの設定とズレが生じてマウントが失敗している可能性があります。
**確認方法:**
1. **リカバリーモードまたはライブUSBで起動**
2. `blkid` コマンドでUUIDを確認:
$ blkid
3. `/etc/fstab` 内のUUIDと比較:
$ cat /etc/fstab
4. 必要に応じて`/etc/fstab`を修正
**修正例(UUIDを適切なものに変更):**
$ UUID=xxxx-yyyy / ext4 defaults 0 1
#### **2. EFIエントリの不整合**
SSDを交換したことで、`efibootmgr` の設定がズレている可能性があります。
**確認方法:**
1. **UEFIファームウェア設定(BIOS)で起動エントリをチェック**
2. **`efibootmgr` でエントリを確認:**
$ efibootmgr -v
3. 必要に応じてEFIエントリを追加:
$ sudo efibootmgr –create –disk /dev/nvme0n1 –part 1 –loader /EFI/Linux/grubx64.efi –label “Linux” –bootnum 0001 –bootorder 0001
#### **3. `/boot` パーティションのズレ**
`/boot` をEFI領域にマウントする設定に変更したため、カーネルが適切にロードできていない可能性があります。
**確認方法:**
1. `ls /boot` でカーネルイメージがあるかチェック
2. `lsblk -f` で `/boot` が正しいパーティションをマウントしているか確認
3. 必要に応じてカーネルを再インストール:
$ sudo update-initramfs -u
$ sudo update-grub
#### **4. `root=` オプションの不整合**
カーネルの起動オプションの `root=` の指定が正しいか確認。
**確認方法:**
1. GRUBの起動メニューで`e`を押してブートオプションを編集
2. `root=UUID=xxxx-yyyy` の値が正しいかチェック
3. `lsblk -f` で実際のUUIDと一致しているか確認
#### **5. 権限・パーミッションの問題**
コピー時に権限が変更され、ログインプロンプトが機能していない可能性があります。
**確認方法:**
1. リカバリーモードで起動
2. `ls -l /etc/passwd /etc/shadow` を確認
3. 必要ならばパーミッションを修正:
$ sudo chmod 644 /etc/passwd
$ sudo chmod 400 /etc/shadow
### **まとめ**
1. `blkid` で UUID の変更を確認し、`/etc/fstab` を修正
2. `efibootmgr` でEFIエントリを確認・修正
3. `/boot` のパーティションを正しく設定
4. `root=` オプションが適切か確認
5. 権限やパーミッションをチェック
これらを確認すれば、ログインできるようになる可能性が高いです。
DeepSeek
250GBのSSDから500GBのSSDに変更した後、Linuxカーネルが起動しなくなる問題が発生しているようです。この問題は、SSDの変更やコピーに伴う設定やパーティションの不整合が原因である可能性があります。以下に、問題の解決に向けた手順をいくつか提案します。
### 1. **EFIブートローダーの確認**
– **EFIブートエントリの確認**: `efibootmgr`コマンドを使って、EFIブートエントリが正しく設定されているか確認します。
$ sudo efibootmgr
このコマンドで、Linuxのブートエントリが正しく表示されているか確認します。もし正しくない場合は、以下のコマンドで再設定します。
$ sudo efibootmgr -c -d /dev/sdX -p Y -L “Linux” -l \\EFI\\ubuntu\\grubx64.efi
ここで、`/dev/sdX`は新しいSSDのデバイス名、`Y`はEFIパーティションの番号です。
### 2. **ファイルシステムの整合性チェック**
– **fsckによるチェック**: ファイルシステムにエラーがないか確認します。Linuxのルートパーティションをアンマウントしてから`fsck`を実行します。
$ sudo umount /dev/sdX2 # ルートパーティションをアンマウント
$ sudo fsck /dev/sdX2 # ファイルシステムのチェック
エラーが見つかった場合は、修復を試みます。
### 3. **fstabの確認**
– **/etc/fstabの確認**: `/etc/fstab`ファイルが正しく設定されているか確認します。新しいSSDにコピーした際に、UUIDが変更されている可能性があります。
$ sudo blkid
このコマンドで各パーティションのUUIDを確認し、`/etc/fstab`に正しいUUIDが記載されているか確認します。
### 4. **GRUBの再インストール**
– **GRUBの再インストール**: GRUBが正しくインストールされていない可能性があります。以下の手順でGRUBを再インストールします。
$ sudo grub-install /dev/sdX
$ sudo update-grub
ここで、`/dev/sdX`は新しいSSDのデバイス名です。
### 5. **カーネルの再ビルド**
– **カーネルの再ビルド**: カーネルが正しくビルドされていない可能性があります。再度カーネルをビルドして、EFIパーティションに配置します。
$ make -j$(nproc)
$ sudo make modules_install
$ sudo make install
その後、EFIパーティションにカーネルをコピーします。
### 6. **ログの確認**
– **システムログの確認**: 起動時にどのようなエラーが発生しているか確認するために、システムログを確認します。
$ journalctl -xb
このコマンドで、起動時のログを確認し、エラーメッセージを探します。
### 7. **BIOS/UEFI設定の確認**
– **BIOS/UEFI設定の確認**: BIOS/UEFIの設定が正しく行われているか確認します。特に、ブート順序やセキュアブートの設定が正しいか確認します。
### 8. **パーティションの再作成**
– **パーティションの再作成**: 上記の手順でも解決しない場合、パーティションを再作成して、OSを再インストールすることを検討します。
これらの手順を試しても問題が解決しない場合は、さらに詳細な情報を提供していただけると、より具体的なアドバイスができるかもしれません。
2025.05
BIOSで改めてロードするkernelを指定し直すと、今度はvfsエラーでmountできないと言われた。そんなFSは知らないと。
原因が分かった。
kernelが”/”をmountする時のパラメタをext3で指定して、FS側をext4でフォーマットしていた。/etc/fstabは、”/”をext3指定していた。kernelパラメタ(CMDLINE)をext4指定してコンパイルし直すと治った。
https://shirakawa.weblike.jp/blog-page/2023/01/07…
失敗の自己分析:
ツールに頼らない本来のWin11のInst(デッドコピー)とLinuxとのデュアルboot構築は、EFIboot環境では初めてだったが、
サクっと行くだろうと思い、気が抜けた。うっかりやったext3->ext4が重大だった事に気付けなかった。