|
|
机器上的2.6.9 内核是以前用gcc3.3编译的.前不久了gcc到4.0
今天想用mount -o loop 时实然发现根本就没有编译loop这个内核模块
把内核源代码的树.config 文件改一改只刘有 CONFIG_BLK_DEV_LOOP=m
,然后 make modules
把生成的loop.ko cp 到/lib/modules/2.6.9/kernel/drivers/block
中, 高高兴兴的insmod loop.ko 一把.结果大失所望:
insmod: error inserting 'loop.ko': -1 Invalid module format
dmesg 发现,原来是这样
loop: version magic '2.6.9 preempt PENTIUMII 4KSTACKS gcc-4.0' should be '2.6.9 preempt PENTIUMII 4KSTACKS gcc-3.3'
呵呵呵,看来是gcc版本问题导致的了. 在网上找一通,本想搞个3.3 版的pII loop.ko,
但找起来难度太大了.
突发灵感, strings loop.ko 试下
......
alias=block-major-7-*
vermagic=2.6.9 preempt PENTIUMII 4KSTACKS gcc-4.0
depends=
......
果然有那么一句是描述vermagic的.
下一步不用想也知道了, 找个16进制编辑工具改一改
vim loop.ko
%!xxd
注意看右侧的文本部分.找到以后
g c c - 4 . 0
6763 632d 342e 30
改成
6763 632d 332e 33
:%!xxd -r
:wq
strings loop.ko
vermagic=2.6.9 preempt PENTIUMII 4KSTACKS gcc-3.3
发现这个已经改好了.
再试试 insmod loop.ko , 一切ok , mount -o loop 了一把, 也能用了, 没发现什么异常.
把loop 加到 /etc/modules 中, 一切就搞定了. |
|