在我们使用工作机链接ipmi进行安装操作系统的时候,经常会遇到一个操作系统安装好几个小时的问题,今天给大家分享一种解决方案
# 创建1GB大小的空镜像
truncate -s 1g memdisk.img
# 加载镜像到驱动器
kpartx -a memdisk.img
# 分区格式化设置引导
parted -s /dev/loop0 mklabel msdos
parted -s /dev/loop0 mkpart primary fat32 2048s 100%
parted -s /dev/loop0 set 1 boot on
# 格式化为FAT 32
mkfs.vfat -F 32 /dev/loop0p1
mount /dev/loop0p1 /mnt
# 安装grub
grub-install --force --removable --no-floppy --target=i386-pc --boot-directory=/mnt/boot /dev/loop0
grub-install --force --removable --no-floppy --target=x86_64-efi --boot-directory=/mnt/boot --efi-directory=/mnt
# 复制memdisk到/mnt根目录
curl -LO https://mirrors.kernel.org/pub/linux/utils/boot/syslinux/Testing/6.04/syslinux-6.04-pre1.tar.gz
tar -xf syslinux-6.04-pre1.tar.gz
cp syslinux-6.04-pre1/bios/memdisk/memdisk /mnt
# 下载iso镜像到根目录
curl -Lo /mnt/memdisk.iso 'https://drive.google.com/uc?export=download&id=19UMiysyARdK0opWA2no9tfRd0TZn63hY'
cp memdisk.iso /mnt
# grub引导菜单 (注意initrd16 /memdisk.iso这里写实际镜像名称)
cat <<EOF> /mnt/boot/grub/grub.cfg
set timeout=10
set default=0
menuentry "Bootable ISO Image: memdisk.iso" {
insmod part_msdos
insmod fat
set root='(hd0,msdos1)'
linux16 /memdisk iso
initrd16 /memdisk.iso
}
EOF
# 卸载/mnt 卸载镜像 最高压缩镜像
umount -l /mnt
kpartx -d memdisk.img
gzip -k --best memdisk.img
# DD 镜像到硬盘启动 测试
dd if=memdisk.img of=/dev/sdb bs=512 status=progress
现在这个/dev/sdb硬盘就会把iso加载到内存运行了 实际内存要大 不然会因为内存资源不足 而出错
我们进入自带的内存救援系统 把这个包含ISO的硬盘镜像DD到硬盘
然后再从硬盘启动,从而进入ISO引导