手上有台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了。
LALA
我什么都不卖了,告辞!
最新评论
5211314
能不能教我 一点不会