如何在 Linux 上使用命令行从可启动 ISO 创建可启动 USB?

xsd*_*sdf 51 linux iso-image bootable-media dd isolinux

我有一张从 ISO 文件创建的 CD,我用它来通过 plop linux 安装自定义版本的 Ubuntu。

cd 工作正常,但我想改用可启动的 USB 驱动器。我使用命令 dd 尝试创建可启动 USB:

dd if=filename.iso of=/dev/sdb1 bs=4k
Run Code Online (Sandbox Code Playgroud)

现在这确实复制了文件并使 USB 可启动,但我收到错误“缺少操作系统”

有任何想法吗?

xsd*_*sdf 59

好的,经过一番研究,我找到了一个解决方案,我将一步一步地进行。问题是双重的。

  1. 插入 USB 闪存驱动器并使用以下命令确定它安装的设备:

    sudo fdisk -l
    
    Run Code Online (Sandbox Code Playgroud)

    这一次对我来说是 /dev/sdc1,所以我会用它作为我的例子。

  2. 卸载设备

    umount /dev/sdc1
    
    Run Code Online (Sandbox Code Playgroud)
  3. 不确定是否有必要,但我在 FAT32 中格式化了驱动器,以防万一

    sudo mkdosfs -n 'USB-Drive-Name' -I /dev/sdc -F 32
    
    Run Code Online (Sandbox Code Playgroud)
  4. 现在我的 ISO 使用的是 isolinux 而不是 syslinux。我知道它适用于 CD,所以我发现我需要调用 isohybrid 命令,它允许 BIOS 从硬盘驱动器识别 ISO。

     isohybrid filename.iso
    
    Run Code Online (Sandbox Code Playgroud)

    您可以在此处找到有关此命令的更多信息,但这是消息“缺少操作系统”的原因。第一个问题已解决,但现在显示“isolinux.bin 丢失或损坏”

  5. 下一步是复制iso。我的第二个问题就在这里,我正在复制到分区 sdc1,而不是设备 sdc。

    sudo dd if=filename.iso of=/dev/sdc bs=4k
    
    Run Code Online (Sandbox Code Playgroud)

    这似乎工作得很好,但我得到最后修复的论坛,建议在拔下设备之前执行以下操作:

    sync
    sudo eject /dev/sdc
    
    Run Code Online (Sandbox Code Playgroud)

  • 第 3 步是不必要的;第 5 步中的 `dd` 命令将用 ISO 的内容删除新创建的文件系统。 (7认同)
  • 这是一种检查 dd 进度的方法:http://unix.stackexchange.com/a/11264/13011。 (3认同)
  • 在这里做一个假设,我认为 `mkdosfs` 命令可能不是必需的,因为 iso 上已经有一个文件系统(可能包括一个 MBR,不确定),它被复制到块设备的开头。伙计,`isohybrid` 是一个很酷的命令,不知道它! (3认同)

归档时间:

查看次数:

151007 次

最近记录:

7 年,6 月 前