我尝试编辑该menu.lst
文件以便与 Windows 7 进行双启动。我只是取消注释 Windows 条目并添加
map (hd0) (hd1)
man (hd1) (hd0)
根据 Arch Linux wiki。我重新启动并看到一个包含 3 个选项的 Grub 菜单:Arch Linux、Arch Linux Recovery、Windows 7。正如它应该的那样。我选择了Windows 7,但什么也没发生。我按下 Ctrl-Alt-Del 并重新启动。我得到的不是 grub,而是“缺少操作系统”。
使用 Arch Live USB 闪存驱动器,我安装了分区/boot/
( /dev/sda1
),然后发现我什至无法进入该grub
目录来查看或修复内容。cd /mnt/boot
和的输出ls -l
为:
EXT2-fs (sda1): error: ext2_get_inode: unable to read inode block - inode=10041, block=41221
ls: cannot access grub: Input/output error
total 13667
d????????? ? ? ? ? ? grub
-rw-r--r-- 1 root root 8411722 May 2 19:37 kernel26-fallback.img
-rw-r--r-- 1 root root 1764873 May 2 19:37 kernel26.img
drwx------ 2 root root 12288 May 2 19:12 lost+found
-rw-r--r-- 1 root root 1545080 Apr 22 18:32 System.map26
-rw-r--r-- 1 root root 2198640 Apr 22 18:32 vmlinuz26
因此,在一切进展顺利之后,尝试启动 Windows 似乎已经破坏了 grub。 (注意:连接第二个(Windows)驱动器但未在 中显示时menu.lst
,Arch 工作正常,启动正常,可以安装和读取另一个驱动器上的分区。)
我无法向您展示该menu.lst
文件,因为我看不到它。除了取消注释 Windows 条目并添加上面给出的两行之外,它没有对默认值进行任何更改。
输出fdisk -l
:
Disk /dev/sdb: 1000.2 GB...
...
Device Boot Start End Blocks Id System
/dev/sdb1 1 5 40131 de Dell Utility
/dev/sdb2 6 1327 10614784 7 HPFS/NTFS
/dev/sdb3 * 1327 63517 499537920 7 HPFS/NTFS
/dev/sdb4 63517 121602 466567168 f W95 Ext'd (LBA)
/dev/sdb5 63517 121602 466566144 7 HPFS/NTFS
Warning: invalid flag 0x0000 of partition table 5 will be corrected by w(rite)
Disk /dev/sda: 1000.2 GB...
...
Device Boot Start End Blocks Id System
/dev/sda1 1 5 40131 6 FAT16
/dev/sda2 6 1327 10614784 7 HPFS/NTFS
/dev/sdb3 * 1327 63517 499537920 7 HPFS/NTFS
/dev/sdb4 63517 121602 466567168 f W95 Ext'd (LBA)
我注意到 sda1-4 的分区信息与 sdb1-4 完全相同,但它们不应该是这样。
另外,我似乎无法从sda
except挂载任何内容/dev/sda1/
,其中包含启动文件和无响应的grub
目录。如果我这样做了,我就会被告知mount: you must specify the filesystem type
。如果我指定-t ntfs
,它会失败并说出来doesn't have a valid NTFS
。如果我指定-t ext4
(应该是这样),它会说它是错误的 fs 类型。
我想不出任何其他细节可以包括在内。
答案1
从 Live CD 运行以下命令:
/lib/udev/vol_id /dev/sda2
/lib/udev/vol_id /dev/sda3
/lib/udev/vol_id /dev/sda4
并观察输出。如果它无法识别分区类型,则最可能分区已损坏。