【发布时间】:2015-07-15 18:53:16
【问题描述】:
作为 PCI 驱动程序开发实验的结果,我的内核崩溃了。现在我处于操作系统启动并再次崩溃的情况,因为它试图加载我的错误驱动程序。修复它的方法是什么,可能避免启动我的驱动程序,以便我可以在“安全”模式下登录系统,然后修复我的驱动程序或至少从系统中卸载?
UPDATE阅读http://docs.oracle.com/cd/E36784_01/pdf/E36801.pdf等文档后,看来步骤如下:
1) 从 solaris CD 引导
2) 选择外壳
3)zpool import -R /a rpool
4) zfs mount rpool/ROOT/zfsBE
5) cd /a 并从/usr/kernel/drv/ 中删除有故障的驱动程序
不完全确定,我不想再搞砸系统,所以想得到 Solaris 专家的确认。
UPDATE2 所以上面的修复方案 几乎 对我有用,也就是说我能够导入 rpool 并且这会自动安装 @987654326 @ 在/a 下,这让我可以删除我的错误驱动程序,因为之前我从/usr/kernel/drv 建立了一个到它的软链接;基本上我能够重新启动并启动solaris,没有任何问题,也没有错误消息,所以我什至没有运行fsck。但是对我不起作用的是zfs mount rpool/ROOT/solaris,它是一个根FS,因为我想从/usr/kernel/drv 中删除一个链接。错误消息说我应该使用mount 来执行此操作。
顺便说一句,现在我将我的驱动程序复制到/tmp 并创建一个链接/usr/kernel/drv/amf64/mydrv,因此在崩溃的情况下,系统会重新启动并清理/tmp 分区。稍后我需要在 beadm 上投入一些时间。
谢谢。
【问题讨论】:
-
这就是为什么你应该使用 beadm 来创建一个额外的引导环境,所以你只需要在引导时选择一个不同的 grub 菜单项来回到一个工作的内核。不过,只有在安装损坏的驱动程序之前这样做才有帮助。
-
@alanc。的确。在开发我的第一个内核模块的早期,我学到的第一件事是“计划在没有该模块的情况下重新启动。”
标签: crash solaris device-driver pci opensolaris