我有一张CD是从ISO文件创建的,用于通过plop linux安装Ubuntu的自定义版本。
光盘工作正常,但我想使用可引导的USB驱动器。我使用命令dd尝试创建可启动的USB:
dd if=filename.iso of=/dev/sdb1 bs=4k
现在,这确实复制了文件并使USB可启动,但出现错误“缺少操作系统”
有任何想法吗?
我有一张CD是从ISO文件创建的,用于通过plop linux安装Ubuntu的自定义版本。
光盘工作正常,但我想使用可引导的USB驱动器。我使用命令dd尝试创建可启动的USB:
dd if=filename.iso of=/dev/sdb1 bs=4k
现在,这确实复制了文件并使USB可启动,但出现错误“缺少操作系统”
有任何想法吗?
Answers:
好了,经过一些研究,我找到了解决方案,并将逐步进行研究。问题是双重的。
插入USB闪存驱动器,并使用以下命令确定其安装的设备:
sudo fdisk -l
这次对我来说是/ dev / sdc1,所以我将以它为例。
挂载设备
umount /dev/sdc1
不确定是否有必要,但是我以FAT32格式格式化了驱动器,以防万一
sudo mkdosfs -n 'USB-Drive-Name' -I /dev/sdc -F 32
现在我的ISO使用的是isolinux,而不是syslinux。我知道它可以与CD一起使用,所以我发现我需要调用isohybrid命令,该命令允许BIOS从硬盘驱动器识别ISO。
isohybrid filename.iso
您可以在此处找到有关此命令的更多信息,但这是消息“ Missing Operating System”的原因。已解决了第一个问题,但现在它说“ isolinux.bin丢失或损坏”。
下一步是复制iso。我的第二个问题在这里,我要复制到分区sdc1,而不是设备sdc。
sudo dd if=filename.iso of=/dev/sdc bs=4k
这似乎工作得很好,但是在获得最新修复的论坛上,建议在拔下设备之前执行以下操作:
sync
sudo eject /dev/sdc
mkdosfs
做个假设,我认为该命令可能不是必需的,因为iso已经位于其上的文件系统(可能包括MBR,不确定)已复制到块设备的开头。伙计,这isohybrid
是一个很酷的命令,不知道!
dd
步骤#5中的命令将使用ISO的内容清除新创建的文件系统。
pro
Linux,所以谢谢)
这是SanDisk USB记忆棒或未格式化为FAT32的记忆棒的常见问题。
如果都不是,那肯定是您的棒分区顺序或syslinux.cfg文件有问题。
isohybrid
可能并不总是有效。例如,我有一个带FreeDOS的.iso,isohybrid无法在其中找到一些重要文件(我不知道它们是否应该由syslinux(我也使用过)或其他东西放置在该文件中)。我在这里提出了几种选择。
1)在此安装另一个引导程序,例如GRUB。在这里解释:
“假设您的USB记忆棒的第一个分区是FAT32,而其分区是/ dev / sdy1”(我grub2
在Fedora Core上安装过,因此我对命令做了一些更改):
# mkdir -p /mnt/usb ; mount /dev/sdy1 /mnt/usb
# grub2-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy
# grub2-mkconfig -o /mnt/usb/boot/grub2/grub.cfg
# optional, backup config files of grub.cfg
# mkdir -p /mnt/usb/etc/default
# cp /etc/default/grub /mnt/usb/etc/default
# cp -a /etc/grub.d /mnt/usb/etc
# sync; umount /mnt/usb
2)FreeDOS Wiki 在此处提供了GRUB和syslinux的复合方法(尽管我不了解它们的启动方式grub>
-直到那个阶段我都无法从USB引导)。
3)这是一篇可能有用的文章-它说:“只要command.com,kernel.sys,syslinux.cfg,ldlinux.sys和fat32lba.bss文件位于驱动器的根目录以及MBR和引导中不重写扇区,驱动器应保持可引导状态。
4)在此说明了如何使用syslinux引导程序生成可引导的.iso文件。他们甚至不使用同质杂交。不幸的是,那并没有帮助我(也许是因为syslinux)。
5 *)通过使用Windows程序wine
。我尝试过rufus,但是没有用,找不到设备。
我警告您,不幸的是我无法解决此问题,我的设备无法启动,但是我希望这对其他人(以及那些不想在usb上安装Linux的人)有用。chtaube生成的usb图像虽然对我有用,所以我认为这些方法是正确的。
UPD:第三种方法确实有效(对自定义安装文件进行了更正)。
UPD2 :(固定链接)。问题isohybrid
可能是因为iso和我的系统上的isolinux.bin版本不同。通过重新编译ISO genisoimage
的建议在这里:
genisoimage -l -r -J -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o fd11new.iso fd11new
有一些问题也是如此,他们通过该方法解决了这里 genisoimage之前:
cp /boot/extlinux/*.c32 fd11new/isolinux/
extlinux --install /boot/isolinux
==结束UPD2 ==
您可以使用bootiso
Utility来安全地做到这一点:
bootiso -d /dev/sdb filename.iso
bootiso将检查所选设备/dev/sdb
是否通过USB连接,如果没有,则失败,这是一个很大的安全性。如果您的系统上仅连接了一个USB驱动器,它也会自动检测USB设备,请实际操作:
如果要安装syslinux引导程序来避免@xsdf提到的问题,请使用-b
选项:
bootiso -b -d /dev/sdb filename.iso
要安装它:
curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O
chmod +x bootiso