/dev/sda1
나는 ( /
) 및 /dev/sda2
(extended, /dev/sda5
yes , yes swap) /home
에 데비안 시스템을 가지고 있습니다 /dev/sda6
. 저는 Gentoo를 병렬로 설치하고 싶었기 때문에 sda2를 최소화하고 /dev/sda3
그 안에 Gentoo를 설치 한 다음 /dev/sda4
Gentoo로 다음과 같이 설치했습니다 /home
.
Disk /dev/sda: 931.5 GiB, 1000204885504 bytes, 1953525167 sectors
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: dos
Disk identifier: 0xeb362e8f
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 29296639 29294592 14G 83 Linux
/dev/sda2 29298686 1673951231 1644652546 784.2G 5 Extended
/dev/sda3 1673951232 1735391231 61440000 29.3G 83 Linux
/dev/sda4 1735391232 1953523711 218132480 104G 83 Linux
/dev/sda5 29298688 35547135 6248448 3G 82 Linux swap / Solaris
/dev/sda6 35549184 1673949183 1638400000 781.3G 83 Linux
Partition table entries are not in disk order.
현재 설치된 grub2를 사용하고 싶었기 때문에 젠투 매뉴얼의 "부트로더" 섹션을 건너뛰었습니다. /dev/sda1
그래서 설치를 완료한 후 데비안으로 부팅하고 을 실행했는데 update-grub
, 젠투가 메뉴에 성공적으로 추가되었습니다. 그러나 부팅할 때 커널 패닉이 발생하고 루팅된 장치를 열 수 없다는 메시지가 나타납니다.
시스템 테이블데비안의 경우시스템 테이블젠투용. Debian과 같은 UUID를 사용하기 위해 Gentoo의 fstab을 편집하려고 시도했지만 성공하지 못했습니다. 또한 grub에서 Gentoo의 부팅 옵션을 편집해 보았습니다. 원래:
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Gentoo Base System release 2.2 (on /dev/sda3)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-1c46e4aa-e486-48ba-8f61-1484ed899e1e' {
insmod part_msdos
insmod ext2
set root='hd0,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//sas/disk@0,msdos3' --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 1c46e4aa-e486-48ba-8f61-1484ed899e1e
else
search --no-floppy --fs-uuid --set=root 1c46e4aa-e486-48ba-8f61-1484ed899e1e
fi
linux /boot/vmlinuz-4.1.12-gentoo root=/dev/sda3
}
submenu 'Advanced options for Gentoo Base System release 2.2 (on /dev/sda3)' $menuentry_id_option 'osprober-gnulinux-advanced-1c46e4aa-e486-48ba-8f61-1484ed899e1e' {
menuentry 'Gentoo Base System release 2.2 (on /dev/sda3)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.1.12-gentoo--1c46e4aa-e486-48ba-8f61-1484ed899e1e' {
insmod part_msdos
insmod ext2
set root='hd0,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//sas/disk@0,msdos3' --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 1c46e4aa-e486-48ba-8f61-1484ed899e1e
else
search --no-floppy --fs-uuid --set=root 1c46e4aa-e486-48ba-8f61-1484ed899e1e
fi
linux /boot/vmlinuz-4.1.12-gentoo root=/dev/sda3
}
}
### END /etc/grub.d/30_os-prober ###
사용해 보았지만 set root="/dev/sda3"
솔직히 set root="sda3"
무슨 뜻인지는 모르겠지만, 패닉 메시지와 관련된 것 같습니다. 그렇다면 여기서 무슨 일이 일어나고 있으며 어떻게 진행해야 합니까? /dev/sda
USB를 통해 연결된 외장 하드 드라이브(내 내장 하드 드라이브가 손상됨)에서 부팅했다는 점은 언급할 가치가 있습니다 . 오류/경고 없이 Gentoo가 설치되었습니다. 커널에 아무것도 컴파일하는 것을 잊은 것 같지는 않지만 가능하다고 생각합니다... ext4, SCSI 및 USB 지원이 포함되어 있다고 확신합니다(모듈이 아님).
답변1
SATA 드라이버를 젠투 커널(또는 모듈)로 컴파일하지 않은 것 같습니다. 제가 우려하는 부분은 첨부한 스크린샷의 중간쯤에 다음과 같이 적혀 있습니다.
올바른 "root=" 옵션을 추가하세요. 사용 가능한 파티션은 다음과 같습니다.
그러나 사용 가능한 파티션이 나열되지 않습니다. 나에게 젠투는 물리적 디스크와 전혀 통신할 수 없습니다. 어떤 SATA 컨트롤러를 갖고 있는지 모른다면, lshw
데비안에서 실행해 보면 알 수 있습니다. 이는 카드가 무엇인지 알려줄 뿐만 아니라 카드가 사용하고 있는 커널 드라이버(SATA 섹션 아래의 "configuration:driver=" 행을 찾아보세요)를 알려주므로 이를 젠투 커널에 추가할 수 있습니다.
답변2
David King이 말했듯이, 범인은 누락된 커널 드라이버일 가능성이 높습니다. 다음은 USB 대용량 저장 장치가 제대로 작동하기 위해 필요한 커널 옵션 목록입니다. gentoo livecd chroot에서 젠투 시스템에 들어가 보세요.(젠투 매뉴얼에 이에 대해 자세히 설명되어 있다는 것을 아실 수도 있습니다). 여기서 커널을 재구성하고 다시 컴파일할 수 있습니다.(젠투 매뉴얼에도 잘 설명되어 있습니다). initramfs를 생성한 경우 다시 생성하는 것을 잊지 마십시오. 그렇지 않으면 새로 컴파일된 커널과 드라이버를 부팅 시 사용할 수 없습니다.
답변3
커널 구성을 보면 initrd 없이 최신 시스템을 부팅하는 데 필요한 모든 기능을 활성화한 것처럼 보이지만 출력에는 lshw
ISA 브리지와 Pentium M 1.4 CPU가 있는 것으로 나타났습니다.
내 생각에는 CONFIG_PATA_MPIIX, ATA_GENERIC 또는 PATA_LEGACY와 같은 PATA 옵션이 누락된 것 같지만 추측 게임을 하지 않고 대신 다음을 수행합니다.
USB 드라이브를 삽입하고 데비안 시스템을 부팅하세요.
lsmod
실행을 위해 커널 구성(=y)에 추가해야 할 다른 항목을 확인하거나 출력을 게시하면 몇 가지 힌트를 드릴 수 있습니다.
아니면 이 홈페이지를 이용하시거나,http://kmuto.jp/debian/hcl/을 클릭하고 결과를 붙여넣습니다.lspci -n
젠투에서 일반적으로 커널을 구성하는 방법은 다음과 같습니다:
- ArchLinux USB 및 lsmod 시작
- Slackware에서 최신 커널 구성을 복사합니다(예: http://mirrors4.kernel.org/slackware/slackware64-current/source/k/config-x86_64/config-generic-4.1.15.x64)
Slackware는 Gentoo와 비슷하지만 둘 다 아닙니다. systemd(젠투는 기본적으로 사용하지 않음)를 사용하여 장기 릴리스 커널 버전을 사용하며 구성에 만족합니다. 일반적인 것은 필요하다고 생각하는 모든 것을 =y로 구축하고 옵션은 =m으로 구축하는 것이며, 거대한 것은 모든 것을 =y로 구축하는 것입니다(이는 거의 작동이 보장되지만 코어가 매우 커질 것입니다). - 이전 구성 만들기
- EXT4=y 및 기타 파일 시스템 모듈을 설정합니다(어떤 이유로 Slackware가 항상 활성화하지는 않습니다).
- 젠투 커널 구성 가이드에서 모듈을 =y로 설정했는지 확인하세요.
- lsmod =y를 통해 ALSA 및 Wifi 모듈을 제외한 모든 모듈을 설정합니다.
- 프로세서 유형 및 기능 -> 프로세서 제품군에서 올바른 프로세서 유형을 선택합니다.
- 설치를 마칩니다.
그래도 작동하지 않으면 드라이브가 Debian에서는 /dev/sda를 잡고 있지만 Gentoo에서는 다른 것(아마도 /dev/sdb)을 잡고 있는 것 같습니다. 이 문제를 해결하는 가장 간단한 방법은 /etc/fstab에서 UUID=를 사용하고 커널에 전달된 부트 로더 매개변수에서 PARTUUID=를 사용하는 것입니다. blkid 출력에서 PARTUUID를 찾을 수 있습니다.
답변4
몇 년 동안 USB 장치 검색은 비동기식 프로세스였습니다. 모든 드라이버를 컴파일하고 스크린샷에 USB 저장 장치가 열거되고 있는 것으로 표시되지만, USB 대용량 저장 장치 드라이버 초기화가 완료되기 전에 커널이 루트 파일 시스템을 마운트하려고 시도하는 것 같습니다.
grub 구성이 initramfs 로딩을 지정하지 않은 것 같습니다.
젠투의 세부 사항에 대해 조언할 수는 없지만, 내 데비안 시스템이 여러분이 올바른 답을 찾는 데 도움이 될 만큼 비슷하기를 바랍니다. Debian에서 initramfs 스크립트는 필요한 블록 장치가 마운트될 때까지 부팅 프로세스를 중지합니다.
내가 아는 한, Debian에서는 핵심 initramfs 스크립트 중 하나인 /scripts/local에 udev를 시작하고 루트 장치가 열거될 때까지 기다리는 데 필요한 로직이 있습니다. 구체적으로 말하면 local_device_setup() 함수를 참조하세요.여기.
젠투에도 비슷한 시스템이 있는 것 같은데요?