各位晚上好!我已经为此工作了一段时间,但无法弄清楚。我只是想在附加媒体上安装引导加载程序的工作引导代码,但无法弄清楚!!!我已经尝试过 grub legacy、lilo 和 grub2... 主机系统的驱动器列为 /dev/sda*,目标附加媒体列为 /dev/sdb* 并安装到 /mnt/target。
使用 grub legacy,我试图使用另一个已经安装了它的媒体(/dev/sdc*、/mnt/source)并尝试了一些肮脏的黑客攻击,比如:
dd if=/mnt/source/boot/grub/stage1 of=/dev/sdb bs=446 count=1
dd if=/mnt/source/boot/grub/stage2 of=/dev/sdb bs=512 seek=1
这实际上会启动到一个 grub 界面,您可以在其中输入以下内容:
root (hd0,0)
setup (hd0)
我没有收到任何错误消息,但是 grub 会启动到屏幕上的垃圾然后停止。
使用 lilo,我实际上已经安装了软件包并尝试设置(在创建 lilo.conf 之后):
default=Test1
timeout=10
compact
prompt
lba32
backup=/mnt/target/boot/lilo/MBR.hda.990428
map=/mnt/target/boot/lilo/map
install=/mnt/target/boot/lilo/boot.b
image=/mnt/target/boot/vmlinuz
label=Test1
append="quiet ... settime"
initrd=/mnt/target/boot/ramdisks/working.gz
然后从提示符执行以下命令:
$ lilo -C /mnt/target/boot/lilo/lilo.conf -b /dev/sdb
Warning: /dev/sdb is not on the first disk
Fatal: Sorry, don't know how to handle device 0x0701
使用 grub2,我尝试了类似的方法:
grub-mkconfig -o /mnt/target/boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.11.0-12-generic
Found initrd image: /boot/initrd.img-3.11.0-12-generic
Found memtest86+ image: /boot/memtest86+.bin
No volume groups found
done
我什至无法正确或在正确的位置生成 grub.cfg,所以我放弃了这个...上面列出的条目是针对主机系统的,而不是针对目标系统的。
我可以提供你们需要的任何其他信息来帮助解决这个问题。
-更新-
在与媒体合作了一段时间后,我决定运行“fdisk -l”并得到以下信息:
Partition 1 has different physical/logical beginnings (non-Linux?):
phys(0,32,33) logical(0,37,14)
Partition 1 has different physical/logical endings:
phys(62,53,55) logical(336,27,19)
我还应该注意,当我尝试挂载分区时,我总是会收到一条消息,指出:
EXT4-fs (sdb1): couldn't mount as ext3 due to feature incompatibilities
不确定这是否仅特定于busybox,或者是否与fdisk 输出有关。无论如何,我不知道 fdisk 信息是否表明磁盘几何结构可能存在问题,可能导致所有这些引导加载程序无法工作。