我已经将 Manjaro 安装在 USB 上以便随身携带。但是,我只能在安装它的那台机器上从它启动。在其他 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 小时内尝试它们。
答案1
您的其他电脑很可能有 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,指定
--target=x86_64-efi
并将--removable
.efi 文件放置在 UEFI 所需的位置。使用 systemd-boot,这两者都已是默认设置。