我有一个装有 overclockix(基于 debian)的 USB 驱动器,我已从该驱动器启动系统。我正在尝试找出一种方法将其安装到连接的 SATA SSD 驱动器上。我尝试了以下操作:
我使用 fdisk 在 SSD 上创建了以下分区:
/dev/sda1 /boot ext2 (bootable)
/dev/sda2 / ext4
/dev/sda3 /var ext4
/dev/sda4 /home ext4
/dev/sda5 none swap
partprobe /dev/sda
我在每个分区上运行了 mkfs。并在 sda5 上运行了 mkswap。
然后我挂载了分区:
mount /dev/sda2 /mnt
mkdir /mnt/boot /mnt/var /mnt/home
mount /dev/sda1 /mnt/boot
mount /dev/sda3 /mnt/var
mount /dev/sda4 /mnt/home
然后我从 USB 复制了文件:
rsync -avp --exclude /proc --exclude /boot --exclude /home --exclude /var --exclude /sys --exclude /dev --exclude /run / /mnt
rsync -avp /var /mnt/var
rsync -avp /boot /mnt/boot
rsync -avp /home /mnt/home
然后我绑定安装的 proc、sys、run 和 dev:
mkdir /mnt/proc /mnt/run /mnt/sys /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /dev /mnt/dev
mount --bind /run /mnt/run
然后我 chroot 到 /mnt:
chroot /mnt /bin/bash
我创建了一个新的 fstab:
blkid >> /etc/fstab
vi /etc/fstab
UUID=<UUID> <mpoint> <type> defaults(or sw) 0 2
然后我运行 grub-install /boot /dev/sda,没有返回任何错误。
我退出了 chroot,卸载了分区,移除了 USB 并重新启动。
我以为这会创建一个与 USB 设备上的文件系统几乎相同的文件系统,该文件系统将使用 grub 启动。但是,我无法从驱动器启动。我认为这与 UEFI 有关,但我不太清楚还需要做什么。
任何帮助都将不胜感激,谢谢。
答案1
将启动分区格式化sda2
为 Fat32,它将用作 ESP 分区
挂载分区并替换mount /dev/sda1 /mnt/boot
为:
mount /dev/sda1 /mnt/boot/efi
跑步:
for i in /sys /proc /dev; do mount --bind $i /mnt$i; done
让互联网正常工作然后更改根目录:
cp /etc/resolv.conf /mnt/etc/
chroot /mnt /bin/bash
安装grub
:
apt-get install --reinstall grub-efi
update-grub
exit
for i in /sys /proc /dev; do umount /mnt$i; done
卸载分区并重新启动
答案2
使用 UEFI 启动
让我稍微扩展一下这一点,以便其余的答案有意义:
在旧式 IBM 兼容 PC 上,启动时会加载固件。这通常是 BIOS 固件,它会在硬盘上查找 MBR 记录,读取它,执行引导扇区、第一阶段引导加载程序等等。启动 Windows 或 Linux 时也是如此。您只是会得到不同的引导加载程序。或者甚至是多个引导加载程序,例如当您从 grub 链接 Windows 时。
BIOS 是 1985 年左右出现的基本系统,现代 PC 上有些缺乏。我们使用它只是为了向后兼容。
它后来被 EFI 取代了。EFI 是明确定义并且功能更强大。它不使用引导扇区。相反,它查看谷氨酰胺磷酸酶分区磁盘,找到EFI 系统分区并从中读取文件。通常包括以下内容boot.efi
。*1
EFI 系统分区必须必须存在才能启动。它必须是您的 EFI 实现能够理解的格式。有一个文件系统是 EFI 必须理解的,而这个文件系统恰好与 FAT32 100% 兼容。*2
您的设置显示您创建了多个分区,但没有一个是 EFI 系统分区。我认为您正在遵循 BIOS、coreboot 或 CSM 启动的旧指南。
关于背景以及为什么它不起作用就说这么多,但这并没有解答主要问题。
如何使用 UEFI 启动将 Debian Linux 从实时系统安装到 SSD
从wiki.debian.org/UEFI:
“Debian 安装grub-efi用于其 EFI 引导加载程序”。
这是一个 .efi 文件,它应该安装在您的 EFI 系统分区上。您没有。重新开始,使用正确类型(标识符C12A7328-F81F-11D2-BA4B-00A0C93EC93B
)对磁盘进行分区。将其格式化为 FAT32。阅读 grub-efi 并确保您的内核启用了 UEFI。然后在正确的时间发出apt-get install --reinstall grub-efi-amd64
或尝试使用efibootmgr
。
*1:注意:Grub2 与 EFI 兼容。
*2:一个已知例外:Apple EFI 也支持 HFS。根据要求,它也能理解正常格式。