Debian 12 시스템에서 커널 패닉을 해결하는 방법은 무엇입니까?

Debian 12 시스템에서 커널 패닉을 해결하는 방법은 무엇입니까?

배경: 정전 후 컴퓨터가 더 이상 부팅되지 않습니다.

  • LIVE DVD를 부팅하고 모든 파일 시스템을 마운트할 수 있습니다.
  • fsck내 부팅 파티션(ext2)과 시스템/루트 파티션(btrfs)이 모두 깨끗합니다.
  • smartctl -t short둘다 너무 깨끗해요
  • 오래된 BIOS(EUFI 없음)를 사용하는 컴퓨터가 있습니다.

grub2Live DVD로 다시 설치 했는데 chroot아무것도 바뀌지 않았습니다. 다음은 운영 체제 선택 후 시스템에서 제공하는 grub 시작 화면과 오류 메시지입니다.

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.1.0-18-amd64 #1 Debian 6.1.76-1
Hardware name: Dell Inc. Studio XPS 8100/0G3HR7, BIOS A05 07/08/2010
Call Trace:
<TASK>
dump_stack_lvl+0x44/0x5c
panic+0x118/0x2ed
mount_block_root+0x1d3/0x1e6
prepare_namespace+0x136/0x165
kernel_init_freeable+0x25c/0x286
? ret_init+0xd0/0xd0
kernel_init+0x16/0x130
ret_from_fork+0x22/0x30
</TASK>
Kernel Offset: 0x15c00000 from 0xffffffff81000000 (relocatinrange: 0xffffffff80000000-0xffffffffbfffffff)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---

이 오류 메시지를 어떻게 해석해야 할지 모르겠습니다. 루트 파일 시스템은 btrfs. 파일이 initrd손상되어 루트 FS를 마운트하는 데 필요한 btrfs 모듈을 로드할 수 없다는 것을 이해해야 합니까 ? 어떡해?

추가 정보(이전 커널에서 부팅한 후):

lsblk -e 7 -f
NAME   FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda                                           
├─sda1                                        
├─sda2                                        
├─sda3                           77.8G    97% /home
└─sda4                                        
sdb                                           
├─sdb1                                        
├─sdb2                                        
├─sdb3                            115G    45% /
└─sdb4                          634.2M    29% /boot
sdc                                           
sdd                                           
sde                                           
sdf                                           
sdg                                           
└─sdg1                                        
sr0        

_

grep -oP 'root=UUID=[\w-]+' /boot/grub/grub.cfg  | sort -u
root=UUID=172d2f2b-c176-472b-b20a-0a382e24ae72

올바른 파티션은 다음과 같습니다 /./dev/sdb3

cat /etc/fstab 
UUID=abee2947-6832-4332-915e-abc122a347cf /boot          ext2        defaults,noatime 0 2
UUID=172d2f2b-c176-472b-b20a-0a382e24ae72 /              btrfs   subvol=@,defaults,noatime,space_cache,autodefrag,discard,compress=lzo 0 1
UUID=7994d68f-8067-4742-b104-45ace8e53c0e /home          btrfs   subvol=/__racine/home,defaults,noatime,nodiratime,space_cache,autodefrag,compress=lzo 0 2
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0
UUID=d3529b3b-4338-4371-8f9b-f725142c5eb2   none        swap    defaults    0   0
/dev/sr0        /media/cdrom0   udf,iso9660 user,auto     0       0

_

ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Apr 28 17:32 121C-191D -> ../../sdg1
lrwxrwxrwx 1 root root 10 Apr 28 17:32 172d2f2b-c176-472b-b20a-0a382e24ae72 -> ../../sdb3
lrwxrwxrwx 1 root root  9 Apr 28 17:32 2020-09-26-10-57-36-00 -> ../../sr0
lrwxrwxrwx 1 root root 10 Apr 28 17:32 26a14333-8209-4ae1-bc51-f691d7533e68 -> ../../sda1
lrwxrwxrwx 1 root root 10 Apr 28 17:32 7994d68f-8067-4742-b104-45ace8e53c0e -> ../../sda3
lrwxrwxrwx 1 root root 10 Apr 28 17:32 abee2947-6832-4332-915e-abc122a347cf -> ../../sdb4
lrwxrwxrwx 1 root root 10 Apr 28 17:32 d3529b3b-4338-4371-8f9b-f725142c5eb2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Apr 28 17:32 f530e8e6-9888-4938-8336-f3e4e40565cf -> ../../sdb2

_

ps aux | grep udev
root       548  0.0  0.0  23876  6028 ?        Ss   17:17   0:00 /lib/systemd/systemd-udevd

_

grep error /var/log/syslog 

2024-04-28T12:32:15.736464+02:00 PC-Alain kernel: [   53.465073] nouveau 0000:01:00.0: Direct firmware load for nouveau/nve7_fuc084 failed with error -2
2024-04-28T12:32:15.736468+02:00 PC-Alain kernel: [   53.465097] nouveau 0000:01:00.0: Direct firmware load for nouveau/nve7_fuc084d failed with error -2
2024-04-28T12:32:41.304635+02:00 PC-Alain kernel: [   79.156892] nouveau 0000:01:00.0: Direct firmware load for nouveau/nve7_fuc084 failed with error -2
2024-04-28T12:32:41.304641+02:00 PC-Alain kernel: [   79.156938] nouveau 0000:01:00.0: Direct firmware load for nouveau/nve7_fuc084d failed with error -2
2024-04-28T12:36:54.316202+02:00 PC-Alain wireplumber[6397]: RTKit error: org.freedesktop.DBus.Error.AccessDenied
2024-04-28T12:36:54.322518+02:00 PC-Alain pipewire-pulse[6398]: mod.rt: RTKit error: org.freedesktop.DBus.Error.AccessDenied
2024-04-28T12:36:54.329509+02:00 PC-Alain pipewire[6394]: mod.rt: RTKit error: org.freedesktop.DBus.Error.AccessDenied
2024-04-28T12:36:54.351221+02:00 PC-Alain wireplumber[6397]: RTKit error: org.freedesktop.DBus.Error.AccessDenied
2024-04-28T12:36:54.358502+02:00 PC-Alain pipewire-pulse[6398]: mod.rt: RTKit error: org.freedesktop.DBus.Error.AccessDenied
2024-04-28T12:36:54.365165+02:00 PC-Alain pipewire[6394]: mod.rt: RTKit error: org.freedesktop.DBus.Error.AccessDenied
2024-04-28T15:51:21.496580+02:00 PC-Alain kernel: [11999.307831] nouveau 0000:01:00.0: Direct firmware load for nouveau/nve7_fuc084 failed with error -2
2024-04-28T15:51:21.496584+02:00 PC-Alain kernel: [11999.307850] nouveau 0000:01:00.0: Direct firmware load for nouveau/nve7_fuc084d failed with error -2
2024-04-28T16:51:28.020418+02:00 PC-Alain kernel: [15605.817830] traps: tracker-extract[92460] trap int3 ip:7f280dd9f7d7 sp:7ffcf0086ab0 error:0 in libglib-2.0.so.0.7400.6[7f280dd61000+8d000]
2024-04-28T16:51:28.268449+02:00 PC-Alain kernel: [15606.063394] traps: tracker-extract[92474] trap int3 ip:7f1f488897d7 sp:7ffd77407190 error:0 in libglib-2.0.so.0.7400.6[7f1f4884b000+8d000]
2024-04-28T16:51:47.444575+02:00 PC-Alain dockerd[2536]: time="2024-04-28T16:51:47.444485465+02:00" level=info msg="stopping event stream following graceful shutdown" error="<nil>" module=libcontainerd namespace=moby

_

다음은 주 메뉴 항목에 대한 /boot/grub/grub.cfg에서 발췌한 것입니다:

        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd1,gpt4'
        search --no-floppy --fs-uuid --set=root abee2947-6832-4332-915e-abc122a347cf
        echo    'Loading Linux 6.1.0-18-amd64 ...'
        linux   /vmlinuz-6.1.0-18-amd64 root=/dev/sdb3 ro rootflags=subvol=@  quiet splash
}


    load_video
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_gpt
    insmod ext2
    set root='hd1,gpt4'
    search --no-floppy --fs-uuid --set=root abee2947-6832-4332-915e-abc122a347cf
    echo    'Loading Linux 6.1.0-18-amd64 ...'
    linux   /vmlinuz-6.1.0-18-amd64 root=/dev/sdb3 ro rootflags=subvol=@  quiet splash

}

답변1

역사적으로 루트 파일 시스템은 부팅 시 장치 이름으로 발견되었습니다. 불행하게도 Linux의 동적 장치 시스템의 특성으로 인해 부팅할 때마다 장치 이름이 다를 수 있습니다.

이 문제를 해결하기 위해 루트 파일 시스템은 변경되지 않는 디스크 및 파티션의 속성인 LABEL 또는 UUID와 같은 다른 항목에 의해 위치합니다.

안타깝게도 파일 시스템의 UUID가 지워졌거나 올바르게 감지되지 않은 것 같습니다.

여기에는 세 가지 옵션이 있습니다.

  • 레이블(볼륨 이름) 추가(/dev/disk/by-label을 보고 이미 레이블이 있는지 확인할 수도 있음)

  • 파일 시스템에 새로운 임의 UUID를 할당합니다. 예를 들어, 루트 파일 시스템이 ext4라고 가정하면,

    une2fs -U 무작위 /dev/sdb3

  • 원본 UUID를 각 파일 시스템에 다시 할당

    2fs -U 172d2f2b-c176-472b-b20a-0a382e24ae72 조정

UUID가 누락된 마운트된 각 디스크에 대해 이 작업을 수행해야 합니다. UUID는 시스템 내에서 고유해야 하므로 각 디스크에 대해 무작위로 사용하거나 fstab에서 (고유한) 원시 UUID를 선택해야 합니다.

원래 UUID를 재할당하지 않는 한 다음도 필요합니다.

  1. 새 레이블 또는 uuid로 /etc/fstab 업데이트
  2. grub 구성 파일을 다시 빌드합니다 update-grub(위의 grep 명령이 올바른 root= 행을 생성했는지 확인).

관련 정보