我正在尝试实现一些具有挑战性的事情。我有一个相当快且容量大的 USB 棒(SanDisk Ultra USB 3.0 16GB),我想以一种非常规的方式使用它:
- 我需要一个大小约为 1 GB 的分区,Windows 和 Linux 都可以读取该分区(您可能知道,以前版本的 Windows 与多分区 USB 驱动器配合得不是很好。或者我应该说,根本不能?它们只读取第一个分区而忽略其余部分)
- 我需要在设备上安装 Linux 发行版(最好是 Ubuntu)
- 我需要这根棒子能够在启用 EFI 的机器和传统的机器上启动。
将 Ubuntu 安装到磁盘非常简单,而且该驱动器的速度比我预期的要快。但我无法从非 UEFI 机器启动该驱动器。机器根本无法读取该驱动器,并且一直停留在全黑屏幕上。
所以,我的问题是:
我所尝试实现的目标有可能实现吗?
如果是的话,我需要特殊的分区方案吗?我可以进行全新安装。
我可以在 UEFI 和传统模式下安装 grub 吗?如果可以,该怎么做?
答案1
我所尝试实现的目标有可能实现吗?
是的!
如果是的话,我需要特殊的分区方案吗?我可以进行全新安装。
您将需要一个特殊的分区方案。您可以修改现有的方案以适应(您只需添加一个很小的 1MiB BIOS 启动分区),但我将在下面概述必要的分区方案。
我可以在 UEFI 和传统模式下安装 grub 吗?如果可以,该怎么做?
您只需为每种模式安装 GRUB。以下是针对 Ubuntu 和 Debian 的说明。
设置
以下是在 UEFI 和传统启动模式下安装 Ubuntu 的从头说明。这些说明适用于任何磁盘,而不仅仅是 USB 磁盘。
本指南假设你想从头开始您的磁盘为/dev/sdX
。请将其替换/dev/sdX
为您的磁盘块设备。
删除所有分区以获得干净的状态:
sgdisk --zap-all /dev/sdX
在您的磁盘上创建 GPT 分区表:
sgdisk --mbrtogpt /dev/sdX
您需要在闪存驱动器的开头创建一个 1GB 的分区,因此下面是创建 1GiB 分区的命令(注意:吉布而不是 GB):
sgdisk --new 3::+1G --typecode 3:0700 /dev/sdX
创建 BIOS 启动分区。这对于在传统启动中添加 EFI 支持是必要的。
sgdisk --new 1::+1M --typecode 1:ef02 /dev/sdX
创建 EFI 系统分区:
sgdisk --new 2::+50M --typecode 2:ef00 /dev/sdX
创建将安装 Ubuntu 的数据分区:
sgdisk --new 4::+ --typecode 4:8300 /dev/sdX
使用上面已设置的分区方案在闪存驱动器上安装 Ubuntu。
如果您不想使用图形化 Ubuntu 安装程序,才可以继续下一步。
如果您确实想使用图形化 Ubuntu 安装程序,请立即使用已创建的分区方案,然后返回此处并运行以下命令:
mount /dev/sdX4 /mnt mount --rbind /dev /mnt/dev mount --rbind /proc /mnt/proc mount --rbind /sys /mnt/sys chroot /mnt /bin/bash --login
由于您使用了图形安装程序,请跳至步骤 17。
/dev/sdX4
在我们刚刚创建的数据分区上为 Ubuntu 创建文件系统:mkfs.ext4 /dev/sdX4
将新的文件系统挂载到临时路径:
mount /dev/sdX4 /mnt
安装基本的 Ubuntu(替换
bionic
为您要安装的 Ubuntu 版本的代号):debootstrap bionic /mnt
设置新安装的 Ubuntu 的主机名(替换
HOSTNAME
为您想要的主机名):echo HOSTNAME > /mnt/etc/hostname
配置包源,写入以下内容
/mnt/etc/apt/sources.list
(替换bionic
为您安装的 Ubuntu 版本的代号):deb http://archive.ubuntu.com/ubuntu bionic main universe deb-src http://archive.ubuntu.com/ubuntu bionic main universe deb http://security.ubuntu.com/ubuntu bionic-security main universe deb-src http://security.ubuntu.com/ubuntu bionic-security main universe deb http://archive.ubuntu.com/ubuntu bionic-updates main universe deb-src http://archive.ubuntu.com/ubuntu bionic-updates main universe
准备登录新的Ubuntu系统:
mount --rbind /dev /mnt/dev mount --rbind /proc /mnt/proc mount --rbind /sys /mnt/sys
登录到您的新 Ubuntu 系统:
chroot /mnt /bin/bash --login
配置区域设置(根据需要修改):
locale-gen en_US.UTF-8 echo LANG=en_US.UTF-8 > /etc/default/locale
安装 Ubuntu 桌面的其余部分(
ubuntu-desktop
如果您不想要 Ubuntu 桌面,请用您想要的版本替换):dpkg-reconfigure tzdata ln -s /proc/self/mounts /etc/mtab apt update apt install -y ubuntu-desktop
安装 GRUB 以进行传统启动:
apt install -y grub-pc
设置 EFI 文件系统并安装 GRUB 以实现 EFI 启动:
apt install -y dosfstools mkdosfs -F 32 -n EFI /dev/sdX2 mkdir /boot/efi echo PARTUUID=$(blkid -s PARTUUID -o value /dev/sdX2) /boot/efi vfat nofail,x-systemd.device-timeout=1 0 1 >> /etc/fstab mount /boot/efi apt install -y grub-efi-amd64
配置 GRUB 以进行传统启动:
grub-install --target=i386-pc /dev/sdX
配置 GRUB 以进行 EFI 启动:
grub-install --target=x86_64-efi /dev/sdX
更新 initrd 文件:
update-initramfs -ckall
更新 GRUB 启动配置:
update-grub
通过退出 chroot 并卸载进行清理:
exit umount -R /mnt
现在,您应该已经在磁盘上安装了 Ubuntu,并且能够以 EFI 模式或传统模式启动。
/dev/sdX3
是您请求的数据分区。您可以根据需要使用与 Windows 兼容的文件系统对其进行格式化。
致谢
我从两个不同的来源整理出了本指南: