V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
louisxxx
V2EX  ›  Linux

Linux UEFI 启动模式做软 raid1 问题

  •  
  •   louisxxx · 2023-10-28 07:27:58 +08:00 · 1361 次点击
    这是一个创建于 400 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正常的 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 是一样的,这样启动时似乎是随机读一个其中一个盘。

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

    @ltkun
    sNullp
        5
    sNullp  
       2023-10-28 08:26:31 +08:00 via iPhone
    at 错人了,sorry ,应该
    @louisxxx
    kokutou
        6
    kokutou  
       2023-10-28 08:54:28 +08:00 via Android
    放软 raid 上又不能从软 raid 启动,实际还是从单独硬盘启动,那么这样做的意义呢。。。
    louisxxx
        7
    louisxxx  
    OP
       2023-10-28 09:58:38 +08:00 via iPhone
    @sNullp uefi 装系统不需要单独的 boot 分区,他叫 efi 分区。看文件 efi 和 boot 这两个都在 sda1 里面
    yaoyao1128
        8
    yaoyao1128  
       2023-10-28 11:43:24 +08:00
    ESP 需要单独分区
    但是 kernel 放在 boot 不需要
    你 ESP 分区挂载的是 /boot/efi 而不是 /boot
    dode
        9
    dode  
       2023-10-28 12:43:19 +08:00
    raid 是保护数据的,不要搞成不停机的奇怪问题
    ranaanna
        10
    ranaanna  
       2023-10-28 13:50:16 +08:00
    不明白为什么一个区区 efi 系统分区要 raid ,还要占用 1GB 的容量。是打算装 n 多的操作系统吗,可是一次也只能运行其中一个的呀
    louisxxx
        11
    louisxxx  
    OP
       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
        12
    sNullp  
       2023-10-28 23:08:54 +08:00 via iPhone
    @louisxxx 我解决过同样的问题告诉你解决方案你不要这么随便就否定,先研究一下再回复不好吗?
    cndns
        13
    cndns  
       2023-11-01 00:05:34 +08:00 via Android
    efi 是放引导文件的 内核是放在/boot 目录,注意是目录,你也可以不必单独把/boot 分一个区出来,但是如果你是 uefi 引导就必须要一个单独的/boot/efi 分区 再加上一个 / 根分区 这 2 个是必须的。如果是传统的 grub 引导,只需要一个/ 根分区就 ok gurb 引导程序只会安装你 bios 指定的第一块硬盘设备里面的前多少个字节来的忘记了。
    cndns
        14
    cndns  
       2023-11-01 00:10:00 +08:00 via Android
    @cndns 修正下传统引导+mbr 方式 是第一块硬盘前多少字节,grub 是 grub ,二码事。
    louisxxx
        15
    louisxxx  
    OP
       2023-11-01 09:30:31 +08:00 via iPhone
    @cndns efi 分区里面只有一个很小的引导文件。grub 是放 efi 分区还是 boot 目录?我只建了两个分区,一个 efi 一个根
    cndns
        16
    cndns  
       2023-11-02 03:33:03 +08:00 via Android
    @louisxxx 放在 efi 分区
    louisxxx
        17
    louisxxx  
    OP
       2023-11-02 04:51:50 +08:00
    @cndns 那这样每次更新内核如何 grub 发生变化就要重新克隆分区了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2554 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:34 · PVG 12:34 · LAX 20:34 · JFK 23:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.