/boot 分区损坏:输入/输出错误

/boot 分区损坏:输入/输出错误

问题

我面临的问题是,在 GRUB 中选择 Ubuntu 后,在启动时出现以下错误:

Error: File "/vmlinuz-3.13.0-24-generic.efi.signed" not found.  
unaligned pointer 0xd0a26c68
Aborted. Press any key to exit.

错误:未找到文件“/vmlinuz-3.13.0-24-generic.efi.signed”。

我已经发布了有关此问题的问题这里,但是由于很多事情发生了变化,所以我提出了这个问题。

我的设置

我在安装过程中遇到了一些不同的麻烦,因为我的设置具有完全加密的根目录。此外,UEFI 和 GPT 也存在问题,尤其是无法让所有东西与 Windows 配合使用。由于安装时间已经很久了,我不记得任何细节了。

在我的 Ubuntu 硬盘上,我有三个主要分区:

  • /dev/sda1:fat32,启动标志。
    这应该是 EFI 分区(/boot/efi,不是吗?)
  • /dev/sda2: ext2
    应该是 /boot
  • /dev/sda3:crypt-luks
    加密容器,包含根目录和交换目录

故障排除

在我从 USB 启动的实时系统中,我发现了以下问题:

鹦鹉螺中的错误

单击 nautilus 中已安装的启动分区 (/dev/sda2) 会出现以下错误:

Sorry, could not display all the contents of “boot”: Error when getting information for file '/media/ujosh/root/boot/System.map-3.11.0-17-generic': Input/output error

抱歉,无法显示“boot”的所有内容:获取文件“/media/ujosh/root/boot/System.map-3.11.0-17-generic”的信息时出错:输入/输出错误

更新 initramfs 时出错

尽管如此,我还是可以挂载所有三个分区,并通过 mount --bind 将它们组合在一起,这样我就可以 chroot 到我的系统中。在那里,我运行

apt-get update
apt-get dist-upgrade

一切都按预期进行,直到

update-initramfs: Generating /boot/initrd.img-3.13.0-24-generic
cat: /proc/cmdline: No such file or directory

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-3.13.0-24-generic with 1.
dpkg: error processing package initramfs-tools (--configure):
subprocess installed post-installation script returned error exit status 1
No apport report written because MaxReports is reached already
Errors were encountered while processing:
linux-image-3.13.0-24-generic
grub-efi-amd64
grub-efi-amd64-signed
linux-image-extra-3.13.0-24-generic
linux-signed-image-3.13.0-24-generic
linux-signed-image-generic
linux-signed-generic
initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

启动修复没有帮助

我也在设置上运行了启动修复,最终在更新 initramfs 时触发了与上述相同的错误。

运行文件系统检查

在@zoid 的帮助下,我对我的 /boot-partition 进行了以下测试:enter code here

sudo fsck.ext2 -p -f -C0 /dev/sda2
/dev/sda2: Inode 29 has illegal block(s).  

/dev/sda2: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
    (i.e., without -a or -p options)

sudo fsck.ext2 -f -C0 /dev/sda2

结果粘贴在此处


sudo smartctl -H /dev/sda 
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-24-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

sudo smartctl -A /dev/sda 
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-24-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED              WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       2869
12 Power_Cycle_Count       0x0032   098   098   000    Old_age   Always       -       1836
177 Wear_Leveling_Count     0x0013   098   098   000    Pre-fail  Always       -       48
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   100   100   010    Pre-fail  Always       -       0
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   100   100   010    Pre-fail  Always       -       0
187 Uncorrectable_Error_Cnt 0x0032   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0032   062   050   000    Old_age   Always       -       38
195 ECC_Error_Rate          0x001a   200   200   000    Old_age   Always       -       0
199 CRC_Error_Count         0x003e   253   253   000    Old_age   Always       -       0
235 POR_Recovery_Count      0x0012   099   099   000    Old_age   Always       -       128
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       6450810314

我的问题

如何恢复我的 /boot 分区?我认为
/boot 分区损坏是导致整个问题的原因。我的 /boot 分区出了什么问题?为什么会发生这种情况?我的整个生产操作系统都坏了,我想知道将来如何避免这种情况。

非常感谢您的帮助!

答案1

“输入/输出错误”表示读写错误,可能是磁盘缺陷导致的。似乎无法读写块,因此无法修改分区。

我建议备份磁盘上的所有个人数据,并使用您选择的工具检查文件系统。

- 更新 -

对于文件系统检查你可以使用

fsck.ext2 -p -f -C0 /dev/sda2

它将检查文件系统(-f),向您提供一些正在发生的信息,显示进度条(-C0)并询问您是否应该尝试修复主要问题(-p)。

如果你遇到很多问题,我建议安装

smartmontools

然后运行

sudo smartctl -H /dev/sda 

快速测试

sudo smartctl -t long /dev/sda 

彻底检查硬盘

sudo smartctl -a /dev/sda 

显示硬盘状态

sudo smartctl -A /dev/sda 

显示硬盘属性。

答案2

我回来了!

使用 fsck.ext2 确实解决了问题。在sudo fsck.ext2 -f -C0 /dev/sda2回答所有问题“是”之后(参见问题),文件系统就修复了。

之后,我解锁了加密分区,挂载了所有内容,并进入了系统。在那里,我运行了apt-get dist-upgrade。之后,grub 在启动时进入了 grub 命令行。

我回到实时系统并随后运行了引导修复。之后,我必须重新配置我的加密设置,请参阅通过Ubiquity加密文件系统

现在,我可以再次使用我的系统了。网络不知怎么断了,虽然连接正常,但我无法在程序中使用互联网。sudo dhclient wlan0修复了这个问题,只持续了一个会话。

相关内容