4

解决end_request I/O error on device fd0,sector 0 Buffer I/O error on device fd0,...

 3 years ago
source link: https://www.liurongxing.com/end_request-io-error-on-device-fd0sector-0-buffer-io-error-on-device-fd0logical-block-0.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

解决end_request I/O error on device fd0,sector 0 Buffer I/O error on device fd0,logical block 0

作者: JavasBoy 分类: Archlinux, Linux 发布时间: 2012-05-09 00:44 ė 119,051 views 6 1条评论

以前刚装好Archlinux的时候就发现了,切换到tty1 2 3 4 下面就一直出现下面两行的error提示
end_request I/O error on device fd0,sector 0
Buffer I/O error on device fd0,logical block 0
后来一直也没管它,偶尔开机后还会卡住gonme进不去,我还一直以为是我的USB摄像头的问题呢!

今天下定决心要把它搞定。用心google了一把,问题出现在fd0上面,也就是floppy上面,这个floppy也就是软驱,话说从我开始玩电脑起就没用过这玩意。虽然表哥送的电脑有软驱。
查看是否加载了floppy模块:

#lsmod | grep -i floppy

如果显示像下面这行说明加载了floppy模块。

floppy                 95465  0

在ArchWiKi里查到禁用软驱模块的方法有几种:
Kernel modules (简体中文)
黑名单
对内核模块来说,黑名单是指禁止某个模块装入的机制。当对应的硬件不存在或者装入某个模块会导致问题时很有用。

有些模块作为 initramfs 的一部分装入。

mkinitcpio -M 会显示所有自动检测到到模块:要阻止 initramfs 装入某些模块,可以在 /etc/modprobe.d/modprobe.conf 中将它们加入黑名单。

运行 mkinitcpio -v 会显示各种钩子(例如 filesystem 钩子, SCSI 钩子等)装入的模块。如果要禁用这些模块,记得在配置完成后重新生成 initramfs。
使用 /etc/modprobe.d/ 中的文件
/etc/modprobe.d/ 中创建 .conf 文件,使用 blacklist 关键字屏蔽不需要的模块,例如如果不想装入 pcspkr 模块:

/etc/modprobe.d/nobeep.conf
# Do not load the pcspkr module on boot
blacklist pcspkr
注意: blacklist 命令将屏蔽一个模板,所有不会自动装入,但是如果其它非屏蔽模块需要这个模块,系统依然会装入它。

要避免这个行为,可以让 modprobe 使用自定义的 install 命令,直接返回导入失败:

/etc/modprobe.d/blacklist.conf
...
install MODULE /bin/false
...

这样就可以 “屏蔽” 模块及所有依赖它的模块。
使用内核命令行
同样可以通过内核命令行(位于 GRUBLILOSyslinux)禁用模块:

modprobe.blacklist=modname1,modname2,modname3
modname.disable=1

当某个模块导致系统无法启动时,可以使用此方法禁用模块。
使用 GRUB 的示例

/boot/grub/menu.lst
...
kernel /vmlinuz-linux root=/dev/sda1 modprobe.blacklist=pcspkr,ipv6 ro
...
/boot/grub/menu.lst
...
kernel /vmlinuz-linux root=/dev/sda1 pcspkr.disable=1 ipv6.disable=1 ro
...

我使用的方法是在/boot/grub/menu.lst里面加上modprobe.blacklist=floppy
打开编辑/boot/grub/menu.lst文件

vim /boot/grub/menu.lst
...
kernel /vmlinuz-linux root=/dev/sda1 modprobe.blacklist=floppy ro ...
...

修改完保存重启系统

# reboot


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK