我按照另一篇文章中的说明操作,基本上是说在选择要安装的 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 支持。我想我应该搜索或提交几个错误报告。