몇 가지 지침을 보았지만 전체 부팅 프로세스를 정말로 이해하고 싶습니다. 저는 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에 $prefix
or를 지정하는 $root
것은 Linux/Unix에서 파일 시스템을 마운트하는 것과는 다릅니다. 실제로는 각각 상대 또는 절대 경로 이름의 접두사일 뿐입니다.
$prefix
/boot/grub
GRUB가 GRUB 모듈을 로드할 때 사용되며, 절대 GRUB 경로 이름으로 디렉터리의 모든 파일(운영 체제 부팅 후 최종적으로 표시되는 파일)을 참조 하는 편의 변수로 사용할 수도 있습니다 . GRUB 명령을 사용할 때 아키텍처별 디렉터리 이름과 로드할 모듈 이름 insmod
의 값을 가져와 추가합니다 (접미사 추가 ).$prefix
.mod
(
GRUB에는 " partition )
/directory... filename" 형식의 /
절대 경로 이름을 허용하는 자체(읽기 전용) 파일 시스템 드라이버가 있습니다. 여기서 파티션 구성 요소는 hd0,gpt1
.
$root
단일 GRUB 구성 파일 내에서 여러 번 할당 및 재할당이 가능합니다. 최신 구성에서는 search
UUID로 파일 시스템을 지정할 수 있도록 명시적 할당 대신 이 명령이 자주 사용됩니다.
Debian 9 시스템(BIOS 스타일 부팅 사용)에서 처음에 일부 GRUB 모듈을 설정 $root
하고 $prefix
로드한 다음 $root
별도의 /usr
파티션을 지정하여 GRUB 테마 디렉토리 어딘가에서 배경 이미지와 글꼴 파일을 로드하는 GRUB 구성을 본 적이 있습니다. 실제 부팅 옵션의 경우 실제 커널을 로드하기 위한 파일 시스템이나 파티션 부트 레코드를 체인 로드하기 위한 Windows 파티션을 /usr/share/...
가리킵니다 .$root
/boot
GRUB은 $root
Linux 루트 파일 시스템과 아무 관련이 없습니다. 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-grub
Debian의 병렬 설치를 포함하여 다른 운영 체제를 자동으로 감지하고 기본 부팅 옵션을 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
전환합니다 . 변경 사항을 적용하려면 실행하는 것을 잊지 마세요 .nvme0n1p5
nvme0n1p2
update-grub
그런 다음 GRUB에서 기본적으로 사용하려는 구성에 따라 (예: ) search.fs_uuid
의 행을 설정할 수 있습니다. Debian의 두 인스턴스가 동일한 구성 파일을 허용할 만큼 유사한 GRUB 버전을 계속 사용하는 한, 두 운영 체제 인스턴스 사이를 쉽게 전환할 수 있으며 각각 자체 GRUB 구성 파일을 독립적으로 유지할 수 있습니다. 서로./boot/efi/EFI/debian/grub.cfg
nvme0n1p1