在 RAID0 上安装 xubuntu 后安装 GRUB 时出现问题

在 RAID0 上安装 xubuntu 后安装 GRUB 时出现问题

我按照另一篇文章中的说明操作,基本上是说在选择要安装的 RAID 分区后创建 RAID 并进行安装。我已经这样做过很多次了,但这次却发现自己很为难。

我的系统运行在一对 512GB SSD 上,它们有两个 RAID0 分区。一个用于系统(约 40GB),其余大部分分配给 /home。它运行在 17.x 版本的 Linux Mint 上。在一次不正常的关机后,系统崩溃了。似乎有些文件丢失或损坏了。我决定现在是更新的好时机,所以我下载了当前的 Linux Mint (Cinnamon) .iso 并将其复制到 USB 驱动器。我启动了 USB,组装了 RAID,然后继续安装。我为系统选择了 /dev/md1,EXT4 格式并重新格式化驱动器。我为 /home 选择了 /dev/md2,没有重新格式化。安装似乎很顺利,安装程序甚至识别出我的 $HOME 已加密。当它到达需要安装 GRUB 的地步时,它报告了一个错误并给了我三个选择。无论我做出什么选择,对话框都没有继续。

接下来我下载并尝试安装 Xubuntu 16.04 LTS,结果完全相同。目前我已经启动了 USB 驱动器,组装了 RAID,并尝试将 GRUB 安装到 /dev/sda 和 /dev/md0,结果如下。

xubuntu@xubuntu:~$ sudo grub-install --boot-directory=/media/xubuntu/c31e9230-d979-4c7d-81ee-34dda0bac330 /dev/md0
Installing for i386-pc platform.
grub-install: warning: File system `ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.
xubuntu@xubuntu:~$ 


xubuntu@xubuntu:~$ sudo grub-install --boot-directory=/media/xubuntu/c31e9230-d979-4c7d-81ee-34dda0bac330 /dev/sda
Installing for i386-pc platform.
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install: error: embedding is not possible, but this is required for RAID and LVM install.
xubuntu@xubuntu:~$ 

/dev/sda 的分区方式如下。

xubuntu@xubuntu:~$ sudo parted -l /dev/sda
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                 Flags
 4      17.4kB  1049kB  1031kB               BIOS boot partition  boot, esp
 3      1049kB  1074MB  1073MB  ext4                              boot, esp
 1      1074MB  21.5GB  20.4GB  ext4                              raid
 2      21.5GB  500GB   479GB                                     raid

以及 RAID

xubuntu@xubuntu:~$ cat /proc/mdstat
Personalities : [raid0] [raid1] 
md0 : active raid1 sde2[0] sdg2[1]
      186839936 blocks super 1.2 [2/2] [UU]

md3 : active raid1 sda3[0] sdb3[1]
      1047488 blocks [2/2] [UU]

md2 : active raid0 sda2[0] sdb2[1]
      934827008 blocks super 1.2 512k chunks

md1 : active raid0 sdb1[0] sda1[1]
      39846912 blocks super 1.2 512k chunks

unused devices: <none>
xubuntu@xubuntu:~$ 

我搜索了一下,发现https://blog.hostonnet.com/grub-install-warning-this-gpt-partition-label-contains-no-bios-boot-partition-embedding-wont-be-possible根据将驱动器标记为“bios_grub on”的建议,我执行了以下命令:

xubuntu@xubuntu:~$ sudo parted /dev/sda set 1 bios_grub on
Information: You may need to update /etc/fstab.

xubuntu@xubuntu:~$ sudo grub-install --boot-directory=/media/xubuntu/c31e9230-d979-4c7d-81ee-34dda0bac330 /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
xubuntu@xubuntu:~$ 

很高兴看到“安装完成。没有报告错误。”我重新启动并发现自己面临“grub>”提示。:(

更糟糕的是,此操作似乎损坏了 /dev/md0,并且当我启动拇指驱动器时它不再组装。

我真的很想知道该怎么做才能让它发挥作用。谢谢您的帮助。

编辑:我记得看到过一些安装媒体上有“启动其他驱动器”的选项。作为权宜之计,我很乐意使用类似的东西(这需要能够在 RAID 上启动映像),直到我弄清楚需要做什么才能正确安装 GRUB

答案1

我基本上解决了这个问题。我相信问题在于需要“管理”分区。由于我不太清楚的原因,原始分区不适合安装 grub。(它确实在基于 14.04 LTS 的 Mint 版本上运行,但我想时代变了。)我确信分区要求在某处有记录,但我在搜索过程中没有找到。

令人沮丧的是,当您“试用操作系统”(需要安装 mdadm 并组装 RAID)时,如果 grub 安装失败,原本用于允许恢复或继续的弹出窗口会被锁定。这在最近的 Ubuntu 版本(16.04、16.10 包括 Xubuntu)中 100% 可重现。

我的 PC 上有第三个 SSD。我尝试安装到该 SSD 上,但最终还是出现了同样的错误。这是因为我必须执行手动分区,而我生成的分区不够用。

最终奏效的方法是断开两个 RAID 驱动器的连接并安装到第三个驱动器,让分区程序重新格式化驱动器并进行安装。这样,分区程序就可以生成所需的分区布局。我甚至可以配置它以在驱动器重新连接的情况下挂载我的 RAID0 $HOME 目录。(UUID FTW,因为启动驱动器从 /dev/sda 移动到 /dev/sdc。)

然后,我在其中一个被突袭的驱动器 (/dev/sda) 上重现了目录结构,并继续安装 16.04 LTS。当它进入 grub 安装时,它再次失败 (AAARRRGGGHH!!!),这次出现了不同的消息:

'grub-efi-amd64-signed' 软件包无法安装到 /target/。如果没有 GRUB 引导加载程序,安装的系统将无法启动。

至少现在它还没有挂起。下一个对话框高兴地报告

很抱歉,安装程序崩溃了。关闭此窗口后,我们将允许您使用集成的错误报告工具提交错误报告。这将收集有关您的系统和安装过程的信息。详细信息将发送到我们的错误跟踪器,开发人员将尽快处理该问题。

此时,安装程​​序再次达到“稳定状态”,并且对话框一直保持,直到我重新启动系统。

我毫不气馁地重新启动了备用驱动器并运行update-grub,识别了两个安装。不幸的是,涉及 RAID 的安装仍然无法启动,因为 initrd 中没有安装 mdadm。我认为这可以修复。(至少它曾经可以工作。)一旦我解决了这个问题,我将再次拥有一个完全正常工作的系统。也许有一天,当系统安装在 RAID 上时,安装程​​序会足够智能,在 initrd 中包含 RAID 支持。我想我应该搜索或提交几个错误报告。

相关内容