我尝试将 Arch Linux 安装到 USB 盘上。事情有点不稳定(例如,假设系统内部只有一个驱动器),但一切都安装得很好。直到我重新启动。
Booting 'Arch Linux'
root (hd1,1)
Filesystem type unknown, partition type 0x7
kernel /boot/vmlinuz26 root=/dev/dsb2 ro
Error 17: Cannot mount selected partition
(/dev/dsb1
/(hd1,0)
是一个小 FAT 分区,用于数据存储目的——适用于那些锁定的实验室计算机。)
这是“Arch Linux”命令序列:
root (hd1,1)
kernel /boot/vmlinuz26 root=/dev/dsb2 ro
initrd /boot/kernel26.img
在 grub 控制台:
grub> root (hd1,1)
Filesystem type unknown, partition type 0x7
grub> cat /etc/passwd
Error 17: Cannot mount selected partition
grub> root (hd0,1) # my ubuntu partition
Filesystem type is ext2fs, partition type 0x73
grub> cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
<snip/>
我可以在我的主机操作系统 Ubuntu 中成功重新启动,并使用磁盘工具确认分区是否成功。此外,sudo kvm /dev/dsb
一旦我编辑了启动命令root (hd0,1)
(即直到 Arch 尝试挂载/dev/dsb2
),Arch 启动就会成功。
我做错了什么?
编辑1
从 Ubuntu 中,fdisk -l /dev/sdb
给出:
Disk /dev/sdb: 1998 MB, 1998585856 bytes
62 heads, 62 sectors/track, 1015 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 1 65 124899 b W95 FAT32
/dev/sdb2 * 66 1015 1825900 83 Linux
我现在已经阅读了相关维基部分但似乎没有任何适用之处:我没有使用 GParted 或逻辑驱动器;所有内容都在同一个分区上。
答案1
在这种情况下,首先要检查的是您尝试启动的磁盘是否正确。磁盘的排序可能取决于许多因素:
在 Grub1 中,您只能访问两个硬盘。这是 BIOS 接口的限制。您实际获得哪两个硬盘取决于您的 BIOS 设置(查找“启动顺序”之类的内容)以及您实际可用的磁盘和其他类似硬盘的可启动媒体(例如 USB 闪存驱动器)。
sda
在 Linux 下, 、等的顺序sdb
取决于检测到驱动器的顺序,而在引导时通常取决于加载驱动程序的顺序。此外,某些磁盘是否显示为sd?
或hd?
取决于内核配置选项和 udev 设置。
这里 Grub 报告类型为 7 的分区。虽然 Linux 和 Grub 不关心分区类型(除了“容器”分区,如扩展分区),但在类型 7 的分区上有 Linux 文件系统是不常见的(这fdisk 描述为HPFS/NTFS
)。所以我的猜测是,BIOS 提供的第二个引导驱动器(Grub 的hd1
)不是您想要引导的磁盘,而是带有 Windows 分区的其他磁盘。检查是否hd0
是您要从中启动的驱动器;如果不是,则必须更改 BIOS 设置。
如果 Grub 识别分区中的文件系统,您可以键入类似内容cat (hd1,1)/
并按Tab以查看其中有哪些文件。当您在 Grub 提示符下感到迷失时,这是确定您拥有哪些文件系统的常用方法。
要检查的第二件事是您尝试访问的分区是否正确 - Grub1 从 0 开始计数,Linux 和 Grub2 从 1 开始计数,异常情况(例如安装了 BSD)可能会导致进一步的复杂化。添加或删除逻辑分区可能会导致现有分区以有时不直观的方式重新编号。
如果您在正确的磁盘上有正确的分区,则Filesystem type unknown
表明该分区不包含您的 Grub 版本支持的文件系统。 Grub1 支持 Linux 常用的文件系统(ext2 及更高版本、reiserfs、xfs、jfs),但(除非您有最近的补丁)btrfs。 Grub1 也不支持 LVM 或 RAID(RAID-1 除外,即镜像,因为它在读取时看起来像普通卷)。
答案2
我强烈建议在这里使用 grub2 和 UUID。
您可以通过以下方式获取 UUID
ls -l /dev/disk/by-uuid