/boot
개인 파티션을 삭제하고 루트 파티션에 병합하려고 합니다 /
. 내가 찾은https://askubuntu.com/questions/741672/how-do-i-merge-my-boot-partition-to-be-a-part-of-the-partition이미 있지만 그건 도움이 되지 않는 것 같습니다.
상황은 어떻습니까?
# uname -a
Linux c02 6.1.0-12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.52-1 (2023-09-07) x86_64 GNU/Linux
# fdisk -l /dev/sda
Disk /dev/sda: 4 TiB, 4398046511104 bytes, 8589934592 sectors
Disk model: QEMU HARDDISK
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: gpt
Disk identifier: 1673AA12-2A54-4718-AF1E-58FE670A87E3
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2007039 2002944 978M Linux filesystem
/dev/sda3 2007040 10008575 8001536 3.8G Linux swap
/dev/sda4 10008576 8589932543 8579923968 4T Linux filesystem
다음이 작동하여 머신을 성공적으로 재부팅할 수 있었습니다.
# copy content of boot partition to root
cp -a /boot /boot.bak
umount /boot
rm -rf /boot
mv /boot.bak /boot
# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.1.0-12-amd64
Found initrd image: /boot/initrd.img-6.1.0-12-amd64
Found linux image: /boot/vmlinuz-6.1.0-10-amd64
Found initrd image: /boot/initrd.img-6.1.0-10-amd64
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done
그러나 물리적 부팅 파티션을 추가로 제거하면 재부팅이 실패합니다.
# fdisk /dev/sda
Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.
Command (m for help): d
Partition number (1-4, default 4): 2
Partition 2 has been deleted.
Command (m for help): w
The partition table has been altered.
Syncing disks.
이로 인해 grub 오류가 발생합니다.
error: no such partition.
grub rescue>
grub
다시 설치하면 apt-get install --reinstall grub-pc
다음과 같은 grub 오류가 발생합니다.
error: attempt to read or write outside of disk `hd0`.
grub rescue>
어떻게 되어가나요?
답변1
update-grub
실제로는 GRUB만 업데이트됩니다.구성 파일존재하다 /boot/grub/grub.cfg
.
GRUB 코어 이미지(주로 BIOS 부팅 파티션 내에 위치)에는 파티션 번호와 경로 이름이 포함되어 있습니다. GRUB는 /boot/grub
GRUB 구성 파일과 GRUB 모듈(예 normal.mod
: .
/boot
GRUB는 Linux 커널이 부팅되기 전에 작업을 완료하므로 파티션 마운트 해제는 GRUB에 아무런 영향을 미치지 않습니다. GRUB 코어 이미지에 인코딩된 정보를 업데이트하지 않았으므로( 이전 파일 시스템 grub-install /dev/sda
을 마운트 해제 하고 해당 위치로 이동한 후 다시 실행하여) GRUB는 삭제될 때까지 이전 파티션을 계속 사용합니다 . 프로그램을 실행하기 전에 GRUB 구성을 변경하면 변경 사항이 실제로 적용되지 않는다는 것을 알 수 있습니다./boot
/boot.bak
/boot
update-grub
따라서 다음에 해야 할 일은 mv /boot.bak /boot
가 아니라 다음과 같습니다 update-grub
.
grub-install /dev/sda
달리면 동일한 효과를 효과적으로 얻을 수 있습니다 apt-get install --reinstall grub-pc
. 하지만 이제 오류 메시지는 attempt to read or write outside of disk 'hd0'
. 이는 GRUB가 BIOS 루틴을 사용하여 디스크에 액세스하고 있으며 분명히 QEMU의 BIOS 에뮬레이션 루틴이 >2TB 디스크를 처리하도록 업데이트되지 않았으므로 2TB 제한에 도달한다는 것을 알려줍니다.
(예, 저는 Debian 12 설치를 분석했습니다 grub-pc
. 이와 같은 간단한 설치에서 GRUB 코어 이미지에 포함된 유일한 모듈은 fshelp.mod
적절한 파일 시스템 드라이버 모듈(예: ext2.mod)
적절한 파티션 테이블 유형 모듈(예: part_msdos.mod
또는 part_gpt.mod
))입니다. 독립적 이거나 사용 가능한 biosdisk.mod
BIOS가 있을 것입니다 .ahci.mod
ata.mod
기본 설치에서는 이를 사용하지 않습니다.)
불행하게도 루트 파일 시스템의 크기가 약 4TB인 경우 UEFI 모드에서 부팅으로 전환해야 합니다. 보안 부팅을 지원하지 않는 Debian의 QEMU를 사용하여 이 작업을 수행하려면 ovmf
패키지를 설치하고 <os>
VM의 XML 구성 파일 섹션을 다음과 같이 변경해야 합니다.
<os>
<type arch='x86_64' machine='pc-q35-5.2'>hvm</type>
<loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE_4M.fd</loader>
<nvram template='/usr/share/OVMF/OVMF_VARS_4M.fd'>/wherever/you/keep/your/VMs/vmname.nvram.fd</nvram>
<boot dev='hd'/>
</os>
그럼 넌 할 수 있어
- 이전 파티션의 BIOS 부팅 및 공간을 재사용하여
/boot
EFI 시스템 파티션을 생성합니다. /etc/fstab
에 설치하려면 한 줄을 추가하세요/boot/efi
.grub-pc
및 을 sumgrub-pc-bin
으로 바꾸고 ,grub-efi-amd64
grub-efi-amd64-bin
- 달리기
grub-install --target=x86_64-efi --force-extra-removable /dev/sda
UEFI 모드에서 성공적으로 부팅한 후 grub-install /dev/sda
다시 실행하여 UEFI NVRAM 부팅 변수가 올바르게 설정되었는지 확인하세요. 그런 다음 efibootmgr
실행 중인 운영 체제 내에서 표준화된 방식으로 부팅 설정을 설치하고 관리하는 방법을 알아보세요 .
런타임이 아직 UEFI 모드에서 실행되고 있지 않은 경우 UEFI GRUB의 두 번째 복사본이 grub-install --target=x86_64-efi
이동식 미디어/대체 위치에 설치됩니다 .--force-extra-removable
/boot/efi/EFI/boot/bootx64.efi
보안 부팅도 필요한 경우 NVRAM 템플릿을 OVMF_CODE_4M.fd
. 추가하고 패키지화한 후 다시 실행하세요.OVMF_CODE_4M.ms.fd
OVMF_VARS_4M.fd
OVMF_VARS_4M.ms.fd
grub-efi-amd64-signed
shim-signed
grub-install --target=x86_64-efi --force-extra-removable /dev/sda