既存の問題のうち、これパーティションを拡大しようとしていることを除いて、私がやっていることと最も似ているように見えますが、/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)
それで、現在のフォルダに2つのパーティションが含まれている理由を理解していませんが、/boot
1つも機能する必要があると思いますか?少なくとも上にリンクされている質問について選択した答えは読まれましたか?
今何が欠けていますか?/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
そして、(@ oldfredのおかげで)によると、efibootmgr -v
新しい最初のブートオプションはになり、そうではsda1
ありませんnvme0n1p4
。sda1
それは外付けドライブであり、確かにそれから起動したくありません。なぜデフォルトですか? ?
- 新しいパーティションから起動したときに行われない変更は何ですか?
- 再起動する前にfstabを変更する必要がありますか
UUID
?/boot
- 別のパーティションが必要ですか
/boot/efi
?
答え1
/boot
とを/boot/efi
別々のファイルシステムとして扱うのは冗長ですが、次のようになります。
- 非常に古いBIOSベースのシステムでは、
/boot
BIOSの制限を避けるために別々のパーティションが必要になることがあります。 - UEFIを起動するすべてのシステムには、
/boot/efi
ESPパーティションまたはそれに対応するパーティションが必要です。これは、ファームウェアがそこでブートローダファイルを見つけることを期待しているからです。 - 個別の暗号化されていない暗号化を使用すると、GRUBが理解しているより制限された暗号化セットの代わりに、ルートファイルシステムでサポートされているすべての暗号化方法を
/boot
使用できます。cryptsetup
最新の Debian/Ubuntu のデフォルトのパーティション化には 2 つの別々のパーティションがあるため、デフォルトの構成では可能な限り広い範囲のシステムをカバーできます。
コメントで 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
がロードされると、grubx64.efi
Debian / Ubuntuベースのシステムで構成されますgrub.cfg
。grubx64.efi
ファイルには、ディレクトリを含むファイルシステムのファイルシステムUUIDを識別する数行しか含まれていません/boot
(別々のパーティションかルートファイルシステムの通常のファイルシステムか)。 。目次)。したがって、Debian / Ubuntuシステムはいつも/boot/grub/grub.cfg
システムがBIOSを使用しているかUEFIを使用しているかにかかわらず、「デフォルト」GRUB構成ファイルがあります。これは、さまざまな世代のシステムが多い場合に便利です。
/boot/grub2/grub.cfg
参考までに、RedHat 7と8には、/boot/efi/EFI/redhat/grub.cfg
UEFIシステムだけでなくBIOSスタイルシステムにも実際のGRUB設定があります。
しかし、/boot
、合計をマージしたい場合は、注意が必要なことがいくつかあります/boot/efi
。
- 指定されたブートローダパスは、
efibootmgr
ESPファイルシステムのルートに基づいています。最初にパスはで始まるので、/boot/efi
Linuxの観点からは\\EFI\\UBUNTU\\SHIMX64.EFI
を意味します。/boot/efi/EFI/UBUNTU/SHIMX64.EFI
UBUNTUのみを使用している場合は、/boot
UBUNTUディレクトリを1レベル上に移動するか、ブートローダパスを\\EFI\\EFI\\UBUNTU\\SHIMX64.EFI
。 /boot
GRUBがそこからカーネルとinitramfsファイルをロードできるように理解できるものでなければなりません。 Ubuntu用のGRUBのUEFIバージョンはext2とvfatを明確に理解しているため、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/
フォルダを1つだけにしてください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