内核编译(二)

来源:互联网 发布:pony.ai 知乎 编辑:程序博客网 时间:2024/06/16 12:09

继昨天之后, 开始对内核中的硬件开始配置, 方法是, 根据发行版给出的硬件模块, 找出在内核中对应的的选项. 具体是

先执行脚本find_all_modules.sh -- 源自<linux内核技术手册>一书, 其代码:

#!/bin/sh#for i in `find /sys/ -name modalias -exec cat {} \;`; do    /sbin/modprobe --config /dev/null --show-depends $i ;done | rev | cut -f 1 -d '/' | rev | sort -u

得到所有模块后, 一一在内核代码目录下执行 find -type f -name Makefile | xargs grep module_name, 查找到驱动名, (此可以再做个脚本, 但还不清楚此方法是否一定正确). 

再menuconfig下, 搜索该驱动名, 若该驱动未选择, 即[=n], 那么, 首先按Location的逐一选择, 其次, 注意depends下的驱动, 也要安装, 不确定的还要搜索, 最下方的selects, 应该也是要安装的, 最后, Location只是给出目录, 而目录下要自行选择产口的驱动. 即可


然而, 完成配置后, 新内核依然卡死在loading  initial ramdisk处, 后参考此文, 得出方法:

启动至grub2下时:

     setroot = 'hd0,msdos2'  // 参考grub.cfg

     ls /

找出内核文件和引导文件

linux / vmlinuz-2.6.32root=/dev/sda1 ro
initrd  /initramfs-2.6.32.img
boot

看内核报出什么错.

结果是内核报出fatal: kernel too old的错误

又根据该文, 得出是库文件要求内核至少为2.6.32版本以上导致出错, 只好放弃3.6.30, 重新编译32

今天时间不多 只是将32按默认配置编译, 就仓促安装运行起来, 可惜仍然卡死在原处, 但原因已不一样, 此时, 内核报错为:

dropping to debug shell
sh:can't access tty:control turned off

估计着是配置硬件的问题或者是grub又出了什么问题, 总之 先到这了


原创粉丝点击