출시 프로세스 - Dev sdX 이름 변경

출시 프로세스 - Dev sdX 이름 변경

커널 2.6.36이 설치된 Slack 13.1 시스템이 있습니다. 그런 다음 커널을 다음으로 업데이트했습니다.3.12.1.

머신은 세 개의 파티션(/dev/sda1 --> Linux OS 파일..., /dev/sda2 --> 데이터, /dev/sda3 --> 추가 데이터)이 있는 부팅 가능한 디스크, 하나는 "가상 " SSD는 단지 저장용(/dev/sdb1)과 USB 포트용일 뿐입니다.

사실, 다음을 사용하여 Linux를 부팅하려고 할 때마다USB에는 데이터가 포함되어 있습니다.(LiveUSB 아님) 머신에 연결되어 부팅 프로세스 중에 sda 장치를 USB에 할당하는 문제가 발생하여 Linux 파티션을 "부팅 가능한 디스크"에 마운트할 수 없습니다.커널 패닉:

VFS: Mounted root (vfat filesystem) readonly on device 8:1.
devtmpfs: error mounting -2
[...]
Kernel panic - not syncing: no init found. Try passing init=..

제가 사용하는 부트로더는릴로. 부팅 프로세스에서 장치 이름을 변경하지 않거나 둘 중 하나를 장치에 미리 할당하지 않도록 하는 방법이 있는지 모르겠습니다. 구성은 다음과 같습니다.

# Linux bootable partition config begins
image = /boot/vmlinuz
root=/dev/sda1    
append="panic=120"
label=3.12.20-smp
read-only 

/etc/fstab:

/dev/sda1        /                ext4        rw               1   1

USB 장치 파티션은 sda1로 간주되므로 어떤 종류의 init 프로세스나 애플리케이션도 포함되어 있지 않으므로 커널 패닉이 발생합니다.

root="LABEL=myLabel" 또는 root="LABEL=current"를 사용해 보았으나 운이 없었습니다... 모든 파티션 대신 루트 노드에서 레이블을 검색하기 때문인 것 같습니다. S

무슨 일이 일어나고 있는지에 대한 제안이 있나요? 고칠 수 있나요? 미리 감사드립니다!

답변1

이름으로 장치를 식별하는 것을 잊어버리세요. UUID를 사용하는 데에는 아무런 문제가 없습니다.

명령을 통해 장치의 UUID를 식별할 수 있습니다 blkid.

그런데 LILO가 UUID를 지원하는지 모르겠습니다. GRUB으로 전환되지 않는 경우.

답변2

Linux의 장치 번호는 이 운영 체제에서 가장 나쁜 점 중 하나입니다. 다른 모든 합리적인 *nix는 컨트롤러/대상/lun과 같은 것을 사용하여 디스크 주소를 지정합니다.

저는 BIOS에서 부팅 장치 순서를 변경하여(USB를 마지막에 두기) PC에서 이 문제를 해결한 적이 있습니다.

Linux는 일반적으로 BIOS 설정에 관심이 없기 때문에 이것이 모든 경우에 작동하는지 모르겠습니다.

답변3

문제는 디스크 이름이 순차적으로 생성된다는 것입니다. 커널이 감지한 첫 번째 디스크는 /dev/sda, 두 번째 디스크는 /dev/sdb등이 됩니다.

문제에 대한 해결책은 시스템 부팅이 완료될 때까지 USB 디스크(USB 드라이브 포함)의 사용(예: 감지)을 비활성화하는 것입니다. 이는 커널 자체에 USB 저장소 드라이버를 포함하지 않고 모듈로 빌드하도록 커널을 구성하여 수행할 수 있습니다. 이렇게 하면 부팅 중에 "일반" 디스크만 발견되고 모듈은 루트 파일 시스템이 마운트된 후에만 로드될 수 있습니다 usb_storage.ko.

이것은 커널을 직접 빌드하고 initrd(초기 램디스크)를 사용하지 않았다고 가정합니다.

관련 정보