새 부팅 파티션 준비

새 부팅 파티션 준비

기존 질문 중,이것내가 하고 있는 일과 가장 비슷해 보이지만 파티션을 늘리려고 하는데 /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새로운 첫 번째 부팅 옵션 sda1nvme0n1p4. sda1확실히 부팅하고 싶지 않은 외장 드라이브입니다. 왜 기본값으로 설정되었나요??

  • 새 파티션에서 부팅할 때 어떤 변경 사항이 누락되었나요?
  • 재부팅하기 전에 fstab의 UUID설정을 변경해야 합니까 ?/boot
  • 에 별도의 파티션이 필요합니까 /boot/efi?

답변1

/boot와 을 둘 다 별도의 파일 시스템으로 사용하는 것은 /boot/efi과도하지만 다음과 같습니다.

  • 매우 오래된 BIOS 기반 시스템에는 /bootBIOS 제한을 피하기 위해 별도의 파티션이 필요할 수 있습니다.
  • /boot/efiUEFI 스타일로 부팅하는 모든 시스템 에는 펌웨어가 부트로더 파일을 찾을 것으로 예상하는 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

efibootmgrPARTUUID를 자체적으로 조회하고 자동으로 이를 사용하여 새 부팅 항목을 생성합니다. 디스크만 지정하면 됩니다(디스크에 EFI 시스템 파티션이 여러 개 있는 경우 제외).

shimx64.efi을 로드한 후에 는 Debian/Ubuntu 스타일로 구성된 시스템에서 와 동일한 디렉터리에서 grubx64.efi읽습니다 . 해당 파일에는 다음을 포함하는 파일 시스템의 파일 시스템 UUID를 식별하는 몇 줄만 포함되어 있습니다.grub.cfggrubx64.efi/boot 해당 파일 에는 디렉터리(별도의 파티션인지 아니면 루트 파일 시스템의 일반 디렉터리인지 여부)를 . 결과적으로 Debian/Ubuntu 시스템은언제나/boot/grub/grub.cfg시스템이 BIOS를 사용하든 UEFI를 사용하든 관계없이 "기본" GRUB 구성 파일이 에 있습니다 . 연령대가 다른 시스템이 많으면 편리합니다.

/boot/grub2/grub.cfg참고로 RedHat 7 및 8 에는 BIOS 스타일 시스템과 /boot/efi/EFI/redhat/grub.cfgUEFI 시스템에서 실제 GRUB 구성이 있습니다 .

하지만/boot, 및 을 병합하려는 경우 /boot/efi참고할 사항이 몇 가지 있습니다.

  • 에 제공된 부트로더 경로는 efibootmgrESP 파일 시스템의 루트를 기반으로 합니다. 원래 해당 경로는 에서 시작 /boot/efi하므로 Linux에서 본 경로를 \\EFI\\UBUNTU\\SHIMX64.EFI나타냅니다 . /boot/efi/EFI/UBUNTU/SHIMX64.EFIjust를 사용하는 경우 /bootUBUNTU 디렉터리를 한 수준 위로 이동하거나 부트로더 경로를 \\EFI\\EFI\\UBUNTU\\SHIMX64.EFI.
  • /bootGRUB에서 커널과 initramfs 파일을 로드할 수 있도록 이해할 수 있는 것이 필요합니다. Ubuntu의 GRUB UEFI 버전은 확실히 ext2와 vfat를 이해합니다. 따라서 단일 vfat 파티션으로 병합하면 /bootGRUB /boot/efi에는 문제가 없습니다. 펌웨어는 해당 파티션에서 SHIMX64.EFI 및 GRUBX64.EFI를 읽어야 하고 일반적인 UEFI 펌웨어는 ext2를 이해할 수 없기 때문에 ext2를 사용할 수 없습니다.
  • 부팅 시 /bootLinux 커널이 아닌 GRUB에서만 필요합니다. /boot마운트 해제된 상태로 놔둬도 시스템은 여전히 ​​정상적으로 부팅됩니다. 그러나 /boot커널 업데이트가 정상적으로 수행될 수 있도록 마운트된 상태를 유지하는 것이 좋습니다 . (또는 마운트 해제된 상태로 유지하여 숨기려면 /etc/kernel/pre*.d/커널 업데이트가 설치되기 전에 자동으로 마운트하고 /etc/kernel/post*.d특정 커널 패키지의 설치/제거가 완료된 후 다시 마운트 해제하는 스크립트를 추가할 수 있습니다.)

요구 사항이 무엇인지 확실히 파악하지 못한 경우 부트로더는 종종 "무섭고 위험한" 것으로 인식됩니다. 반면, 일반적으로 독립형이므로 부트로더와 관련된 문제는 대개 해결하기가 그리 어렵지 않습니다. 일단 외부 미디어에서 시스템을 부팅하는 첫 번째 장애물을 통과하면 문제 해결을 시작할 수 있습니다. 그것. 나는 작동하지 않는 부트로더가 있는 시스템이 "토스트"라고 말하고 싶지 않습니다. 단지 약간의 외부 도움이 필요할 뿐입니다.

답변2

부트로더는 현재 마운트된 항목을 검색하므로 /boot/efi해당 파티션도 늘리고 싶지 않은 경우 해당 파티션을 그대로 유지하고 아래 설명된 대로 파일에 작은 변경 사항 하나만 적용하면 됩니다.

새 부팅 파티션 준비

  1. ext2원하는 크기로 새 파티션을 만듭니다 . 이 파티션에는 부팅 플래그가 필요하지 않습니다. efi 파티션이 진입점이며 이 새 파티션에 위임됩니다.
  2. 새 파티션을 어딘가에 마운트하십시오. /newBoot예를 들어
  3. 예를 들어 다음을 사용하여 이전 부팅 파티션에서 파일을 복사합니다.rsync --recursive --delete --archive /boot/ /newBoot/
  4. 의 콘텐츠를 삭제합니다 /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

관련 정보