静看光阴荏苒
不管不顾不问不说也不念

Kimsufi独服改UEFI启动后安装系统无法引导解决办法

手上有台ks的机器前段时间发了个工单让客服给改成uefi引导了,改完之后我就发现救援系统都进不去了,重启还是进入原来的系统,邮箱也收不到救援系统的登录邮件,所以就又发了个工单,他们技术很快就解决了。

本以为就完事了,结果我像往常一样用debootstrap装完系统后发现新装的系统死活无法引导。。结合之前的现象,我感觉是这台机器的bios设置有问题。研究了半天,找到一个解决办法就是把引导顺序改一下,这里记录一下配置过程。

大部分步骤和我之前这篇文章是差不多的:https://lala.im/8318.html

有些相同的步骤这里就省略了,只记录一下不同的配置。首先还是进到救援系统,安装qemu-kvm,注意要安装ovmf,用于uefi引导:

apt -y update
apt -y install qemu qemu-kvm ovmf

下载debian11的livecd,这里建议选择一个带桌面环境的版本,我这里选择的是xfce:

wget https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-11.3.0-amd64-xfce.iso

启动livecd:

qemu-system-x86_64 \
-enable-kvm \
-nodefaults \
-cdrom /root/debian-live-11.3.0-amd64-xfce.iso \
-hda /dev/sda \
-hdb /dev/sdb \
-cpu host \
-smp 4 \
-m 8G \
-net nic \
-net user \
-vga std \
-vnc 127.0.0.1:0 \
-usbdevice tablet \
-k en-us \
-bios /usr/share/ovmf/OVMF.fd

现在你需要建立一个ssh隧道来连接到虚拟机的vnc,整个配置过程可以参考:https://lala.im/8123.html

在vnc内选择第一个菜单启动系统。这里如果不能正常引导的话,按esc键进入到ovmf的bios界面,里面有引导选项管理,选择从cd/dvd引导即可。

进到livecd之后有raid阵列就先停raid阵列,没有的话就用wipefs清理分区表,这里就不多说了。

机器有2块硬盘,这台机器我没打算用zfs,所以就组了个raid0。分区的话用fdisk分别给2块硬盘创建两个分区即可,一个efi分区给512m,另外一个分区就分配硬盘所有的空间。

efi分区的类型,在fdisk中的编号是1,raid分区的类型,在fdisk中的编号是29。

先给efi分区组一个raid1:

mdadm --create /dev/md0 --level=raid1 --raid-devices=2 --metadata=1.0 /dev/sda1 /dev/sdb1

另外一个就是根分区了,组raid0:

mdadm --create /dev/md1 --level=raid0 --raid-devices=2 /dev/sda2 /dev/sdb2

创建文件系统:

mkfs.vfat /dev/md0
mkfs.ext4 /dev/md1

挂载文件系统:

mount /dev/md1 /mnt
mkdir -p /mnt/boot/efi
mount /dev/md0 /mnt/boot/efi

使用debootstrap把debian11的基础系统载入到/mnt目录:

debootstrap --arch amd64 bullseye /mnt

chroot:

mount --rbind /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --rbind /dev /mnt/dev
chroot /mnt /bin/bash

这里省略掉一大坨配置,包括但不限于:配置存储库、配置网络、配置DNS、设置主机名、设置语言编码、设置时间,等等。。

配置fstab,先用blkid找到两个raid设备的uuid,当然你也可以直接用/dev/md0、/dev/md1这样的设备名来配置,这里按个人喜好来即可。之后编辑fstab的配置文件:

nano /etc/fstab

像这样配置即可:

UUID=B292-CC8B /boot/efi vfat rw,relatime,errors=remount-ro 0 0
UUID=9ac08574-e3f5-46cb-a19f-ae154cbd596d / ext4 defaults 0 0

安装内核/grub2/mdadm:

apt -y install linux-image-amd64 grub-efi-amd64 mdadm

安装grub,这里不要带removable参数:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --no-floppy --no-nvram

编辑grub配置文件:

nano /etc/default/grub

加入net.ifnames=0的内核启动参数,目的是让内核使用eth0这样的传统接口名:

GRUB_CMDLINE_LINUX_DEFAULT="quiet net.ifnames=0 biosdevname=0"

更新grub配置:

update-grub

[重要]在给新系统做完所有配置后,在ks的后台执行一遍硬重启,这时候ks会重新启动一个救援系统,登录到救援系统内,执行下面的命令查看当前的引导:

efibootmgr -v

可以看到当前的引导顺序,这个引导顺序是进不去我们刚装的系统的:

修改一下:

efibootmgr -o 000B,000C,0001,0002,0000

现在回到ks的后台,把引导改为从硬盘启动,再次重启就ok了。

赞(6)
未经允许不得转载:荒岛 » Kimsufi独服改UEFI启动后安装系统无法引导解决办法
分享到: 更多 (0)

评论 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    你好,我订购了一台godaddy vps通过修改vmlinuz和initrd.img文件实现了无需挂载iso即可安装centos7的目的,但是竟然只能在欧洲节点的vps上安装,美国和新加坡的vps用我的这个方法安装就出错,您能帮我看一下吗?谢谢!

    autis2年前 (2022-05-12) Google Chrome 101.0.4951.41 Google Chrome 101.0.4951.41 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 可以尝试下这个方法:https://lala.im/7237.html

      LALA2年前 (2022-05-17) Google Chrome 86.0.4240.198 Google Chrome 86.0.4240.198 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿