鸟哥Linux私房菜中dd if=xx.img of=initramfs.gz bs=11264 skip=1,bs至关重要

本文探讨了在CentOS 7环境下使用特定bs参数压缩initramfs.gz文件的问题。通过对比书本示例与实际操作结果,分析了bs参数设置对文件类型的影响,并解释了为何需要跳过特定区块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


鸟哥linux私房菜中的 bs=11264 skip=1 为什么要跳过 1个11264,我也照着命令在我centos7()上跳过相同的1个11264,或者不跳过任何block,都是这样的效果,注意看生成的 initramfs.gz 的文件类型。


为什么?为什么 initramfs.gz 的文件类型不同,导致不能根据鸟哥linux私房菜那样gzip,只是书本上是initramfs-3.10.0-229.el7.x86_64,而我的centos是initramfs-3.10.0-693.el7.x86_64,这个对命令的执行是没有影响的,应该来说绝对是没有影响的,那问题的关键就是 bs=11264 skip=1,bs的值至关重要,并且11264不适合我的系统环境

用 binwalk(可以github去git) 看img文件,发现我的img 前面9216是一些其他的信息,如果不跳过,得到的时候只得到的外层的东西



跳过相应的bs后,文件类型是gzip了。实验可以继续下去了。


<think>我们正在处理一个VMware虚拟机启动Linux时出现的错误:ALERT! UUID=XXXXXXX does not exist. Dropping to a shell! 这个错误通常发生在系统启动时,initramfs无法找到指定的根文件系统。原因可能是UUID对应的磁盘设备不存在或无法访问。 常见原因及解决方案: 1. **UUID不匹配**:检查/etc/fstab和/boot/grub/grub.cfg(或/boot/grub2/grub.cfg)中的根文件系统UUID是否一致。 - 使用`blkid`命令查看实际磁盘分区的UUID。 - 比较`/etc/fstab`中根分区的UUID和`grub`配置中的UUID(通过`grep 'root=' /boot/grub/grub.cfg`或类似命令)。 2. **磁盘驱动未加载**:在initramfs阶段,缺少必要的磁盘驱动(如VMware的SCSI驱动)。 - 需要重新生成initramfs,确保包含`mptspi`、`mptscsih`等VMware SCSI驱动。 - 对于较新的内核,可能需要检查`vmw_pvscsi`驱动。 3. **虚拟机磁盘控制器类型变更**:如果虚拟机的磁盘控制器类型被更改(例如从IDE改为SCSI),但系统没有相应的驱动。 4. **文件系统损坏**:根文件系统损坏,需要fsck修复。 解决步骤(在救援模式下): 步骤1:在启动时进入grub菜单,编辑内核启动参数,临时将根设备改为/dev/sda1(或对应的设备)尝试启动。 步骤2:启动后检查UUID并修复配置: - 使用`blkid`获取正确的UUID。 - 修改`/etc/fstab`和`/etc/default/grub`(然后运行`update-grub`)中的UUID。 步骤3:如果是因为驱动缺失,则需要重新生成initramfs: - 编辑`/etc/initramfs-tools/modules`,添加必要的驱动(如:`mptspi`、`mptscsih`、`vmw_pvscsi`等)。 - 然后运行`update-initramfs -u`。 步骤4:如果文件系统损坏,使用`fsck -y /dev/sdaX`进行修复。 具体操作示例(在Dropping to shell后): 1. 检查设备:`ls /dev/sd*` 查看是否存在预期的磁盘设备(如sda, sda1等)。 2. 如果设备存在,尝试手动挂载:`mount /dev/sda1 /mnt`,然后检查/mnt/etc/fstab中的UUID。 3. 如果设备不存在,则可能是驱动问题,需要检查内核模块是否加载:`lsmod`,如果没有相关驱动,尝试手动加载:`modprobe mptspi`等。 注意:在VMware中,确保虚拟机的磁盘控制器类型为系统所支持(例如LSI Logic或PVSCSI)。 如果上述步骤无法解决,可能需要考虑重新安装GRUB或重新生成initramfs时包含更多驱动。 下面,我们将按照规则在最后提出相关问题。</think>### 解决 VMware 虚拟机启动时出现 `ALERT! UUID=XXXXXXX does not exist` 错误 该错误表明系统在 initramfs 阶段无法通过 UUID 找到根文件系统设备。以下是完整解决方案: --- #### 核心原因分析 1. **虚拟机磁盘配置变更** - VMware 磁盘模式从 SCSI 改为 IDE(或反之) - 新增/移除虚拟磁盘导致设备标识符改变(如 `/dev/sda` → `/dev/sdb`) 2. **UUID 不一致问题** - `/etc/fstab` 中记录的 UUID 与实际磁盘 UUID 不匹配 - GRUB 配置中的 `root=UUID=...` 参数错误 3. **initramfs 未更新** - 内核更新后未重建 initramfs - 缺少必要的磁盘驱动模块(如 `vmw_pvscsi`) --- ### 修复步骤(在救援模式下操作) #### 步骤 1:进入救援 Shell 当出现错误时,系统会自动进入 **initramfs 应急 Shell**(显示 `(initramfs)` 提示符) #### 步骤 2:手动定位磁盘设备 ```bash # 扫描所有可用磁盘 (initramfs) ls /dev/sd* # 列出 SCSI/SATA 设备 (initramfs) ls /dev/hd* # 检查 IDE 设备 (initramfs) ls /dev/nvme* # 检查 NVMe 设备 # 查看磁盘分区(示例) (initramfs) blkid /dev/sda2 # 输出:/dev/sda2: UUID="d0c5b0b0-..." TYPE="ext4" ``` #### 步骤 3:临时挂载根分区 ```bash # 根据 blkid 结果挂载(假设根分区在 /dev/sda2) (initramfs) mount /dev/sda2 /root (initramfs) mount -t proc proc /root/proc (initramfs) mount -t sysfs sys /root/sys (initramfs) mount -o bind /dev /root/dev (initramfs) chroot /root /bin/bash ``` #### 步骤 4:修复配置文件 ```bash # 1. 检查实际磁盘 UUID bash# blkid /dev/sda2 # 记录正确的 UUID # 2. 修正 /etc/fstab bash# nano /etc/fstab # 将 root 分区的 UUID 更新为实际值 # 3. 修正 GRUB 配置 bash# nano /etc/default/grub # 检查 GRUB_CMDLINE_LINUX 中的 root=UUID=... 参数 bash# update-grub # 4. 重建 initramfs(关键步骤) bash# update-initramfs -u -k all ``` #### 步骤 5:添加 VMware 驱动(如缺失) ```bash # 编辑 initramfs 模块列表 bash# nano /etc/initramfs-tools/modules # 添加以下驱动: vmw_pvscsi # VMware 准虚拟化 SCSI 控制器 mptspi # LSI Logic SAS 控制器 ahci # SATA 控制器 # 强制重建 initramfs bash# update-initramfs -u -v ``` #### 步骤 6:退出并重启 ```bash bash# exit (initramfs) exit # 退出救援环境 # 系统会自动继续启动 ``` --- ### 预防措施 1. **虚拟机磁盘配置** - 固定磁盘控制器类型(推荐 **VMware Paravirtual**) ```vmx scsi0.virtualDev = "pvscsi" ``` 2. **系统配置** - 使用设备路径替代 UUID(在 GRUB 中设置 `root=/dev/sda2`) - 定期执行 `update-initramfs -u` 更新 > ✅ **验证成功**:重启后观察是否正常进入系统,检查日志: > ```bash > dmesg | grep -i "root device" > # 应显示:Mounted root filesystem /dev/sda2 > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值