Linux mkbootdisk 命令
注意:mkbootdisk是Red Hat/CentOS/Fedora等发行版中的工具,用于创建系统引导盘。现代系统更多使用GRUB、EFI或专门的恢复工具,但mkbootdisk在某些传统场景中仍有价值。
命令简介
mkbootdisk是一个用于创建系统引导盘的工具,主要用在Red Hat系Linux发行版中。它会创建一个可引导的磁盘或映像,包含当前运行内核的初始内存磁盘(initrd)和引导加载程序配置,用于系统故障时的恢复。
命令语法
mkbootdisk [选项] 内核版本
常用选项
| 选项 |
说明 |
--version |
显示版本信息 |
--noprompt |
不提示用户插入磁盘 |
--verbose |
详细输出模式 |
--device <设备> |
指定输出设备(默认为/dev/fd0) |
--iso |
创建ISO映像文件 |
--size <大小> |
指定映像大小(默认为1440) |
--rootdir <目录> |
指定根目录路径 |
--kernelargs <参数> |
向内核传递额外参数 |
--help |
显示帮助信息 |
使用示例
1. 创建软盘引导盘
# 检查当前内核版本
uname -r
# 创建当前内核的引导软盘
sudo mkbootdisk `uname -r`
# 或者明确指定内核版本
sudo mkbootdisk 3.10.0-1160.el7.x86_64
2. 不提示直接创建引导盘
# 跳过插入磁盘的提示
sudo mkbootdisk --noprompt `uname -r`
# 指定设备(如果软驱不是/dev/fd0)
sudo mkbootdisk --device /dev/fd1 `uname -r`
3. 创建ISO映像文件
# 创建ISO格式的引导映像
sudo mkbootdisk --iso --device /tmp/bootdisk.iso `uname -r`
# 指定ISO映像大小(单位:KB)
sudo mkbootdisk --iso --size 2880 --device /tmp/bootdisk.iso `uname -r`
# 创建后刻录到CD/DVD
sudo wodim -v dev=/dev/sr0 /tmp/bootdisk.iso
4. 详细模式创建
# 显示详细创建过程
sudo mkbootdisk --verbose `uname -r`
# 输出示例:
# Insert a disk in /dev/fd0. Press return to continue or ^C to abort.
# Formatting /dev/fd0...
# Copying /boot/vmlinuz-3.10.0-1160.el7.x86_64...
# Copying /boot/initramfs-3.10.0-1160.el7.x86_64.img...
# Setting up boot loader...
5. 指定根目录创建引导盘
# 从指定目录读取内核文件(用于恢复环境)
sudo mkbootdisk --rootdir /mnt/sysimage `uname -r`
6. 完整引导盘创建脚本
#!/bin/bash
# 引导盘创建脚本
KERNEL_VERSION=$(uname -r)
DATE=$(date +%Y%m%d)
BACKUP_DIR="/boot/backup"
ISO_FILE="$BACKUP_DIR/bootdisk-$KERNEL_VERSION-$DATE.iso"
# 创建备份目录
mkdir -p $BACKUP_DIR
echo "当前内核版本: $KERNEL_VERSION"
echo "正在创建引导盘ISO映像..."
# 创建ISO映像
if sudo mkbootdisk --iso --device $ISO_FILE $KERNEL_VERSION; then
echo "引导盘创建成功: $ISO_FILE"
echo "文件大小: $(du -h $ISO_FILE | cut -f1)"
# 创建软盘版本(如果有软驱)
if [ -e /dev/fd0 ]; then
echo "正在创建软盘引导盘..."
sudo mkbootdisk --noprompt $KERNEL_VERSION
fi
# 验证ISO文件
echo "验证ISO文件..."
file $ISO_FILE
else
echo "引导盘创建失败!"
exit 1
fi
引导盘内容结构
mkbootdisk创建的引导盘包含以下关键文件:
| 文件 |
作用 |
vmlinuz-* |
压缩的Linux内核 |
initrd-*.img |
初始内存磁盘,包含启动所需的模块和工具 |
syslinux.cfg |
引导加载程序配置文件 |
ldlinux.sys |
SYSLINUX引导加载程序 |
使用引导盘恢复系统
1. 从软盘引导
# BIOS设置从软盘启动
# 插入mkbootdisk创建的软盘
# 系统将从软盘引导,进入恢复模式
# 常见恢复选项:
# 1. 进入单用户模式(无需密码)
# 2. 检查和修复文件系统
# 3. 重新安装引导加载程序
# 4. 恢复配置文件
2. 从ISO/CD引导
# 将ISO映像刻录到CD/DVD
sudo wodim -v dev=/dev/sr0 bootdisk.iso
# 或创建可引导USB(使用dd)
sudo dd if=bootdisk.iso of=/dev/sdb bs=4M
sync
# 从CD/USB引导,进入恢复环境
3. 恢复引导加载程序
# 从引导盘启动后,进入恢复环境
# 挂载原系统根分区
mkdir /mnt/sysroot
mount /dev/sda2 /mnt/sysroot
# 重新安装GRUB
chroot /mnt/sysroot /bin/bash
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
# 重启系统
reboot
常见问题解决
1. 内核版本错误
# 错误:Could not find kernel image
# 解决方案:检查内核文件是否存在
ls -la /boot/vmlinuz-*
ls -la /boot/initramfs-*.img
# 列出所有可用内核
rpm -q kernel
# 使用正确的内核版本
sudo mkbootdisk 3.10.0-1160.45.1.el7.x86_64
2. 设备空间不足
# 错误:Not enough space on device
# 解决方案:检查软盘容量
# 标准1.44MB软盘可能不够存储现代内核
# 使用ISO模式创建
sudo mkbootdisk --iso --size 2880 `uname -r`
# 或清理/boot目录旧内核
sudo package-cleanup --oldkernels --count=2
3. 软驱设备不存在
# 错误:Cannot open /dev/fd0: No such device
# 现代系统可能没有软驱
# 解决方案1:使用ISO模式
sudo mkbootdisk --iso `uname -r`
# 解决方案2:创建USB引导盘(使用其他工具)
sudo dd if=/dev/zero of=/dev/sdb bs=1M count=1
sudo mkfs.vfat /dev/sdb1
sudo syslinux /dev/sdb1
# 手动复制引导文件
现代替代方案
| 工具 |
说明 |
适用场景 |
grub2-mkrescue |
创建GRUB2恢复盘 |
UEFI/BIOS系统恢复 |
livecd-tools |
创建Live CD/USB |
完整系统恢复 |
dd + syslinux |
手动创建引导盘 |
自定义恢复环境 |
systemd-boot |
UEFI引导管理器 |
现代UEFI系统 |
| 发行版安装盘 |
通常包含恢复模式 |
通用系统修复 |
使用grub2-mkrescue创建恢复盘
# 安装所需工具
sudo yum install grub2-tools
# 创建GRUB2恢复ISO
sudo grub2-mkrescue -o /tmp/grub-rescue.iso
# 或创建包含特定内核的恢复盘
sudo mkdir -p /tmp/boot/grub2
sudo cp /boot/vmlinuz-* /boot/initramfs-*.img /tmp/boot/
sudo grub2-mkconfig -o /tmp/boot/grub2/grub.cfg
sudo grub2-mkrescue -o /tmp/custom-rescue.iso /tmp/
重要注意事项
- 软盘限制:现代内核可能超过软盘容量(1.44MB)
- 硬件兼容:许多现代计算机已不再配备软驱
- 定期更新:系统内核更新后,应重新创建引导盘
- 测试验证:创建后应在测试环境中验证引导盘可用性
- 备份策略:引导盘是紧急恢复工具,不能替代常规备份
- 现代替代:考虑使用USB恢复盘或Live CD等现代方案
安装mkbootdisk
# Red Hat/CentOS 7及以下版本通常已包含
# 如未安装,可使用yum安装
sudo yum install mkbootdisk
# CentOS 8/Stream可能需要从EPEL获取
sudo yum install epel-release
sudo yum install mkbootdisk
# Fedora系统
sudo dnf install mkbootdisk
# 从源码编译安装(不推荐)
# mkbootdisk通常是发行版特定工具
相关命令
grub2-mkrescue - 创建GRUB2恢复介质
mkisofs - 创建ISO映像文件
dd - 磁盘映像创建和复制
syslinux - 引导加载程序安装工具
dracut - 生成initramfs映像
uname - 显示系统信息(包括内核版本)
rpm - 管理RPM包(可查询内核版本)
livecd-creator - 创建Live CD工具