Linux UEFI 启动模式做软 raid1 问题

2023-10-28 07:27:58 +08:00
 louisxxx

正常的 EFI 分区无法放到 raid 上,与是打算使用手动把 sda 上的 boot 分区克隆到 sdb 上(安装系统时在 2 个盘上都建了一个 1G 的 EFI 分区)。

show efiboot order

efibootmgr -v

Update grub and install grub

/usr/sbin/update-grub /usr/sbin/grub-install --recheck

boothdd=`df -h | grep efi | awk '{print $1}' | sed 's/://g' | sed 's/\/dev\///g'

/usr/sbin/grub-install --recheck --bootloader-id debian-${boothdd%?}

copy EFI Partition to all disk from boot disk

dd if=`df -h | grep efi | awk '{print $1}'` of=/dev/sdb1 bs=1M

efibootmgr --create --disk /dev/sdb --part 1 -w --label debian-sdb --loader "\EFI\debian\grubx64.efi"

测试 2 个盘启动都没问题,打算写个自动克隆脚本,在更新内核时触执行克隆,有人这样搞过吗?有没有啥坑。 查看 2 个盘的 /boot/efi 分区 UUID 是一样的,这样启动时似乎是随机读一个其中一个盘。

1353 次点击
所在节点    Linux
17 条回复
ltkun
2023-10-28 07:50:21 +08:00
pve 安装的时候选了 zfs 12 盘 raidz3 结果每个盘都给我分了 efi 和 boot
louisxxx
2023-10-28 07:54:38 +08:00
@ltkun pve 一次写入后不需要更新内核版本吧。一次写好 efi boot 是没问题
ltkun
2023-10-28 08:18:59 +08:00
如果 pve 内核更新 当然每个 boot 都会更新
@louisxxx
sNullp
2023-10-28 08:26:09 +08:00
Efi 和 boot 分区是两码事,内核只存在 boot 分区里。

@ltkun
sNullp
2023-10-28 08:26:31 +08:00
at 错人了,sorry ,应该
@louisxxx
kokutou
2023-10-28 08:54:28 +08:00
放软 raid 上又不能从软 raid 启动,实际还是从单独硬盘启动,那么这样做的意义呢。。。
louisxxx
2023-10-28 09:58:38 +08:00
@sNullp uefi 装系统不需要单独的 boot 分区,他叫 efi 分区。看文件 efi 和 boot 这两个都在 sda1 里面
yaoyao1128
2023-10-28 11:43:24 +08:00
ESP 需要单独分区
但是 kernel 放在 boot 不需要
你 ESP 分区挂载的是 /boot/efi 而不是 /boot
dode
2023-10-28 12:43:19 +08:00
raid 是保护数据的,不要搞成不停机的奇怪问题
ranaanna
2023-10-28 13:50:16 +08:00
不明白为什么一个区区 efi 系统分区要 raid ,还要占用 1GB 的容量。是打算装 n 多的操作系统吗,可是一次也只能运行其中一个的呀
louisxxx
2023-10-28 20:30:21 +08:00
@yaoyao1128 你说得对,ESP 分区挂载的是 /boot/efi 而不是 /boot 。这样只克隆一次 ESP 分区就行了?/boot 是放在 raid 上的。
root@debian:/opt/raid# ls /boot/efi/EFI/debian/ -1
BOOTX64.CSV
fbx64.efi
grub.cfg
grubx64.efi
mmx64.efi
shimx64.efi

root@debian:/opt/raid# ls /boot/efi/EFI/debian/ -1
BOOTX64.CSV
fbx64.efi
grub.cfg
grubx64.efi
mmx64.efi
shimx64.efi
root@debian:/opt/raid# ls /boot -1
config-5.10.0-20-amd64
config-5.10.0-26-amd64
efi
grub
initrd.img-5.10.0-20-amd64
initrd.img-5.10.0-26-amd64
System.map-5.10.0-20-amd64
System.map-5.10.0-26-amd64
vmlinuz-5.10.0-20-amd64
vmlinuz-5.10.0-26-amd64



root@debian:/opt/raid# cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/vg0-lv0 / xfs defaults 0 0
# /boot/efi was on /dev/sdm1 during installation
UUID=78ED-F73E /boot/efi vfat umask=0077 0 1

root@debian:/opt/raid# df -h
Filesystem Size Used Avail Use% Mounted on
udev 126G 0 126G 0% /dev
tmpfs 26G 1.5M 26G 1% /run
/dev/mapper/vg0-lv0 930G 8.1G 922G 1% /
tmpfs 126G 0 126G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sdn1 952M 2.0M 950M 1% /boot/efi
tmpfs 26G 0 26G 0% /run/user/0

/dev/sdm1: UUID="78ED-F73E" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI" PARTUUID="9c5bc403-0917-4542-b48e-5f080fbb3f83"
/dev/sdn1: UUID="78ED-F73E" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI" PARTUUID="1129e3c3-4e68-4277-9dc5-d30967783e12"
sNullp
2023-10-28 23:08:54 +08:00
@louisxxx 我解决过同样的问题告诉你解决方案你不要这么随便就否定,先研究一下再回复不好吗?
cndns
2023-11-01 00:05:34 +08:00
efi 是放引导文件的 内核是放在/boot 目录,注意是目录,你也可以不必单独把/boot 分一个区出来,但是如果你是 uefi 引导就必须要一个单独的/boot/efi 分区 再加上一个 / 根分区 这 2 个是必须的。如果是传统的 grub 引导,只需要一个/ 根分区就 ok gurb 引导程序只会安装你 bios 指定的第一块硬盘设备里面的前多少个字节来的忘记了。
cndns
2023-11-01 00:10:00 +08:00
@cndns 修正下传统引导+mbr 方式 是第一块硬盘前多少字节,grub 是 grub ,二码事。
louisxxx
2023-11-01 09:30:31 +08:00
@cndns efi 分区里面只有一个很小的引导文件。grub 是放 efi 分区还是 boot 目录?我只建了两个分区,一个 efi 一个根
cndns
2023-11-02 03:33:03 +08:00
@louisxxx 放在 efi 分区
louisxxx
2023-11-02 04:51:50 +08:00
@cndns 那这样每次更新内核如何 grub 发生变化就要重新克隆分区了?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/986177

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX