如何手动创建 Ubuntu LiveUSB

如何手动创建 Ubuntu LiveUSB

我正在尝试做的事情:

  1. 制作一个具有两个分区的可启动 USB(用于数据的可启动 FAT32 和 NTFS)。(完成)
  2. 将 GRUB2 安装到 FAT32 分区。(完成)
  3. 使 FAT32 分区具有多重引导功能,并持久安装 Ubuntu。

最后一个应该不是那么难,但现在我的头快要爆炸了……我找不到任何地方关于如何在一个分区而不是在根目录中(例如在 ubuntu12.04 文件夹中)永久安装 Ubuntu 的分步说明。目前,我从互联网上收集了信息,以下是我所做的:

  1. 将 Ubuntu 12.04 LiveCD ISO 解压到/ubuntu12.04目录中。
  2. 使用它创建/ubuntu12.04/casper-rw文件。ddmkfs.ext2
  3. 添加menuentrygrub.cfg

    menuentry "Run Ubuntu 12.04.2 Live" {
        linux   /ubuntu12.04/casper/vmlinuz  file=/ubuntu12.04/preseed/ubuntu.seed boot=casper persistent rw quiet splash --
        initrd  /ubuntu12.04/casper/initrd.lz
    }
    

但结果总是一样的:

(initramfs): Unable to find a medium containing a live file system.

我应该把casper-rw文件放在哪里才能让 initramfs 找到它?或者放在哪里都可以,只要能得到我需要的东西。

答案1

对于 Ubuntu 12.04.2,内核是/casper/vmlinuz.efi。请注意,.efi是最近添加的。

另外,您不需要提取 CD 文件,您可以直接从 启动.iso。这是我用于 USB 多重启动的模板:

menuentry "YOUR TITLE" {
    insmod ntfs
    insmod iso9660
    loopback loop /distros/FILENAME.ISO
    linux (loop)/casper/vmlinuz.efi persistent boot=casper iso-scan/filename="/distros/FILENAME.ISO" noeject noprompt splash toram --
    initrd (loop)/casper/initrd.lz
}

这样,我可以将所有发行版/版本作为原始 .iso 文件保存在/distrosNTFS 数据分区内的目录中。Grub2 安装到 MBR,其/boot文件(包括上面的手写文件/boot/grub/grub.cfg)也安装在数据分区中。Grub2 安装为:

sudo grub-install --no-floppy --root-directory="/PATH/TO/MOUNTED/USB" "/dev/sdX"

答案2

根据我的经验,使用 grub 手动创建启动盘非常脆弱。如果在 efi 系统上创建,则无法在 bios 系统上运行,并会出现错误

error:invalid arch independent ELF magic.
grub rescue>

在仅 efi 的系统上,bios bootoaders可能不行。最好同时使用 grub-efi 和 syslinux,就像自动创建的 live CD 一样。

你可能想这样做

a) 防止大量的文件夹和文件弄乱你的 U 盘,导致 U 盘无法用于其他用途

b)多重引导


我使用的技巧如下:将 grub 放入:

sudo grub-install --removable --root-directory=/path/to/mount /dev/sdx

似乎--removable是需要的,否则它会在某些带有 efi 的计算机上产生有趣的安装错误

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

这将创建一个boot和一个efi文件夹。在文件夹内安装 syslinux boot(与标准 live cd 不同):

cd /path/to/mount
sudo syslinux --directory boot/syslinux --install /dev/sdx

将 ubuntu iso 解压到文件夹 ubuntu ( /path/to/mount/ubuntu) 编辑/path/to/mount/boot/grub/grub.cfg以包含:

menuentry "Ubuntu" {
    set gfxpayload=keep
    linux   /ubuntu/casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash live-media-path=/ubuntu/casper --
    initrd  /ubuntu/casper/initrd.lz
}

然后设置 syslinux:vesamenu.c32从 iso 中的 isolinux 目录复制以/path/to/mount/boot/syslinux/vesamenu.c32 创建/path/to/mount/boot/syslinux/slax.cfg包含以下内容:

PROMPT 0
TIMEOUT 90
DEFAULT /boot/syslinux/vesamenu.c32


LABEL Ubuntu
MENU LABEL Ubuntu
    kernel  /ubuntu/casper/vmlinuz.efi  
    append initrd=/ubuntu/casper/initrd.lz boot=casper live-media-path=/ubuntu/casper quiet splash --

相关内容