USB 驱动器上缺少操作系统

jpy*_*ams 3 boot grub2 usb ubuntu-minimal

我正在尝试在 USB 驱动器上安装最小的 Ubuntu 安装(完整安装,而不是实时启动)。但是,安装后,当我尝试从 USB 启动时,出现“缺少操作系统”。

我认为 可能有问题grub,但我不知道如何解决。我已经安装到 USB 之前搞砸了主grub文件,所以我不想这样做。

这是fdisk -l有关 USB 驱动器的输出:

Disk /dev/sdc: 4027 MB, 4027580416 bytes
124 heads, 62 sectors/track, 1023 cylinders, total 7866368 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x73a571aa

Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     7616511     3807232   83  Linux
/dev/sdc2         7618558     7864319      122881    5  Extended
/dev/sdc5         7618560     7864319      122880   82  Linux swap / Solaris
Run Code Online (Sandbox Code Playgroud)

此外,根据此输出,我的引导分区可能未标记为可引导。请帮忙!

更新

我遵循了Terrance的建议,因此 /dev/sdc1 现在被标记为引导分区。但是,驱动器仍然无法启动。

我不是在问如何将 Ubuntu 安装到 USB 驱动器,我是在寻求帮助修复我已经安装了 Ubuntu 的 USB。

更新

Terrance更新后的答案为我解决了这个问题。请注意,为了让它在我的 USB 上工作,我必须创建一个/boot/extlinux/syslinux.cfg包含以下内容的文件:

PROMPT 0
TIMEOUT 50
DEFAULT arch

LABEL arch
        LINUX ../vmlinuz-4.4.0-45-generic
        APPEND root=UUID=[The USB UUID]
        INITRD ../initrd.img-4.4.0-45-generic
Run Code Online (Sandbox Code Playgroud)

Ter*_*nce 5

您可以通过在终端窗口中键入以下内容,在 USB 驱动器的第一个分区上设置引导标志:

sudo parted /dev/sdc set 1 boot on
Run Code Online (Sandbox Code Playgroud)

也可以尝试安装extlinuxsyslinux-common用于把USB驱动器上的引导文件。从终端输入:

sudo apt install extlinux syslinux-common
Run Code Online (Sandbox Code Playgroud)

安装完成后,插入 USB 驱动器并输入:

sudo mkdir -p /mnt/USB/boot/extlinux
sudo extlinux --install /mnt/USB/boot/extlinux
Run Code Online (Sandbox Code Playgroud)

或任何挂载点到您的 USB 驱动器,例如 /media/username/1001-BAAB/boot/extlinux

然后您应该mbr使用以下命令将代码安装到 USB 驱动器: 别担心,这不会覆盖 USB 驱动器。

dd if=/usr/lib/EXTLINUX/mbr.bin of=/dev/sdc bs=440 count=1
Run Code Online (Sandbox Code Playgroud)

确保这/dev/sdc是您的 USB 驱动器。

更多信息可以在这里找到:http : //shallowsky.com/linux/extlinux.html

从 extlinux 的联机帮助页:

NAME
       extlinux  -  install  the SYSLINUX bootloader on a ext2/ext3/ext4/btrfs
       filesystem
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!