Grub 듀얼 부팅은 어떻게 구성해야 합니까?

Grub 듀얼 부팅은 어떻게 구성해야 합니까?

몇 가지 지침을 보았지만 전체 부팅 프로세스를 정말로 이해하고 싶습니다. 저는 OS용 파티션과 사용자용 파티션이 있는 드라이브에 데비안을 설치했습니다. 또한 부팅 및 스왑 파티션을 자동으로 생성합니다. 그런 다음 gparted를 사용하여 원래 데비안 파티션의 복제본인 새 파티션을 만들었습니다. 나는 그것에 새로운 UUID를 주었다. 그룹 옵션을 업데이트했습니다.

부팅할 때 grub 옵션으로 이동하여 두 가지 버전의 OS를 확인합니다. 새 파티션에서 운영 체제를 구체적으로 선택했습니다. 하지만 부팅하고 터미널을 확인해 보니 / 가 /dev/nvme0n1p2마운트되지 않은 것으로 나타났습니다./dev/nvme0n1p5

이것이 내가 혼란스러워지는 부분입니다. 다음 위치에 구성 파일이 /dev/nvme0n1p1설치되어 있습니다./boot/efi/boot/efi/EFI/debian/grub.cfg

search.fs_uuid FIRST-DRIVE-UUID root 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

이것이 기본적으로 나에게 의미하는 바는 첫 번째 설치를 설치한 다음 첫 번째 설치에서 grub.cfg를 로드한다는 것입니다. 이제 첫 번째 설치는 루트로 설치되었지만 두 번째 설치를 실행하려면 분명히 두 번째 드라이브를 루트로 설치해야 합니다. 그러면 첫 번째 설치 전에 grub을 로드하는 것이 아니라 첫 번째 설치에서 grub을 로드하는 것처럼 보입니까?

두 설치를 모두 참조하는 grub 구성 파일이 있지만 /boot/grub/grub.cfg이는 첫 번째 설치 파티션의 일부입니다. 일단 파일을 읽으면 첫 번째 설치가 이미 로드되어 부팅할 파티션을 선택하기에는 너무 늦은 것 같습니다. 파일은 다음으로 시작합니다.

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub

어떻게든 이 구성을 부팅 파티션으로 이동해야 합니까?

update-grub 또는 grub-mkconfig(v2.04-20)를 실행하면 다음과 같은 출력이 표시됩니다.

$ sudo grub-mkconfig -o grub.cfg 
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-5.10.0-9-amd64
Found initrd image: /boot/initrd.img-5.10.0-9-amd64
Found linux image: /boot/vmlinuz-5.10.0-8-amd64
Found initrd image: /boot/initrd.img-5.10.0-8-amd64
Found Debian GNU/Linux 11 (bullseye) on /dev/nvme0n1p5
Adding boot menu entry for EFI firmware configuration
done

이는 최초 설치 시 initrd 및 vmlinuz를 참조하는 것 같습니다. 두 번째로 설치했을 때 받았어요 found.

답변1

"마운트된 파일 시스템"은 Linux/Unix 개념입니다. GRUB에는 실제로 존재하지 않습니다.

GRUB에 $prefixor를 지정하는 $root것은 Linux/Unix에서 파일 시스템을 마운트하는 것과는 다릅니다. 실제로는 각각 상대 또는 절대 경로 이름의 접두사일 뿐입니다.

$prefix/boot/grubGRUB가 GRUB 모듈을 로드할 때 사용되며, 절대 GRUB 경로 이름으로 디렉터리의 모든 파일(운영 체제 부팅 후 최종적으로 표시되는 파일)을 참조 하는 편의 변수로 사용할 수도 있습니다 . GRUB 명령을 사용할 때 아키텍처별 디렉터리 이름과 로드할 모듈 이름 insmod의 값을 가져와 추가합니다 (접미사 추가 ).$prefix.mod

(GRUB에는 " partition )/directory... filename" 형식의 /절대 경로 이름을 허용하는 자체(읽기 전용) 파일 시스템 드라이버가 있습니다. 여기서 파티션 구성 요소는 hd0,gpt1.

$root단일 GRUB 구성 파일 내에서 여러 번 할당 및 재할당이 가능합니다. 최신 구성에서는 searchUUID로 파일 시스템을 지정할 수 있도록 명시적 할당 대신 이 명령이 자주 사용됩니다.

Debian 9 시스템(BIOS 스타일 부팅 사용)에서 처음에 일부 GRUB 모듈을 설정 $root하고 $prefix로드한 다음 $root별도의 /usr파티션을 지정하여 GRUB 테마 디렉토리 어딘가에서 배경 이미지와 글꼴 파일을 로드하는 GRUB 구성을 본 적이 있습니다. 실제 부팅 옵션의 경우 실제 커널을 로드하기 위한 파일 시스템이나 파티션 부트 레코드를 체인 로드하기 위한 Windows 파티션을 /usr/share/...가리킵니다 .$root/boot

GRUB은 $rootLinux 루트 파일 시스템과 아무 관련이 없습니다. GRUB이 Linux 커널과 initramfs 파일을 RAM에 로드하면 제어권이 커널에 넘겨집니다. 현재 GRUB에는 세 가지 항목만 남아 있습니다.

  • RAM의 커널
  • 커널 이후 RAM의 initramfs
  • 커널 명령줄에 지정된 부팅 옵션입니다.

모든 GRUB 변수( $root및 포함 $prefix)는 이제 완전히 잊혀졌으며 더 이상 의미가 없습니다. 커널이 부팅되면 자체 저장 장치 드라이버가 활성화되고 Linux 루트 파일 시스템으로 마운트될 파일 시스템은 다음에 의해 결정됩니다.

  • 커널 root=부팅 옵션(지정된 경우) 또는
  • initramfs 파일의 내용( /etc/fstab지정된 루트 파일 시스템의 복사본 또는 달리 사용되는 파일 시스템을 결정하는 스크립트가 포함될 수 있음) 또는
  • 기본 루트 파일 시스템은 커널 이미지에 내장된 매개변수를 통해 지정할 수 있습니다(특히 initramfs 없이 사용자 정의 커널을 사용하는 경우).

GRUB의 UEFI 버전은 일반적으로 다음을 찾습니다.grub.cfg grubx64.efi같은 디렉토리에. 첫 번째 설치 대신 이 Debian 인스턴스에 대한 grub.cfg´ you found in/boot/efi/EFI/debian/grub.cfg effectively tells GRUB where the actual GRUB configuration file (and the/boot/grub directory) is, by filesystem UUID. If you wanted, you could replace the UUID with the UUID of the/dev/nvme0n1p5 /boot`의 세 줄.filesystem, to make GRUB use the


이 패키지를 Debian에 설치한 경우 os-prober실행할 때마다 자동으로 실행되며 update-grubDebian의 병렬 설치를 포함하여 다른 운영 체제를 자동으로 감지하고 기본 부팅 옵션을 GRUB 구성 파일에 추가합니다.

/etc/grub.d/40_custom다음 과 같은 메뉴 항목을 에 추가할 수도 있습니다 nvme0n1p2.

menuentry 'Switch to GRUB configuration of /dev/nvme0n1p5' {
        search --no-floppy --fs-uuid --set=root UUID-OF-nvme0n1p5-FS-HERE
        configfile /boot/grub/grub.cfg
}

마찬가지로 GRUB 구성으로 다시 /etc/grub.d/40_custom전환합니다 . 변경 사항을 적용하려면 실행하는 것을 잊지 마세요 .nvme0n1p5nvme0n1p2update-grub

그런 다음 GRUB에서 기본적으로 사용하려는 구성에 따라 (예: ) search.fs_uuid의 행을 설정할 수 있습니다. Debian의 두 인스턴스가 동일한 구성 파일을 허용할 만큼 유사한 GRUB 버전을 계속 사용하는 한, 두 운영 체제 인스턴스 사이를 쉽게 전환할 수 있으며 각각 자체 GRUB 구성 파일을 독립적으로 유지할 수 있습니다. 서로./boot/efi/EFI/debian/grub.cfgnvme0n1p1

관련 정보