我已将 Manjaro 安装在 U 盘上以便随身携带。但是,我只能在我用来安装的机器上从它启动。在其他 PC 上,BIOS 或 UEFI 无法将驱动器识别为可引导驱动器。
该设备/dev/sda
有一个格式化/dev/sda1
为ext4
. 那里有一个/boot/
目录,/boot/initramfs-6.5-x86_64.img
里面有其他文件。该分区有boot
标志。
$ mount
显示以下内容:
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sys on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
dev on /dev type devtmpfs (rw,nosuid,relatime,size=8158880k,nr_inodes=2039720,mode=755,inode64)
run on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
/dev/sda1 on / type ext4 (rw,noatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=36,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=14490)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,nosuid,nodev,relatime,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,size=8175772k,nr_inodes=1048576,inode64)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=1635152k,nr_inodes=408788,mode=700,uid=1000,gid=1001,inode64)
portal on /run/user/1000/doc type fuse.portal (rw,nosuid,nodev,relatime,user_id=1000,group_id=1001)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1001)
$ df -Th
节目
Filesystem Type Size Used Avail Use% Mounted on
dev devtmpfs 7.8G 0 7.8G 0% /dev
run tmpfs 7.8G 1.5M 7.8G 1% /run
/dev/sda1 ext4 458G 103G 332G 24% /
tmpfs tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs tmpfs 7.8G 96K 7.8G 1% /tmp
tmpfs tmpfs 1.6G 132K 1.6G 1% /run/user/1000
# blkid
(具有提升的特权)回报
/dev/sda1: UUID="419d4f22-7fd6-42ea-a273-4e54028197ce" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="b1e4001d-01"
# fdisk -l /dev/sda
报告
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SSD 870 EVO 500G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 33553920 bytes
Disklabel type: dos
Disk identifier: 0xb1e4001d
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 976773119 976771072 465.8G 83 Linux
最后,如果它甚至相关的话,# gdisk -l /dev/sda
写道
GPT fdisk (gdisk) version 1.0.9.1
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Disk /dev/sda: 976773168 sectors, 465.8 GiB
Model: SSD 870 EVO 500G
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): DC55B4BD-D878-4752-9414-E4CE82C33258
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2029 sectors (1014.5 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 976773119 465.8 GiB 8300 Linux filesystem
现在,如何使 USB 记忆棒更加便携?是否值得将 MBR 转换为 GPT,如此处所述?我不想重新安装操作系统。
编辑: 由于我现在正在使用 USB 记忆棒,因此我无法立即测试任何建议。我会尽力在 24 小时内尝试。
您的其他 PC 很可能具有 UEFI,但不具备 BIOS 兼容性功能(或者因为它被开箱即用地禁用,或者因为某些现代系统完全不再支持它)。
“工作”PC 正在 BIOS 模式下启动 USB 记忆棒(UEFI 样式固件将其称为“传统模式”或“CSM 模式”),因为这是您的驱动器当前包含启动代码的唯一模式。这是可行的,因为 BIOS 启动根本不会查看任何文件系统;它直接从特定扇区加载引导加载程序。
UEFI 永远不会将该驱动器识别为本机可启动驱动器,因为该驱动器没有任何具有可替代 EFI 系统分区的兼容文件系统的分区。
对于本机 UEFI 引导,驱动器不一定需要进行 GPT 分区,但它确实需要有一个 FAT32 分区,固件可以从中加载
BootX64.efi
引导加载程序的文件。(有些 PC 还可以读取 NTFS 或 exFAT,但标准 UEFI 文件系统(也是唯一保证正常工作的文件系统)是 FAT32。)这与拥有一个单独的
/boot
分区的目的大致相似(当真正的根文件系统对于引导加载程序来说太复杂时);事实上,它通常安装在/boot,有时安装在/efi。所以你的步骤是:
将其重新分区,使其与现有分区一起拥有一个小的 FAT32 分区(至少是 /boot 文件当前总大小的 2 倍)。在全新安装期间,它通常位于开头,但也可以放置在末尾。
如果保留 MBR 分区,则 fdisk 中的分区类型应设置为
EF
。如果您决定使用
gdisk
转换为 GPT 分区,gdisk 中的类型应该是EF00
(gdisk 实际 EFI GUID 的缩写)。将所有文件从当前 /boot 移动到新分区,并通过 /etc/fstab 将其配置为挂载在 /boot 上。
在新分区中安装与 UEFI 兼容的引导加载程序
EFI\BOOT\bootx64.efi
(从 Linux 角度来看,即 /boot/EFI/boot/bootx64.efi)。例如,使用 GRUB,指定.efi 文件
--target=x86_64-efi
并将其放置在 UEFI 期望的位置。--removable
对于 systemd-boot,两者都已经是默认值。UEFI 无法从文件系统引导
ext4
。您的 USB 记忆棒需要有一个使用 FAT 文件系统格式化的EFI 系统分区。
成功引导的系统
ext4
要么是基于传统 BIOS 的,要么是启用了 CSM 的。