grub2 부팅 중에 먼저 USB 장치를 초기화한 다음 하드 디스크를 초기화하십시오.

grub2 부팅 중에 먼저 USB 장치를 초기화한 다음 하드 디스크를 초기화하십시오.

휴대용 USB 스틱에 CentOS를 설치하고 첫 번째 파티션에 grub2를 설치했습니다. 내부 하드 드라이브가 컴퓨터에 연결되어 있지 않으면 시스템이 부팅되지만, 하드 드라이브가 연결되어 있으면 시스템이 실패합니다.

내 운영 체제(USB 스틱에서 실행)를 /dev/sda로 마운트하고 다른 모든 내부 하드 드라이브에 /dev/sdb 레이블을 지정하고 싶습니다. 나는 파티션 레이블을 사용하여 /boot, /root, /home 및 /swap에 매핑합니다. 내부 드라이브가 sda로 표시되는 것 같아서 부팅 시 커널 패닉이 발생합니다.

lsblk -f
NAME    FSTYPE  LABEL
sda
|___sda1
sdb
|___sdb1 hfsplus DISK_1
|___sdb2 ext4    USB_root
|___sdb3 ext4    USB_home
|___sdb4 swap    USB_swap 

나는 가지고있다udev 규칙내부 드라이브는 /sdb로 시작하여 번호가 지정되지만 이러한 규칙은 부팅 순서 후반부에 적용되는 것으로 나타나므로 sdb여야 하는 내부 디스크는 sda로 초기화됩니다.

내 /boot/grub.conf는 다음과 같습니다:

default=0
timeout=5
chainloader +1
#splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.10.65-1.el6.elrepo.x86_64)
    #root (hd0,0)
    search --set --label USB_boot   
    kernel /vmlinuz-3.10.65-1.el6.elrepo.x86_64 ro root=LABEL=USB_root nomodeset rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=uk LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rootdelay=8
    initrd /usbinitrd-3.10.65-1.el6.elrepo.x86_64.img

내 usbinitrd는 아래 지침에 따라 생성되었습니다.여기

  • 내부 드라이브보다 먼저 sda로 초기화된 외부 USB 드라이브를 부팅할 수 있습니까?
  • 내부 드라이브 이름 지정과 충돌하지 않도록 USB 장치와 grub 구성을 /sdu와 같은 것으로 매핑해야 합니까?

답변1

이는 부팅 시 타이밍 문제인 것 같습니다. grub.conf의 커널 옵션 rootdelay=8이 rootdelay=10으로 변경되었으며 이제 모든 것이 예상대로 작동합니다. 컴퓨터가 부팅을 시작할 때 USB 스틱의 모든 파티션을 검색하지 못한 것 같습니다.

udevadm에서 찾은 MANUFACTURER 태그를 사용하여 USB 스틱을 /dev/sdu에 매핑하는 또 다른 udev 규칙을 만들었고 모든 것이 정상이었습니다.

관련 정보