커널 패닉 - 동기화되지 않음: VFS: 루트 fs를 마운트할 수 없음 - LFS

커널 패닉 - 동기화되지 않음: VFS: 루트 fs를 마운트할 수 없음 - LFS

나는 LFS(처음부터 리눅스)를 만들었습니다. 모든 파일은 보조 하드 드라이브에 있습니다. 즉. /dev/sdb에는 sdb1이나 sdb2와 같은 파티션이 없습니다. 루트와 부팅은 모두 동일한 /dev/sdb에 있습니다. 내 호스트 시스템은 /dev/sda에 설치된 Linux Mint입니다. Grub은 /dev/sda에도 설치됩니다. 온라인 튜토리얼을 따랐지만 이로 인해 파티셔닝이 엉망이 되었습니다. 가능한 해결책이 있나요? hd0을 hd1 및 기타 가능한 모든 파티션으로 조정하여 grub 구성을 변경해 보았습니다. 아무것도 잃지 않고 다른 라이브 디스크를 사용하여 새 파티션을 만들고 모든 것을 이동할 수 있습니까? 아니면 더 나은 해결책이 있습니까?

답변1

튜토리얼을 정확하게 따라하셨다면 이제 /dev/sdaLFS가 설치한 새 부트로더로 부트로더를 덮어쓰셨습니다.

파티셔닝은 /dev/sda괜찮을 것입니다. Mint 설치를 복원하려면 일부 라이브 Linux ISO에서 시스템을 부팅하고 루트 및 /boot 파일 시스템을 마운트하고 /dev/sda*Mint 설치로 chroot하여 실행하면 됩니다 grub-install /dev/sda. Mint 설치의 GRUB 구성 파일은 영향을 받지 않으므로 이는 Mint 설치를 완전히 작동하는 상태로 복원하는 데 충분합니다.

새 부트로더는 운영 체제 커널을 로드하려고 시도하고 /dev/sdb실제로 성공합니다. Kernel Panic메시지는 부트로더가 아닌 LFS 설치된 커널에서 나옵니다.

(부트로더는 다음 위치에 설치됩니다.비디오 튜토리얼 11장시간은 15:30부터 시작됩니다. )

존재하다11장 시간 16:12튜토리얼에서는 생성에 대해 설명 /boot/grub/grub.cfg하며 다음 줄이 있습니다.

linux /boot/vmlinuz-4.7.2-lfs-7.10 root=<something> ro

귀하의 경우에는 <something>이어야 합니다 /dev/sdb. 잘못 입력하면 오류가 발생할 수 있습니다. 존재하다11장 시간 18:20이 튜토리얼에서는 이 문제를 해결하는 방법에 대해 설명합니다. GRUB 부팅 메뉴가 표시되면 키를 눌러 e부팅 시 부팅 옵션을 편집합니다. 위에서 언급한 것과 동일한 줄이 표시되며 임시로 변경하여 LFS 설치가 시작되도록 할 수 있습니다.

또 다른 가능한 오류는 루트 파일 시스템용 드라이버를 LFS 커널로 컴파일하지 않는 것입니다. 이는 커널 구성 단계에서 지정됩니다.11장 시간 14:32, 그러나 튜토리얼에서는 이에 대해 거의 설명하지 않습니다.

즉, 커널 설정 메뉴의 File systems하위 메뉴에서 해당 라인을 로 선택하는 것이 아니라 (별표로 표시)로 선택 The Extended 4 (ext4) filesystem해야 합니다 . 이 단계를 놓치면 부팅 옵션 줄에서 올바른 옵션을 설정하는 것이 도움이 되지 않습니다. 이 경우 가장 좋은 옵션은 Mint 설치를 복원하고 이를 사용하여 LFS 커널을 재구성하고 다시 컴파일한 다음 다시 컴파일된 커널 파일을 디렉토리를 삭제 하고 마지막으로 LFS의 GRUB를 다시 설치하세요.YMroot=/dev/sdbvmlinuz-4.7.2-lfs-7.10/boot/dev/sdb


그렇긴 하지만, 튜토리얼이 /dev/sdb애초에 분할하지 않음으로써 근본적인 실수를 범했다고 생각합니다. 대신 단일 파일 시스템( mkfs /dev/sdb="superfloppy" 구성)에 전체 디스크를 사용합니다. 이로 인해 GRUB2를 설치할 수 없게 됩니다 /dev/sdb. GRUB2에는 일반적으로 분할된 디스크에서 사용되지 않지만 "슈퍼 플로피"에 있는 파일 시스템의 시작 부분을 덮어쓰는 MBR 뒤에 일부 디스크 블록이 필요합니다. 결과적으로 그들은 부트로더를 설치해야 했고 /dev/sda, 이로 인해 Mint 호스트의 설치 프로세스가 중단되었습니다.

내가 할 최소한의 변경 사항은 다음과 같습니다.

  • /dev/sdb대형 파티션( )을 생성 /dev/sdb1하고 여기에 파일 시스템을 생성합니다.
  • /dev/sdb1그 밖의 /dev/sdb모든 경우에는 Except 명령 대신 사용하십시오 .grub-installgrub-install /dev/sdb
  • LFS 에서는 /boot/grub/grub.cfgGRUB 루트 장치를 로 지정 set root=(hd0,1)하고 Linux 루트 파일 시스템 부팅 옵션을 로 지정해야 합니다 root=/dev/sdb1. 이는 BIOS의 특이한 점 때문입니다. BIOS 레벨에서 부팅하기로 선택한 디스크는 Linux용 (hd0)이라도 일반적으로 GRUB에 사용 됩니다./dev/sdb

이러한 변경을 통해 Mint 설치의 부트 로더가 중단되는 것을 방지할 수 있으며 VirtualBox의 부팅 메뉴를 사용하여 Mint 또는 LFS 중에서 부팅할 설치를 선택할 수 있습니다. 또한 /dev/sda구성에서 완전히 제거하고( /dev/sdb새 구성 만들기 /dev/sda) /boot/grub/grub.confLFS만 변경하여 새 LFS 설치가 완전히 독립적으로 실행될 수 있음을 증명할 수 있어야 합니다 .


현재 상황을 저장하는 방법은 무엇입니까?

/dev/sda먼저 Mint 부트로더를 복원하기 위해 live-Linux ISO를 사용하겠습니다. 이 문제가 해결되면 Mint로 부팅하여 설치 /dev/sdb하고 패키징 하겠습니다.모든 것tar.bz2 패키지에 넣으세요:

mount /dev/sdb /mnt
cd /mnt
tar jcvf /somewhere/with/plenty/of/space/LFS-recovery.tar.bz2 *
cd /
umount /mnt

그런 다음 파티션을 나누고 /dev/sdbext4 파일 시스템을 생성한 다음 /dev/sdb1마운트하고 /dev/sdb모든 것을 복원합니다.

fdisk /dev/sdb
<set up one partition to cover the whole disk>

mkfs -v -t ext4 /dev/sdb1
mount /dev/sdb1 /mnt
cd /mnt
tar xvf /somewhere/with/plenty/of/space/LFS-recovery.tar.bz2

다음 단계는 다음과 같이 필요한 준비와 LFS 환경으로의 chroot입니다.튜토리얼 6장 2:40-4:05하지만 이제 디렉토리가 거기에 있을 것입니다. 그런 다음 앞에서 설명한 대로 부트로더를 /dev/sdb에 설치할 수 있습니다.

관련 정보