기존 질문 중,이것내가 하고 있는 일과 가장 비슷해 보이지만 파티션을 늘리려고 하는데 /boot/ 및 /boot/efi에 다른 파티션이 마운트된 이유와 발을 쏘지 않고 진행하는 방법에 대해 잘 모르겠습니다.
지금까지 새 파티션을 생성하고 마운트한 /newBoot
후 전환했으므로 sudo rsync -a /boot/ /newBoot/
새 파티션에 전환할 관련 파일이 모두 있다고 가정합니다.
$ lsblk -e 7 -o name,fstype,size,fsused,label,partlabel,mountpoint,uuid,partuuid
NAME FSTYPE SIZE FSUSED LABEL PARTLABEL MOUNTPOINT UUID PARTUUID
sda 7.3T
└─sda1 crypto 7.3T 4dffc196-9926-43d9-a7c8-38898681f402 85b3a656-4886-4b37-b9c1-2acb0158587a
...
nvme0n1 931.5G
├─nvme0n1p1 vfat 512M 5.3M EFI System Partition
│ /boot/efi FD0E-EECA 587cf214-f068-4879-a833-9dffa5ec6e3d
├─nvme0n1p2 ext2 488M 313.7M /boot 606a1976-d1c2-4246-a256-a8afddb04f84 2e10e277-560f-4f5e-abce-1dce5187a7f0
...
└─nvme0n1p4 vfat 1.5G NEWBOOT newboot 530D-4828 ea886018-714f-46fb-8f21-785c74543891
$ efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0004
Boot0004* ubuntu HD(1,GPT,587cf214-f068-4879-a833-9dffa5ec6e3d,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)
$ sudo efibootmgr -c -L ubuntuNew -l \\EFI\\UBUNTU\\SHIMX64.EFI
$ efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0000,0004
Boot0000* ubuntuNew HD(1,GPT,85b3a656-4886-4b37-b9c1-2acb0158587a,0xffff,0x3a3535ca9)/File(\EFI\UBUNTU\SHIMX64.EFI)
Boot0004* ubuntu HD(1,GPT,587cf214-f068-4879-a833-9dffa5ec6e3d,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)
그래서 현재 폴더에 두 개의 파티션이 관련된 이유를 이해하지 못하지만 /boot
하나도 작동해야 한다고 생각합니까? 적어도 위의 링크된 질문에서 선택한 답변은 그렇게 읽습니다. 그렇죠?
이제 무엇이 빠졌나요? /etc/fstab
?
$ cat /etc/fstab
...
UUID=606a1976-d1c2-4246-a256-a8afddb04f84 /boot ext2 defaults 0 2
...
UUID=FD0E-EECA /boot/efi vfat umask=0077 0 1
...
lsblk
이제 and (@oldfred에게 감사드립니다) 에 따르면 efibootmgr -v
새로운 첫 번째 부팅 옵션 sda1
은 nvme0n1p4
. sda1
확실히 부팅하고 싶지 않은 외장 드라이브입니다. 왜 기본값으로 설정되었나요??
- 새 파티션에서 부팅할 때 어떤 변경 사항이 누락되었나요?
- 재부팅하기 전에 fstab의
UUID
설정을 변경해야 합니까 ?/boot
- 에 별도의 파티션이 필요합니까
/boot/efi
?
답변1
/boot
와 을 둘 다 별도의 파일 시스템으로 사용하는 것은 /boot/efi
과도하지만 다음과 같습니다.
- 매우 오래된 BIOS 기반 시스템에는
/boot
BIOS 제한을 피하기 위해 별도의 파티션이 필요할 수 있습니다. /boot/efi
UEFI 스타일로 부팅하는 모든 시스템 에는 펌웨어가 부트로더 파일을 찾을 것으로 예상하는 ESP 파티션 또는 이와 동등한 ESP 파티션이 필요합니다 .- 별도의 암호화되지 않은 암호화를 사용하면 GRUB에서 이해하는 보다 제한된 암호화 세트 대신 루트 파일 시스템에서
/boot
지원하는 모든 암호화 방법을 사용할 수 있습니다 .cryptsetup
최신 Debian/Ubuntu의 기본 파티셔닝은 두 파티션을 모두 별도의 파티션으로 가지므로 기본 구성은 가능한 가장 광범위한 시스템을 포괄할 수 있습니다.
oldfred의 설명에서 언급했듯이 UEFI는 GPT 파티션 테이블의 파티션 고유 GUID에서 사용할 ESP 파티션을 식별합니다. 해당 GUID는 Linux에서 PARTUUID로 알려져 있습니다. lsblk -o +partuuid
표시할 것입니다.
당신의 efibootmgr
명령은 거의 정확했습니다. 올바른 디스크를 사용하여 ubuntuNew 부팅 옵션을 생성하려면 다음을 사용해야 합니다:
sudo efibootmgr -c -d /dev/nvme0n1 -L ubuntuNew -l \\EFI\\UBUNTU\\SHIMX64.EFI
efibootmgr
PARTUUID를 자체적으로 조회하고 자동으로 이를 사용하여 새 부팅 항목을 생성합니다. 디스크만 지정하면 됩니다(디스크에 EFI 시스템 파티션이 여러 개 있는 경우 제외).
shimx64.efi
을 로드한 후에 는 Debian/Ubuntu 스타일로 구성된 시스템에서 와 동일한 디렉터리에서 grubx64.efi
읽습니다 . 해당 파일에는 다음을 포함하는 파일 시스템의 파일 시스템 UUID를 식별하는 몇 줄만 포함되어 있습니다.grub.cfg
grubx64.efi
/boot
해당 파일 에는 디렉터리(별도의 파티션인지 아니면 루트 파일 시스템의 일반 디렉터리인지 여부)를 . 결과적으로 Debian/Ubuntu 시스템은언제나/boot/grub/grub.cfg
시스템이 BIOS를 사용하든 UEFI를 사용하든 관계없이 "기본" GRUB 구성 파일이 에 있습니다 . 연령대가 다른 시스템이 많으면 편리합니다.
/boot/grub2/grub.cfg
참고로 RedHat 7 및 8 에는 BIOS 스타일 시스템과 /boot/efi/EFI/redhat/grub.cfg
UEFI 시스템에서 실제 GRUB 구성이 있습니다 .
하지만/boot
, 및 을 병합하려는 경우 /boot/efi
참고할 사항이 몇 가지 있습니다.
- 에 제공된 부트로더 경로는
efibootmgr
ESP 파일 시스템의 루트를 기반으로 합니다. 원래 해당 경로는 에서 시작/boot/efi
하므로 Linux에서 본 경로를\\EFI\\UBUNTU\\SHIMX64.EFI
나타냅니다 ./boot/efi/EFI/UBUNTU/SHIMX64.EFI
just를 사용하는 경우/boot
UBUNTU 디렉터리를 한 수준 위로 이동하거나 부트로더 경로를\\EFI\\EFI\\UBUNTU\\SHIMX64.EFI
. /boot
GRUB에서 커널과 initramfs 파일을 로드할 수 있도록 이해할 수 있는 것이 필요합니다. Ubuntu의 GRUB UEFI 버전은 확실히 ext2와 vfat를 이해합니다. 따라서 단일 vfat 파티션으로 병합하면/boot
GRUB/boot/efi
에는 문제가 없습니다. 펌웨어는 해당 파티션에서 SHIMX64.EFI 및 GRUBX64.EFI를 읽어야 하고 일반적인 UEFI 펌웨어는 ext2를 이해할 수 없기 때문에 ext2를 사용할 수 없습니다.- 부팅 시
/boot
Linux 커널이 아닌 GRUB에서만 필요합니다./boot
마운트 해제된 상태로 놔둬도 시스템은 여전히 정상적으로 부팅됩니다. 그러나/boot
커널 업데이트가 정상적으로 수행될 수 있도록 마운트된 상태를 유지하는 것이 좋습니다 . (또는 마운트 해제된 상태로 유지하여 숨기려면/etc/kernel/pre*.d/
커널 업데이트가 설치되기 전에 자동으로 마운트하고/etc/kernel/post*.d
특정 커널 패키지의 설치/제거가 완료된 후 다시 마운트 해제하는 스크립트를 추가할 수 있습니다.)
요구 사항이 무엇인지 확실히 파악하지 못한 경우 부트로더는 종종 "무섭고 위험한" 것으로 인식됩니다. 반면, 일반적으로 독립형이므로 부트로더와 관련된 문제는 대개 해결하기가 그리 어렵지 않습니다. 일단 외부 미디어에서 시스템을 부팅하는 첫 번째 장애물을 통과하면 문제 해결을 시작할 수 있습니다. 그것. 나는 작동하지 않는 부트로더가 있는 시스템이 "토스트"라고 말하고 싶지 않습니다. 단지 약간의 외부 도움이 필요할 뿐입니다.
답변2
부트로더는 현재 마운트된 항목을 검색하므로 /boot/efi
해당 파티션도 늘리고 싶지 않은 경우 해당 파티션을 그대로 유지하고 아래 설명된 대로 파일에 작은 변경 사항 하나만 적용하면 됩니다.
새 부팅 파티션 준비
ext2
원하는 크기로 새 파티션을 만듭니다 . 이 파티션에는 부팅 플래그가 필요하지 않습니다. efi 파티션이 진입점이며 이 새 파티션에 위임됩니다.- 새 파티션을 어딘가에 마운트하십시오.
/newBoot
예를 들어 - 예를 들어 다음을 사용하여 이전 부팅 파티션에서 파일을 복사합니다.
rsync --recursive --delete --archive /boot/ /newBoot/
- 의 콘텐츠를 삭제합니다
/newBoot/efi/
. 여기서는 단 하나의 폴더였습니다:rm -rf /newBoot/efi/EFI/
. 삭제하지 마십시오newBoot/efi/
. 우리는 거기에 이전efi
폴더를 마운트하고 싶습니다.
efi
새 파티션을 사용하도록 지시
/newBoot
의 UUID를 알아보세요 :
$ lsblk -e 7 -o name,fstype,size,fsused,label,partlabel,mountpoint,uuid,partuuid
NAME FSTYPE SIZE FSUSED LABEL PARTLABEL MOUNTPOINT UUID PARTUUID
nvme0n1 931.5G
├─nvme0n1p1 vfat 512M 5.3M EFI System Partition /boot/efi FD0E-EECA 587cf214-f068-4879-a833-9dffa5ec6e3d
├─nvme0n1p2 ext2 488M 313.7M /boot 606a1976-d1c2-4246-a256-a8afddb04f84 2e10e277-560f-4f5e-abce-1dce5187a7f0
├─nvme0n1p3 crypto_LUKS 927.7G e7f674b8-4bec-4502-a1e5-0e93aa34786f 2fed2ecb-b548-479b-aa3f-7f1bbfb9981f
│ └─sda3_crypt LVM2_member 927.7G 9tx8Yv-XDCR-RmGf-fmXo-WiX2-SDpG-xH1si4
│ ├─ubuntu--gnome--vg-root ext4 911.6G 734.2G / 1cccfb0a-69da-4246-a071-52f882681418
│ └─ubuntu--gnome--vg-swap_1 swap 15.8G [SWAP] e3facfb8-db2e-426d-aef4-b6c81004fd6f
└─nvme0n1p4 ext2 1.5G newBoot newBoot 5aca79e7-b740-46d3-bc76-aa7e8b8b93da 9e8baf2f-2118-4042-9c47-7ffb824ada52
그에 따라 편집하여 /boot/efi/EFI/ubuntu/grub.cfg
이전 현재 UUID를 새 UUID로 바꿉니다.
# cat /boot/efi/EFI/ubuntu/grub.cfg
# search.fs_uuid 606a1976-d1c2-4246-a256-a8afddb04f84 root
search.fs_uuid 5aca79e7-b740-46d3-bc76-aa7e8b8b93da root
set prefix=($root)'/grub'
configfile $prefix/grub.cfg
마무리
이제 시스템은 이미 새 파티션에서 부팅되어야 하지만 /boot/
새 파티션에서 부팅한 후에는 이전 파티션이 됩니다. /etc/fstab
시스템 업데이트가 해당 위치에서 모든 파일을 찾을 수 있도록 편집하십시오 .
# UUID=606a1976-d1c2-4246-a256-a8afddb04f84 /boot ext2 defaults 0 2
UUID=5aca79e7-b740-46d3-bc76-aa7e8b8b93da /boot ext2 defaults 0 2
/boot/efi
다음 줄은 그대로 /etc/fstab
유지됩니다.
UUID=FD0E-EECA /boot/efi vfat umask=0077 0 1