ChinaUnix首页 > 精华文章 > Linux > 正文

[精彩] 编译内核相关问题....


http://www.chinaunix.net 作者:双眼皮的猪  发表于:2009-02-11 14:21:35
发表评论】 【查看原文】 【Linux讨论区】【关闭

编译内核后,修改grub.conf
把kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
改成了kernel /bzImage ro root=LABEL=/boot


重新启动后碰到这个问题
Kernel panic: VFS: unable to mount root fs on 00:00
停在这里不动了....进不了系统...

平台
Win2k+Vmware4.0+RH9.0+SCSI



 双眼皮的猪 回复于:2003-10-28 11:15:03

没办法:
我把grub.conf改回去了,改成:
title Redhat
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
这样就可以启动....


但是我改成
title redhat
kernel /bzImage ro root=LABEL=/ 
initrd /initrd-2.4.20-8.img

或者
kernel /bzImage ro root=LABEL=/
no initrd

都不行...我确定bzImage我已经放到/boot里边而且和vmlinuz-2.4.20-8是一个文件夹里,路径应该没有问题,那这个是编译出来的内核有问题吗?
都会出现
Kernel panic : VFS :unable to mount root fs on 00:00


 双眼皮的猪 回复于:2003-10-28 11:32:17

修改成
kernel /bzImage ro root=LABEL=/dev/sda
initrd /initrd-2.4.20-8.img

kernel /bzImage ro root=LABEL=/
no initrd
依然不行,还是老问题...
继续尝试...

顶....

考虑initrd.img的问题:

带参数执行/sbin/mkinitrd就可以创建新的initrd映相:: 
        /sbin/mkinitrd /boot/newinitrd-image 2.0.12
/boot/newinitrd-image是新生成映相的文件名,而2.0.12表示您要在initrd中使用该版本核心
的相应的模组驱动程序(位于/lib/modules)(但并非得用与当前核心版本一致的模组
驱动程序) 


于是我制作了一个initrd
mkinitrd /boot/custominitrd.img 2.4.20-8

ps:2.4.20-8是将要寻找模块的地方:)


然后我在grub.conf里边指定custominitrd.img,重新启动,
仍旧失败...

我又起用我的/lib/modules目录底下的2.4.20-8custom(我编译后的模块)
mkinitrd /boot/custominitrd2.img 2.4.20-8custom

出错提示:
No module BusLogic found for kernel 2.4.20-8custom

Ps:
BusLogic是SCSI的驱动...


 双眼皮的猪 回复于:2003-10-28 12:04:38

比较两个文件夹
ls -R 2.4.20-8 >; 1
ls -R 2.4.20-8custom >; 2
diff 1 2 >; different
vi different


 双眼皮的猪 回复于:2003-10-28 12:34:08

顶一下,不然高手们来了看不到了....


 cau_eric 回复于:2003-10-28 13:01:50

编译内核后只要make install就可以了!


 双眼皮的猪 回复于:2003-10-28 13:02:54

哦,谢谢,是漏掉这一步了吗?


 双眼皮的猪 回复于:2003-10-28 13:08:42

make install最后出错,出错提示是:

No module BusLogic found for kernel 2.4.20-8custom
mkinitrd failed
make[1]:*** [install] Error 1
make[1]:Leaving directory `/usr/src/linux-2.4.20-8/arch/i386/boot`
make *** [install] Error 2

看来我编译好的内核少某些模块是不是??


 cau_eric 回复于:2003-10-28 13:14:12

`/usr/src/linux-2.4.20-8/arch/i386/boot

你是不是把内核给移走了?


 cau_eric 回复于:2003-10-28 13:17:08

注意:编译内核步骤:
make mrproper
make menuconfig
make bzImage
make modules(若有模块的话)
make modules-install(若有模块的话)
make install
make clean(可有可无)


 双眼皮的猪 回复于:2003-10-28 13:35:07

因为就是怕这种问题出现,所以我怕我所敲的全部命令写出来,您看看:)

cd /usr/src
cp -i -r linux-2.4.20-8/ linux.old
cp /boot/vmlinuz-2.4.20-8 /usr/src/vmlinuz.old
cd linux-2.4.20-8
make mrproper
make menuconfig
这里把config存到/usr/src/kernel1
make dep
make clean
make bzImage
cd /usr/src/linux-2.4.20-8/arch/i386/boot
mv bzImage /boot  (是不是这里给移走了啊)
make modules
make modules_install
make install就跟上边的那样出错....这样出错:
No module BusLogic found for kernel 2.4.20-8custom 
mkinitrd failed 
make[1]:*** [install] Error 1 
make[1]:Leaving directory `/usr/src/linux-2.4.20-8/arch/i386/boot` 
make *** [install] Error 2 



 cau_eric 回复于:2003-10-28 13:38:46

cd /usr/src 
cp -i -r linux-2.4.20-8/ linux.old 
cp /boot/vmlinuz-2.4.20-8 /usr/src/vmlinuz.old 
cd linux-2.4.20-8 
make mrproper 
make menuconfig 
这里把config存到/usr/src/kernel1 
make dep 
make clean 
make bzImage 



对,这个时候就接着编译就行了!


 双眼皮的猪 回复于:2003-10-28 13:43:20

I will compile the kernel again....

take your time...

There's something wrong with my Chinput....


 faquirsun 回复于:2003-10-28 13:58:28

我在redhat 8.0上编译过2.4.22的内核,基本上按照手册上的步骤,编译过程没有问题,最后在修改grub.conf文件上面出现问题
我按照原来的写法,在grub.conf中新加了一个启动项,
title Redhat
root(0,0)
kernel /vmlinuz-2.4.22  ro root=LABEL=/ 
initrd /initrd-2.4.222.img 
重启后系统报错。但是修改成:
kernel /vmlinuz-2.4.22  ro root=/dev/hda2
就可以了
我一直不明白,为什么不能使用LABEL=/的写法,也没找到资料。


 双眼皮的猪 回复于:2003-10-28 14:01:25

在grub.conf里边
/代表的是系统中的/boot
我个人这么认为。。。。


 faquirsun 回复于:2003-10-28 14:14:21

在/etc/fstab文件中:
LABEL=/对应的挂载点是/
LABEL=/boot对应的挂载点是/boot
可是为什么Redhat的能这么用,自己写的就不行?


 双眼皮的猪 回复于:2003-10-28 14:23:01

我个人看法啊:

既然grub跟kernel认分区不一样,那么,同样grub.conf当然也可以跟kernel读取/etc/fstab不一样...

我是菜鸟啊...呵呵:)

问太多了,我也不知道哦...


 cau_eric 回复于:2003-10-28 15:00:06

引用:原帖由 "faquirsun" 发表:
在/etc/fstab文件中:
LABEL=/对应的挂载点是/
LABEL=/boot对应的挂载点是/boot
可是为什么Redhat的能这么用,自己写的就不行?




不能有两个/


 cau_eric 回复于:2003-10-28 15:03:58

我的显卡驱动怎么装不上?我用的是N卡,RedHat9.0,显示错误好象说我的kernel modules不支持! 
猪猪能告诉我是怎么回事吗?


 cau_eric 回复于:2003-10-28 15:06:04

昨天我做DNS的时候碰到的问题!
我有个DNS的问题:我的域名服务不能重起,不知道是什么原因?不知道有哪位朋友碰见过这种问题! 
#service named restart 
named stoping.... 
named starting.... 
named server running[root@linux root]# 
大概意思就是这样,具体显示内容我记不得太清楚.


 双眼皮的猪 回复于:2003-10-28 15:10:24

引用:原帖由 "cau_eric" 发表:
我的显卡驱动怎么装不上?我用的是N卡,RedHat9.0,显示错误好象说我的kernel modules不支持! 
猪猪能告诉我是怎么回事吗?




说良心话。驱动装不装的上我无所谓,我根本不用X,要用桌面的话用windows,呵呵:)

看看这个行不...

http://chinaunix.net/jh/4/168533.html

guangdong 大哥的帖子....


 双眼皮的猪 回复于:2003-10-28 15:12:20

引用:原帖由 "cau_eric"]ux root 发表:

大概意思就是这样,具体显示内容我记不得太清楚.



没有OK(绿色)和FAILED(红色)吗?哈哈。
你弄清楚后一定要告诉我...0_o  o_0


 cau_eric 回复于:2003-10-28 15:14:07

哎,没办法,有的时候还是得用啊!
那个DNS的问题你怎么看?


 cau_eric 回复于:2003-10-28 15:16:30

里面是SiS的艾


 双眼皮的猪 回复于:2003-10-28 15:17:04

加我QQ说吧...
2106107


 cau_eric 回复于:2003-10-28 15:23:36

没有OK(绿色)和FAILED(红色)吗?对,所以才感到奇怪!
另,我这里用不了qq,很郁闷的!


 faquirsun 回复于:2003-10-28 15:43:45

引用:原帖由 "cau_eric" 发表:



不能有两个/



你的意思是在grub.conf中,不能有两个等价于roo=/的语句,即使它们属于不同的启动选项?


 双眼皮的猪 回复于:2003-10-28 15:52:29

我又重新编译了一次...
在make modules_install之后,
我make install(是不是安装内核的意思啊)
出现错误...

No module BusLogic found for kernel 2.4.20-8custom 
mkinitrd failed 
make[1]:*** [install] Error 1 
make[1]:Leaving directory `/usr/src/linux-2.4.20-8/arch/i386/boot` 
make *** [install] Error 2 


请问这是怎么回事...


 sky-walker 回复于:2003-10-28 16:01:54

引用:原帖由 "cau_eric" 发表:
我的显卡驱动怎么装不上?我用的是N卡,RedHat9.0,显示错误好象说我的kernel modules不支持! 
猪猪能告诉我是怎么回事吗?




N卡的驱动太新?驱动里的大都功能是需要kernel的支持,所以驱动对应的内核版本很严格,

到nVidia网站找到对应你系统kernel版本的驱动,要很严格的


 faquirsun 回复于:2003-10-28 16:13:30

我的编译过程是这样的:
cd /usr/src/linux-2.4.22
make mrproper
make menuconfig
make dep
make clean
make bzImage
make modules
make modules_install
make install
然后修改grub.conf文件,添加一个启动项。

大概就是这样了......


 双眼皮的猪 回复于:2003-10-28 16:16:00

我跟楼上的一模一样...但是出错...

make install

No module BusLogic found for kernel 2.4.20-8custom 
mkinitrd failed 
make[1]:*** [install] Error 1 
make[1]:Leaving directory `/usr/src/linux-2.4.20-8/arch/i386/boot` 
make *** [install] Error 2 


请问这是怎么回事...


 網中人 回复于:2003-10-28 16:19:08

1) 請在 make module modules_install 之前確定 working dir :
cd /usr/src/linux-2.4.20-8
2) 確定 menu.lst 的 LABEL 為 =/
3) 要是還不行,請將如下結果丟上來:
head -5 /usr/src/linux-2.4.20-8/Makefile
ls /lib/modules
for i in $(mount | grep '^/dev' | awk '{print $1}'); do e2label $i; done
ls -l /boot
cat /boot/grub/menu.lst


 双眼皮的猪 回复于:2003-10-28 16:45:28

#pwd
/usr/src/linux-2.4.20-8

#vi /boot/grub/menu.lst
title redhat
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img


#head -5 /usr/src/linux-2.4.20-8/Makefile
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -8custom

#ls /lib/modules
2.4.20-8     2.4.20-8custom


#for i in $(mount | grep '^/dev' | awk '{print $1}'); do e2label $i; done 

/
/boot

能不能解释一下这行脚本是什么意思???:)


 網中人 回复于:2003-10-28 17:12:24

ls -l /boot 呢?

那行 script 可拆解為:
1 個 for 迴圈
value 從 $() 這個 command substitution 之 stdout 讀入
逐個 item 跑 e2label


 cau_eric 回复于:2003-10-28 17:16:22

$(mount | grep '^/dev' | awk '{print $1}')

主要是这个不太明白!


 双眼皮的猪 回复于:2003-10-28 17:16:36

那么能给个分析吗?呵呵:),谢谢了...
为什么会考虑到您叫我做的这些方面,会有什么影响呢?


 網中人 回复于:2003-10-28 17:25:36

mount 不帶任何參數,會得到當前的 mount point
有些 mount point 不是用硬碟來的,就用 grep '^/dev' 濾掉
awk 功能很強,print $1 是印出每行的第一個欄位

要這各結果,是為了確定你的 LABEL 是正確定,
同時也確定 /boot 是獨立的 mount point ,
因為這些都是 menu.lst 設定要的...


 cau_eric 回复于:2003-10-28 17:41:16

awk 功能很強,print $1 是印出每行的第一個欄位 


"欄位" :是什么?
awk: 作用是什么?


 網中人 回复于:2003-10-28 17:58:14

O'Reilly 有一本書,英文版大概有 4 百多頁,
甚麼也不講,只講兩個 command : sed & awk 
因此,要三言兩語說出 awk 的好,恐怕不容易哦~~~  ^_^

所謂欄位,英文是 field 。
常用於 text 處理上,每一行 text line ,依據 IFS(Internal Field Seperator)來分出一個或多個 field (欄位),
awk '{print $1}' 就是只印出每行的第一個 field 。


 双眼皮的猪 回复于:2003-10-28 19:33:49

引用:原帖由 "双眼皮的猪" 发表:
 Error 2 


请问这是怎么回事...



说了半天,我这个问题还是没人解决....


 双眼皮的猪 回复于:2003-10-28 20:02:16

找到一点资料:

你會看到一行訊息像這樣: 
kernel panic: VFS: Unable to mount root fs on XX:YY

這是常見的問題,而它只有一些原因。首先,請根據 device code 清單檢查 device XX:YY ;它是正確的 root device 嗎 ?如果不是,那你可能沒有做過 rdev -R ,或者是你是對錯誤的 image 執行rdev -R。如果 device code 是正確的,那麼請仔細地檢查被編譯到你 kernel 內的 device 驅動程式。請確定它有內建軟碟片、 ext2 filesystem 支援


可惜看不懂...rdev不晓得是什么,但我 还是估计编译内核出错了,使挂上root分区的时候出现问题....

但是我在fs那个里边都没敢动它....
可能是什么原因?


 sky-walker 回复于:2003-10-28 20:12:48

引用:原帖由 "網中人" 发表:
O'Reilly 有一本書,英文版大概有 4 百多頁,
甚麼也不講,只講兩個 command : sed & awk 
因此,要三言兩語說出 awk 的好,恐怕不容易哦~~~  ^_^

所謂欄位,英文是 field 。
常用於 text 處理上,每一行 tex..........



我还见过一本5.6百页,只介绍awk一个command的书哩,

感觉这是Unix shell"高手的高手次方牛人",为了寻求完美所做的,而且

这些人大都小时候就开始接触Unix,二三十年的积累呀,向往......

其实命令本身理解没问题,台湾所说的"欄位",内地称为"数据域" :lol:


 双眼皮的猪 回复于:2003-10-28 20:31:33

哎...
回去测试去了...

希望早点解决....


 sky-walker 回复于:2003-10-28 20:47:06

引用:原帖由 "双眼皮的猪" 发表:


说了半天,我这个问题还是没人解决....



对不起,走"蹄"啦 8) 

我觉得你应该先解决BusLogic module的问题,

你编译的时候,选模块时有没有误操作?

rdev ------设备管理

rdev [-rsvh ] [-o offset ] [ image [value [ offset ] ] ]
用来取得或是设定kernel image的各项参数,如
                           对应参数:
root device           -r
swap device         -s
RAM disk               -h
video mode           -o

 

一般还和以下一起使用:
swapdev       [ -o offset ] [ image [ swap_device [ offset ] ] ]
ramsize         [ -o offset ] [ image [ size [ offset ] ] ]
videomode    [ -o offset ] [ image [ mode [ offset ] ] ]
rootflags       [ -o offset ] [ image [ flags [ offset ] ] ]


 双眼皮的猪 回复于:2003-10-28 21:15:53

看提示BusLogic module的作用应该是导致不能mkinitrd才对,但是我设置为no initrd仍然不能引导啊....

您的意思是说我的BusLogic module有问题?

选模块的时候有没误操作我就不知道了,呵呵:)

谢谢您的回答....


 網中人 回复于:2003-10-29 00:05:02

引用:原帖由 "双眼皮的猪" 发表:


说了半天,我这个问题还是没人解决....


again:
ls -l /boot 呢?


 sakulagi 回复于:2003-10-29 08:05:02

我没有这么写过。
[1] 关于LABEL的问题,前两天刚刚讨论过。你搜索以下"e2label".我通常都不使用,尤其是有多个linux安装的时候。
[2] 我的grub.conf里都是写/boot/vmlinuz。。。。。./和/boot不是一回事。


 双眼皮的猪 回复于:2003-10-29 10:18:15

引用:原帖由 "網中人" 发表:

again:
ls -l /boot 呢?



我直接敲出来吧,您要看哪个文件的属性,就帮忙看看行不...
boot.b
chain.b
config-2.4.20-8
grub
initrd-2.4.20-8.img
kernel.h
lost+found
message
message.ja
module-info->;module-info-2.4.20-8
module-info-2.4.20-8
os2_d.b
System.map->;System.map-2.4.20-8
System.map-2.4.20-8
vmlinux-2.4.20-8
vmlinuz->;vmlinuz-2.4.20-8
vmlinuz-2.4.20-8

这是我重新装系统后的(vmware里边的,我的真实rh已经进不去了)
我记得里边还有bzImage

顺便问一下,如果说出现我那个错误与System.map有没关系?
还有,您为什么要/boot里的文件呢?


 双眼皮的猪 回复于:2003-10-29 10:28:43

我没有列出-l选项所列出的属性,您要看哪个文件,您提一下,我来列出来行不?这要是敲出来太麻烦了...

我是在别人机器上上网...:)


 bjchenxu 回复于:2003-10-29 10:38:40

作为初学者,最快的学习方法就是看文档,然后动手

我找了一篇文档
http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/s1-custom-kernel-modularized.html
你的问题在于配置.config文件不正确,你试试将
/usr/src/linux-2.4/configs/kernel-2.4.18-i686.config文件拷贝到你的源码目录下的.config文件,然后试试重编吧

刚才,我在rh8上编译了2.4.20的核心,效果非常理想
也可以理解,毕竟在红帽的系统中使用红帽提供的.config文件,呵呵


 双眼皮的猪 回复于:2003-10-29 10:40:36

啊....E文,呵呵,咬牙看吧...
谢谢bjchenxu...
看文档咯.....


 冷风123 回复于:2003-10-29 10:56:41

我想你是 kernel  /vmlinuz-2.4.20-8 ro root=/dev/hdax

新内核的启动选项应该是这个   那个 x要根据你的 root分区在哪儿


 双眼皮的猪 回复于:2003-10-29 11:09:28

root=LABEL=/
跟root=/dev/hdaX
差不多,都可以引导,您可以试一下..:)


 双眼皮的猪 回复于:2003-10-29 11:20:06

奇怪了
#lsmod
在下边的列表里明显有一行

BusLogic   99932  3

已经进内核了啊 ..(是否是现有的内核有这个mod,而编译后的没有)


 双眼皮的猪 回复于:2003-10-29 11:26:34

引用:原帖由 "bjchenxu" 发表:
作为初学者,最快的学习方法就是看文档,然后动手

我找了一篇文档
http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/s1-custom-kernel-modularized.html
你的问题在于配置.config文件不正?.........



谢谢,您给的这个文档我晓得,我现在是不知道在编译内核的过程中系统都做了哪些事情...以及一些依赖性什么的东东...就是譬如make menuconfig里边,做完以后设置都存哪里了,到时候都要从哪里读取啥的...

.config文件在编译中起个什么作用呢?


 blueme 回复于:2003-10-29 11:40:05

No module aic79xx found for kernel 2.4.21
make[1]: *** [install] Error 1
make[1]: Leaving directory `/usr/src/linux-2.4.21/arch/i386/boot'
make: *** [install] Error 2
???

??


 blueme 回复于:2003-10-29 11:47:47

我的这样的
没有AIC79XX的模块??
我是RH8的2.4.18升到2.4.21
MAKE MENUCONFIG时,我选AIC79XX和AIC7XXX都选了啊。。。

请赐教


 bjchenxu 回复于:2003-10-29 12:44:37

make menuconfig的用处是生成系统需要的配置(比如,哪些是模块,哪些是内置,哪些不编),它会读取源码目录下的.config文件,将其作为标准配置,供你修改
/usr/src/linux-2.4/configs/kernel-2.4.18-i686.config是rh公司提供的标准配置文件,你将它拷贝到源码目录中,文件名为.config,make menuconfig执行后,无需修改,直接退出,退出时选择保存就行了,然后按标准步骤进行

我已经执行成功了,你可以试试


 網中人 回复于:2003-10-29 13:28:19

看起來,環境有點亂,請問你是用 scsi 還是 ide 硬碟呢?
要是用 scsi ,要自己做 initrd 哦。

我也不知道為何你要進 vmware ?要知到 vmware 看到的是 virtual machine 。

這樣吧,你先用 CD-ROM 開機,
然後輸入 linux rescue ,
第一個選項請按 skip ,然後都是 enter ,
留意一下最後一個畫面是否有叫你 chroot /mnt/sysimage 的提示?
若有,那就打 chroot /mnt/sysimage ,
然後改那邊的 /boot/grub/menu.lst ,看看是否能救回?
要是不行,那就到 /usr/src/2.4.20-8 那邊再編一此吧。
可以 copy RedHat 原廠的 config 來編:
# cd /usr/src/2.4.20-8
# cp .config .config.bak
# cp configs/kernel-2.4.20-8-i686.config .config
再跑 make mrproper dep bzImage modules ....

總覺得,你這次編 kernel 的習慣不好:
1) 沒做 backup ,起碼 /boot 跟 /lib/modules 要 backup 一下,萬一有問題,其碼能回到原點,再重新出發。
2) 沒用 floppy 來 test 。除非 new kernel 太大,要不然,在真正開始 cp bzImage 之前,應先跑一下 make bzdisk 。

我個人編 kernel 的心得在如下:
http://www.study-area.org/linux/system/linux_kernel.htm
版本有點舊(2.4.16),你可到 kernel.org 抓同一版的 kernel source 回來編,
也可以碰碰運氣是否能套用到 2.4.20 上。

是否成功編起來不重要,重要的是在過程中你學到了甚麼...  ^_^


 双眼皮的猪 回复于:2003-10-29 16:01:12

谢谢哦,我做了备份的哦,呵呵:)
我是在vmware中练熟悉了,然后再去实战啊.....
我知道怎么修复系统,但是我编译不成功这个问题要解决啊....
我没有启动盘,借别人去了.....
所以暂时没有修复系统,而在vmware中调试,是非常快的....
重新启动啊什么的,有点危险性的我都在vmware中玩熟悉了
再到实际系统中去...


我修复系统的方式跟您有点区别,因为我没用到.config
文件,我只在 grub.conf里边把kernel指定到原来的vmlinuz-2.4.20-8,把initrd指定到initrd-2.4.20-8.img恢复一下就好了...

我在修复系统的时候发现一个问题:
在出现提示:Load ScSI drivers的时候
下面有一行,就是 Load BusLogic,我怀疑BusLogic是否是
SCSI的驱动的...

如果是SCSI磁盘和运用ext3格式的话,就一定要制作initrd,自己制作,

关键是这么回事,我在mkinitrd initrd-2.4.20.img 2.4.20-8custom(这个文件夹应该就是编译后的模块所在,也就是目录/lib/modules/2.4.20-8custom),提示No BusLogic Module Found
,于是我觉得我在vmware中还是不行,因为我创建的是scsi磁盘(在vm中),而现实中是用的IDE,而IDE则可以不用initrd,


非常感谢指教...但不知"沒用 floppy 來 test 。除非 new kernel 太大,要不然,在真正開始 cp bzImage 之前,應先跑一下 make bzdisk " 您的这句话是什么意思...


 双眼皮的猪 回复于:2003-10-29 16:05:43

我想,如果是SCSI的话,那我的系统启动不了是理所当然的,因为我的vmware创建的硬盘是SCSI硬盘,而我在编译内核的时候想着是IDE,于是没有把SCSI的模块编译进去,而且没选择SCSI硬盘,这样一定会出错...

但是我在实际硬盘上编译的内核也出现了同样问题...
那又是怎么回事呢?我实际硬盘是IDE硬盘...没有选择SCSI模块怎么也出现同样的错误...


 faquirsun 回复于:2003-10-29 16:09:40

網中人提供的文章不错,Thanks!
晚上回去重新编译一下2.4.22,上次编译完还是有些问题:一个是USB驱动方面的,还有一个是输入poweroff后不能自动关机,就一直停留在power off那里。这两个问题是不是和编译时的配置有关系?


 双眼皮的猪 回复于:2003-10-29 16:14:36

楼上的大哥,我也发现你开始提的那个问题了...
grub.conf

主要在kernel的路径上,如果我写成
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
这里的LABEL=/这后面的/其实是系统中的/boot分区,然而在这里可以以LABEL=/来表示

另外一种:
kernel /vmlinuz-2.4.20-8 ro root=/dev/sda3
这种竟然也可以找到vmlinuz,天那,这究竟是怎么回事...
这个LABEL究竟是什么意思?


 網中人 回复于:2003-10-29 16:14:42

那... 你知道 make bzdisk 是作啥用的嗎?  ^_^


 双眼皮的猪 回复于:2003-10-29 16:17:07

大哥您在啊....
我不懂make bzdisk的作用啊...在google上正在搜索...


make bzdisk: Used for big kernels and operates the same as zdisk. You  will know if you need this option, because  make will fail with a message that the image is too big

跟make bzImage的用处是差不多的...


 faquirsun 回复于:2003-10-29 16:20:23

俺只知道用LABEL=/不行,还不知道为什么不行和如何才能使它能行,呵呵,有点饶舌,偶也是才开始学LINUX。


 双眼皮的猪 回复于:2003-10-29 16:22:34

引用:原帖由 "faquirsun"]俺只知道用LABEL=/不行,还不知道为什么不行和如何才能使它能行,呵呵,有点饶舌,偶也是才开始学LINUX。
 发表:



ro root=LABEL=/
这里的LABEL=/表示的是系统中的/boot分区,也就是说,是可以的,不是不行:) :oops:  :oops:  :oops:


 網中人 回复于:2003-10-29 16:23:53

好吧,
請問如下結果為何:
mount


 faquirsun 回复于:2003-10-29 16:28:21

引用:原帖由 "双眼皮的猪" 发表:


ro root=LABEL=/
这里的LABEL=/表示的是系统中的/boot分区,也就是说,是可以的,不是不行:) :oops:  :oops:  :oops:



我在grub.conf里面是增加了一个启动项,原来的保留,这样写的话是启动不起来的


 網中人 回复于:2003-10-29 16:28:23

還有:
cat /proc/partitions


 双眼皮的猪 回复于:2003-10-29 16:30:57

#mount

/dev/sda3 on / type ext3 (rw)

none on /proc type proc (rw)

usbdevfs on /proc/bus/usb type usbdevfs (rw)

/dev/sda1 on /boot tyep ext3 (rw)

none on /dev/pts type devpts (rw,gid=5,mode=620)

none on /dev/shm type tmpfs (rw)

为了好辨认,都加了一行空格...


 wyckwemail 回复于:2003-10-29 17:33:23

up!
我想把rh9.0(kernel 2.4.20-8)内核升到2.6.0.xx
哪为大侠指点一下,我是一个菜菜鸟,但很感兴趣,!


 双眼皮的猪 回复于:2003-10-29 17:49:54

引用:原帖由 "faquirsun" 发表:


我在grub.conf里面是增加了一个启动项,原来的保留,这样写的话是启动不起来的



这样写,我是启动了的...呵呵,刚这样写才发现的
发现root=LABEL=/
和root=/dev/sda3
都可以启动....


 双眼皮的猪 回复于:2003-10-29 19:04:40

#cat /proc/partitions


major minor  #blocks  name  rio  rmerge  rsect wio wmerge wsect wuse running use aveq

0   0  3145728  sda 75393  114916 1521470 856380 17985 73163 730754 66164100 730810 7474880

0  1  104391  sda1 41 73 228  430  34 11 90 1790 0 2180 2220
0  2  160650  sda2 1568 41 12608 7170 2159 5804 63736 212670 0 158440 219840
0  3 2875635 sda3 73781 114797 1508618 848740 15792 67348 666928 6401950 0 593670 7252700

敲的累死哦,呵呵:)


 双眼皮的猪 回复于:2003-10-29 21:35:53

谢谢大家支持,我已经搞定...
在真实环境编译成功,正如开始所说
应该是initrd的问题...

我重新编译了一次内核....
然后还是按照我原来的步骤。我没有make modules_install
然后我创建了自己的initrd...
mkinitrd /boot/initrd-2.4.20-9.img 2.4.20-8custom
我也没有修改System.map

我编译完后...

修改grub.conf
title redhat
kernel /vmlinuz-2.4.20-9 ro root=LABEL=/
initrd /initrd-2.4.20-9.img
重新启动...成功...

开机free -m
显示...
用了19M内存,勉强可以...呵呵:)

再次感谢一些朋友:
cau_eric   faquirsun      sky-walker      網中人   sakulagi      
bjchenxu   ORA-600
ORA-600大哥告诉我应该是initrd的问题...
果然是这样...

谢谢大家...


 sky-walker 回复于:2003-10-29 22:26:04

恭喜!

不谢, 其实我没有做什么:lol:

其实我觉得,问题远没解决:

1.你前后两次操作有没有添加modules?
而make modules_install 未用,system.map未替换,
却取得了成功?
看来mkinitrd到底做了什么,以及生成的initrd文件我们没有搞清楚


2.为什么initrd的错误会导致根本不存在的SCSI的BusLogic module出错?
难道是内核报错的bug?因为很多的内核compile上都出现这问题?



看来mkinitrd到底做了什么,以及生成的initrd文件我们没有搞清楚

解决问题的深层次目的在于:现象出现的蹊跷本质细节,而非大而化之的解决方法

一点小感,见笑啦 :oops:


 網中人 回复于:2003-10-30 00:31:11

引用:原帖由 "双眼皮的猪"]敲的累死哦,呵呵:)
 发表:


首先,恭喜你終於搞定了﹗  ^_^

下次貼 screen message 的話,你可試試在 windows 底下用 putty 連進 linux ,
然後用鼠標將字"選"起來,就可以到處"貼"了...


 LZG8056 回复于:2003-10-30 01:25:09

引用:原帖由 "網中人" 发表:

首先,恭喜你終於搞定了﹗  ^_^

下次貼 screen message 的話,你可試試在 windows 底下用 putty 連進 linux ,
然後用鼠標將字"選"起來,就可以到處"貼"了...



钦佩中.............


 wyckwemail 回复于:2003-10-30 08:10:04

up!
昨晚我花了好几个小时升级内核(2.6.0-test9),但老出新错误,放在这里,希望高手们分析一下什么原因.如下
mount: error 19 mounting ext3
pivot root: pivot_root(/sysroot,/sysroot/initrd) failed:2
unount /initrd/proc failed :2
Freeing unused kernel memory:236k freed
kernel panic:no init found
Try passing init option to kernel


 wyckwemail 回复于:2003-10-30 08:10:55

up!
昨晚我花了好几个小时升级内核(2.6.0-test9),但老出新错误,放在这里,希望高手们分析一下什么原因.如下
mount: error 19 mounting ext3
pivot root: pivot_root(/sysroot,/sysroot/initrd) failed:2
unount /initrd/proc failed :2
Freeing unused kernel memory:236k freed
kernel panic:no init found
Try passing init option to kernel


 swimcat 回复于:2003-10-30 08:43:03

晕倒,编译内核后如果是grub.conf作引导的话基本是不要修改什么。
直接REBOOT就OK了,如果想把内核的版本号改过来的话,你只要到里面改一下LABEL后面的版本号就可以了。
对了,你做的过程中的确有错。1、内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage 2、# make modules 
# make modules_install  
编译成功后,系统会在/lib/modules目录下生成一个2.4.20子目录,里面存放着新内核的所有可加载模块。 3、启动新内核 
1、将新内核和System.map文件拷贝到/boot目录下  
# cp /usr/src/linux-2.4/arch/i386/boot/bzImage  /boot/vmlinuz-2.4.7-10
# cp /usr/src/linux-2.4/System.map  /boot/System.map-2.4.7-10
# cd /boot  
# rm -f System.map   (删除原来的连接) 
# ln -s System.map-2.4.7-10  System.map
然后到GRUB里面改一下版本号。
 2-3两步总的意思就是把新内核代替旧的 然后建立新的系统MAP的连接。


 swimcat 回复于:2003-10-30 08:49:23

编译内核后如果是grub.conf作引导的话基本是不要修改什么。 
直接REBOOT就OK了,如果想把内核的版本号改过来的话,你只要到里面改一下LABEL后面的版本号就可以了。 
对了,你做的过程中的确有错。1、内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage 2、# make modules 
# make modules_install 
编译成功后,系统会在/lib/modules目录下生成一个2.4.20子目录,里面存放着新内核的所有可加载模块。 3、启动新内核 
1、将新内核和System.map文件拷贝到/boot目录下 
# cp /usr/src/linux-2.4/arch/i386/boot/bzImage /boot/vmlinuz-2.4.7-10 
# cp /usr/src/linux-2.4/System.map /boot/System.map-2.4.7-10 
# cd /boot 
# rm -f System.map (删除原来的连接) 
# ln -s System.map-2.4.7-10 System.map 
然后到GRUB里面改一下版本号。 
 2-3两步总的意思就是把新内核代替旧的 然后建立新的系统MAP的连接


 wyckwemail 回复于:2003-10-30 09:05:31

错误


 wyckwemail 回复于:2003-10-30 09:06:55

刚才发错了!
up! 
昨晚我花了好几个小时升级内核(2.6.0-test9),但老出新错误,放在这里,希望高手们分析一下什么原因.如下 
mount: error 19 mounting ext3 
pivot root: pivot_root(/sysroot,/sysroot/initrd) failed:2 
unount /initrd/proc failed :2 
Freeing unused kernel memory:236k freed 
kernel panic:no init found 
Try passing init option to kernel


 cau_eric 回复于:2003-10-30 09:37:09

就是啊,好象现在的版本根本就不用修改,它自动就搞定了.现在甚至连备份都不用做,它会自动在新内核后加上custom的,我编了好几次了,都没有问题的!
wyckwemail:请重新开个帖如何,这个看得我累死了,而且你这样跟帖,别人都不会回哦,经验!:)


 網中人 回复于:2003-10-30 11:46:08

1) system.map 不用 copy ,它會自動更新。
2) Makefile 決定用甚麼版本。
3) 用 make install 或 make bzlilo 這類 target ,最好能了解它們底下做了些啥。
4) grub 只需改 menu.lst ,不需重灌 grub 。LILO 則不然。
5) menu.list 中的 root=(hdx,x) 的 root 是指 /boot partition
但 kernel 那行的 root=/dev/hdxx 則是指 / partition 。這點請留意。
6) 若 /boot 是獨立的 partition ,那 kernel 那行的 kernel image path 是從 / 下找(/boot partition),
要是 /boot 沒有切出來,那就要到 /boot/ 下找(/ paritition)
7) 要是用 SCSI 應碟,需要制作 initrd ,這除了要求在 kernel 中將 inittrd 編進 boot up 之外,還要產生正確的 module 才能 make initrd。
8) 對開機流程了解一下,對 troubleshooting 很有幫助。
9) 任何時侯都建議 backup 及準備好 boot disk 。
10) 最後,多燒香拜佛、求神保祐...


 双眼皮的猪 回复于:2003-10-30 13:06:58

引用:
编译成功后,系统会在/lib/modules目录下生成一个2.4.20子目录



我也感觉问题没解决,这个过程没头绪...

楼上大哥的这句话好象不对,编译成功后,应该是在/lib/modules里边生成一个2.4.20-8custom的文件夹,所有modules,在这里:)

谢谢各位,学到不少东东 ...

以后有问题还要向大家多多请教....

继续编译,争取做到熟练:)


 双眼皮的猪 回复于:2003-10-30 13:21:56

引用:
1.你前后两次操作有没有添加modules? 
而make modules_install 未用,system.map未替换, 
却取得了成功? 
看来mkinitrd到底做了什么,以及生成的initrd文件我们没有搞清楚 


2.为什么initrd的错误会导致根本不存在的SCSI的BusLogic module出错? 
难道是内核报错的bug?因为很多的内核compile上都出现这问题? 



看来mkinitrd到底做了什么,以及生成的initrd文件我们没有搞清楚 




非常感谢提出意见,我们把这个帖子一直顶下去如何?
我来解答一些问题:

在把新核心放进/boot之后,我觉得,在grub.conf里边指定一下,然后制作不制作initrd.img我个人认为无所谓,我的是IDE硬盘,因为这个你可以在grub.conf里边写initrd /initrd-2.4.20-8.img的这个地方改成no initrd,同样是可以启动的,因为initrd的存在是由于你使用了ext3格式以及SCSI磁盘.


是否make modules我觉得也没什么?这里我有点疑问...
make modules之后是否把编译好的modules放到/lib/modules/2.4.20-8custom去了?还是在make modules_install之后才放到那里去?
insmod和modprobe应该都是在/lib/modules/相应文件夹里查找模块的吧...
如果我make modules,modules 编译了,但是没安装?这又是个什么意思?
也就是,俺想知道make modules之前之后系统有哪些地方改变了.
make modules_install之前之后系统又有哪些地方改变了?
make install又是起什么作用,干什么的?


System.map如网中人大哥所说,自动更新:)

至于initrd.img
我有一点浅见:

initrd.img类似于ramdisk,在这里我写过:
http://chinaunix.net/forum/viewtopic.php?t=169044

initrd***.img 

initrd的镜像,类似ramdisk,把一段程序打包到img里,然后在内存里开辟一段区域,一般是2m,释放到那里运行,都是一些初始化的程序 


不同内核,初始化的img可以相同,也可以不同,不要也可以。。。 

如果没有,可以在grub.conf里加上no initrd,它就跳过initrd的检测和执行了,以前好像就没有,后来才有的 

在没有mount /分区以前,系统要执行一些操作,比如挂载驱动什么的,它就把initrd释放到内存里,作一个虚拟的/,然后执行 

查看initrd.img: 
initrd好像是gz格式的 
cp initrd.img initrd.gz 
guzip initrd.gz 
mount -o loop initrd /mnt/floppy 
试试 
看看/mnt/floppy下有没有啥


initrd.img这里边主要是一些驱动,里面有buslogic.o文件,ext3.o等,而我在vm下为什么编译不成功,是因为vm中要求BusLogic做vm中SCSI的驱动...
所以会出错....但是为什么SCSI就会出错?我不大清楚...
我在vm当前系统中lsmod里边出现了BusLogic ...


 双眼皮的猪 回复于:2003-10-30 13:29:40

顶...


 cau_eric 回复于:2003-10-30 13:54:48

十分建议你去搞本书系统的看一下,你的问题基本就明白了!


 双眼皮的猪 回复于:2003-10-30 13:58:10

我有,但书上讲的不会这么仔细...:)
如果你知道,你告诉我啊.....

书本上只会讲怎么做,但很少看见讲内部机理....


 cau_eric 回复于:2003-10-30 14:06:04

多看几本书罗!


 双眼皮的猪 回复于:2003-10-30 14:22:56

引用:原帖由 "cau_eric"]多看几本书罗!
 发表:



这样说来,想必兄弟你也看过很多书,推荐几本好的啦...

 :oops:  :oops:  :oops: 

看书对实践无用,我是看了书实践的时候碰到问题才来问,又不是完全不看书....

大哥有什么意见就提吧....


 網中人 回复于:2003-10-30 15:12:04

你再仔細看看 menu.lst 中的
root
kernel
這兩行,再回來重看我講的?


 sky-walker 回复于:2003-10-30 15:24:49

"是否make modules我觉得也没什么"

如果在make menuconfig中对模块做了修改,make modules就需要啦(不要说我这是废话 :cry: )

"make modules之后是否把编译好的modules放到/lib/modules/2.4.20-8custom去了?还是在make modules_install之后才放到那里去?"

据我分析,应该是在make modules之后存到/lib/modules/xxxxx,
因为在建造modules时有一步mv /lib/modules/xxx  /lib/modules/xxx-old;
而make modules_install应该是把modules  patch 进kernel


"也就是,俺想知道make modules之前之后系统有哪些地方改变了. 
make modules_install之前之后系统又有哪些地方改变了? 
make install又是起什么作用,干什么的? "

需要对make命令及Config文件的理解,找一本关于gcc的书,稍微看一下,就会知道



"System.map如网中人大哥所说,自动更新:) "
这仅限于单一kerne,对于多内核,很有可能出问题,因为我记得在《LDD》中的
oops描述中建议对每个system.map做一下rename
即:
*/boot/vmlinuz-2.4.x 
*/boot/vmlinuz-2.4.y

*/boot/System.map-2.4.x 
*/boot/System.map-2.4.y

我觉得根据最小化系统错误检测原则,对于单一kernel也做同样的事

对了,你为什么不做个多kernel的grub menu.1st,这样好恢复呀


 双眼皮的猪 回复于:2003-10-30 15:29:02

谢谢,我的grub启动菜单是三个
2.4.20-8
2.4.20-9
2.4.20-10

呵呵...几个内核都丢那里在,看情况启动...


 双眼皮的猪 回复于:2003-10-30 15:32:53

引用:
如果在make menuconfig中对模块做了修改,make modules就需要啦(不要说我这是废话  )



我的目标是做一个服务器内核出来,短暂时间不管它,不需要modules,直接全部进kernel,所以我对make modules不敏感:)

谢谢指教...

看书去咯...


 網中人 回复于:2003-10-30 15:38:04

嗯... 我的理解是:
make modules 只是將 modules 產生在 /usr/src/linux-xxxx 底下。
make modules_install 才會 copy 到 /lib/modules/xxxx 那邊。

要不然跑一下如下流程:
# mv /lib/modules/xxx /lib/modules/xxx.bak
# make modules
# ls /lib/modules
# make modules_install
# !ls


 sky-walker 回复于:2003-10-30 15:52:46

"而我在vm下为什么编译不成功,是因为vm中要求BusLogic做vm中SCSI的驱动... 
所以会出错....但是为什么SCSI就会出错?我不大清楚... 
我在vm当前系统中lsmod里边出现了BusLogic ..."


这正是我关心问题的所在 :shock: 

而且有的人确实有一个scsi硬盘,也选择了BusLogic,但奇怪的是:
居然和没有选择BusLogic出现一样的错误;
甚至,在因为GTK stuff fail而安装GTK patch时也出现这样的错误!!

我觉得有三个可能:

1.kernel 出错报告代码有bug

2.module的潜在依赖性

3.BusLogic.c中有错(possiability's small,大多数服务器都可以正常工作)


我想解决这些问题最彻底的办法是: 阅读研究有关代码(虽然很难)

而我读过的代码中,没有关于sys init的,驱动倒是读过,但由于一般不接触SCSI,
所以.....

真要按照这个方法解决上面的问题,我的层次还远不够,2(study hard)
 :!:


 双眼皮的猪 回复于:2003-10-30 16:03:31

相信您有一天一定可以做到的....
加油,我们这些小菜鸟还要向您学习....

网中人大哥或许知道呢...


 cau_eric 回复于:2003-10-30 16:29:25

厉害!我来凑个整!ha


 zorrozolo 回复于:2003-10-30 18:24:40

vmware 里用ide的硬盘安装系统编译内核还会包错吗?


 sky-walker 回复于:2003-10-30 23:33:15

引用:原帖由 "網中人" 发表:
嗯... 我的理解是:
make modules 只是將 modules 產生在 /usr/src/linux-xxxx 底下。
make modules_install 才會 copy 到 /lib/modules/xxxx 那邊。

要不然跑一下如下流程:
# mv /lib/modules/xxx /lib/modu..........


对,

网中人大哥
(if (you.age==year(y=33)||you.age>;=year(y=23))), :P 
谢谢再次指出我的错误 :oops: 

那/lib/modules/中的模块是由mkinitrd做成xxx.img,然后由grub读入?

还有LABLE的问题
用e2label导入的label是否适合于EXT3 fs?

grub读入menu.1st中的LABEL和/etc/fstab里的有关吗?

root=LABEL=/和root=/dev/hdxx的可用性到底遵循什么原则?

root=LABEL=/hda=ide-sici表示什么意思?

hehe,  grub没怎么搞过(一直用LILO),问的多了些,不好意思 :)


 双眼皮的猪 回复于:2003-10-31 09:15:03

mkinitrd好象是你做的时候是这么做的..
mkinitrd  "你指定的路径" /lib/modules/模块所在目录
是一个初始化境象...放系统初始化的驱动程序...
用scsi硬盘的一定要有这个东东...
因为scsi的驱动放在这里...太大了,不好编译进内核...
所以就放在initrd.img里边...开机启动的时候会释放...


我就知道这么点,说不定还是错的...
请指教...


 網中人 回复于:2003-10-31 13:10:45

1) mkinitrd 需要先做出一個 virtual file system ,其內要有 etc, lib 等目錄,然後將相關 module 抄進去,也要設好 etc 的項目。最後用 mkinitrd 產生 image ,再置於 /boot 內,由 boot loader 讀取。

2) e2label 可用於 ext3 。其實 ext3 與 ext2 只差在 journaling 而已。表面來說,其它可被視為共通的。

3) 若 hdd 經常抽換的話,用 LABEL 比較靈活。不管插到哪個 IDE 或 master/slave ,或 SCSI ID,都抓得到。但,要是灌多重系統(主要學習用,真實工作環境中很少碰到),那就有可能碰到 LABEL 衝突。這時,用 /dev/hdxx 是較為精確,但就不夠靈活。自己選適合的及想辦法解決就是了。

4) ide 可以模擬為 scsi 。端視系統設定要求。若沒必要,盡量單純化。

5) 學習 grub 可從 info grub 開始。但要注意 grub 的 root(/) 跟 kernel 的 root(/) 是不一樣的。前者指 /boot 所在,後者才是 / 。


 網中人 回复于:2003-10-31 13:14:22

補:
grub 跟 fstab 用的 LABEL 都是一樣的。請 man e2label 。
但 fstab 是在 kernel 載入之後,進入開機程程序才被 init 讀取 remout 用的。grub 要讀取 LABEL ,則主要是要載入 kernel 。兩者的層次有別。


 双眼皮的猪 回复于:2003-10-31 13:17:57

经典。。。。

建议给网中人加精......

高人...

回去补英语,好看英文文章...


 双眼皮的猪 回复于:2003-11-03 11:09:02

引用:原帖由 "cau_eric"]编译内核后只要make install就可以了!
 发表:



这个帖子已经沉下去了,但是有点问题,再顶一下...

兄台这句话其实是不对的,make install是不一定要做的...

在make modules_install之后呢,只需要更新System.map,
而并不一定需要make install

make install之后就会在/lib/modules里边生成一个2.4.20-8custom
也就是当前版本的内核2.4.20-8后加了一个custom,而且重新启动后
你的grub就多了一个菜单...

也就是****custom,我不喜欢这样哦...

make install不一定一定要用....顶一下....说明一下...


 網中人 回复于:2003-11-03 13:12:10

或許,看一下 Makefile ,比較一下 modules_install 跟 install 的差異就是了。

我個人覺得:
* install 是一個"自動"過程,裡面也包含了 modules_install

只要跑 modules_install ,那就會將 make modules 產生的 modules 複制到 /lib/modules/<version>; 之下。
若 <version>; 不存在,則建立之。
這個 <version>; 叫甚麼名字?請看 Makefile 前 5 行就有答案了。


 双眼皮的猪 回复于:2003-11-03 15:50:44

在make modules的时候。正如您起先教导的一样...的确。生成的modules的确也都在/usr/src/linux-x.y.z里边,然后在make modules_install之后,才会在/lib/modules里边新建一个目录...

make install好象是包括了好几个步骤....
Makefile前5行啊:

VERSION=2

PATCHLEVEL=4

SUBLEVEL=20

EXTRAVERSION=-8CUSTOM

KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION=-8CUSTOM)

2.4.20-8CUSTOM,原来如此,谢谢网中人大哥...


 sky-walker 回复于:2003-11-03 16:58:44

介绍一个据说compile success rate 达到 99%的编译方法

主要分两步

1.技术阶段
cd /usr/src/linux-2.4.x
make mrproper (maybe no)

edit Makefile file
change "EXTRAVERSION=" 改成有你特色的文字, 比如:
EXTRAVERSION=10me

make menuconfig or make xconfig
make dep
make bzImage
make modules
make modules_install

cp System.map /boot/System.map-2.4.7-10me

cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.7-10me

#new-kernel-pkg --install --mkinitrd --depmod 2.4.7-10me

2.信仰阶段
在胸前多划几个十字,求基督耶稣能眷顾你一会 :lol: 
-------------------------------------------------------------
还有对于make install的理解,可以看看
其makefile文件,以及/sbin/installkernel script


 双眼皮的猪 回复于:2003-11-03 17:06:54

这个做法我在http://www.douzhe.com/linux里边看过,是bjchenxu先生搜集到的文章里有一篇是写这个的 ...

您可以去看一下哦...

http://www.douzhe.com/linux/15__kernel/15015.htm


 sky-walker 回复于:2003-11-03 17:25:36

真正的作者是"老农",CU的元老级人物,

由于某些不为人知的原因,像无双.老农......等等都离开CU :cry:  :cry: 

还好,还有像弱智,科学球...等大哥没有离开,

再者,还有"网中人"这样高级水准的大哥,CU还是有奔头的

-------------------------------------------------------------------

前一个帖子中
new-kernel-pkg --install --mkinitrd --depmod 2.4.7-10me 

这一行挺新鲜,没见过噢


 双眼皮的猪 回复于:2003-11-03 19:14:48

CU是最好的UX论坛哦...

只是有时候不太稳定,而且什么连接数据库出错...

有时候又上不来....

不知道各位老大是否可以改善一下....

访问量太大了哦....呵呵....


 老农 回复于:2003-11-10 01:53:04

引用:原帖由 "sky-walker" 发表:
真正的作者是"老农",CU的元老级人物,

由于某些不为人知的原因,像无双.老农......等等都离开CU :cry:  :cry: 

还好,还有像弱智,科学球...等大哥没有离开,

再者,还有"网中人"这样高级水准的大哥,CU还是有奔头..........


汗。。。
俺不是什么元老,浪迹江湖而已。
俺都不知道说的是俺写的什么。。。
找俺和无双、弱智(sinokonka)很容易啊,签名里有地址。


 老农 回复于:2003-11-10 14:12:03

原因在《站务交流》里可以看出来,
http://www.loveunix.net/index.php?showtopic=5614
也是一些思考。


 双眼皮的猪 回复于:2004-06-15 14:52:40

好怀念当初来CU的日子啊~呵呵~怀念这篇帖子,拉出来再顶一下~


 selina270 回复于:2006-03-09 00:28:11

我看完了以后,我看到好多的人都是一知半解的。


有没有说得确定些的。如sici 中的

是怎么看的。


 barterr 回复于:2006-03-09 09:56:17

先顶一下。留着慢慢看。多谢双眼皮猪,帮翻出这么多资料。


 barterr 回复于:2006-03-11 01:19:10

用了差不多两个小时,终于看完了。结论是:如果linux没有运行在 vmware下,比较好搞定。如果linux是运行在vmware下,并且主系统用的是IDE硬盘,vm用的是虚拟的scsi硬盘,那就很难搞了。
双眼皮猪好像也没搞定?
很欣赏网中人的一句话:关键是在重新编译的过程中学到了什么。这句话让我为自己的无能找到了托词。
向前辈们致敬!


 lavencious 回复于:2006-03-24 19:07:46

好像2.6版内核比以前好编译,上一楼说的太好了!


 zhangtieing 回复于:2007-12-26 18:16:37

首先说一下:双眼皮的猪写的《菜鸟编译Linux内核》不错,顶一下
用的vmware嘛,注意下面模块有的必须编译进内核,有的以模块形式存在,才能正常启动,不是grub的问题,我遇到同样的情况,现已解决:
**************vmware下面编译内核必选的选项****************************
如果你在vmware下重新编译内核,硬盘用的是scsi的,以下选项必选:
Device Drivers  --->;SCSI device support  --->;<*>;   SCSI disk support
Device Drivers  --->;SCSI device support  --->;SCSI low-level drivers  --->; <*>; BusLogic SCSI support

Device Drivers  --->; Fusion MPT device support  --->;<M>; Fusion MPT (base + ScsiHost) drivers和<M>;   Fusion MPT misc device (ioctl) driver(这个要不要,不确定)
注意:只能选模块方式,直接编译进内核,就出错,不知道为什么,这个浪费了我好多时间才找到,编译了几十次的成果。
出错信息如下:No module mptbase found for kernel vmware。。。。。。。

Device Drivers  --->; USB support  --->;<*>;   USB Mass Storage support

Device Drivers  --->; Networking support  --->;Ethernet (10 or 100Mbit)  --->; <*>;   AMD PCnet32 PCI support(看到文章说这个必选,应该是网卡吧)


从上面的问题可以看出,可能是file system的设置问题,在mvware中如果用的linux是ext3和scsi的接口硬盘,还得有个initrd-XXX.img文件,要不进不了系统,但也不一定要重新编译,上面这些“必须模块”一般都已经编译成模块存放在系统中了,可以将其复制到内核中,改一下内核配置文件即可,详情可参考文章:
http://hi.baidu.com/shenlang277/blog/item/593cccbf36d2520919d81fdf.html
根据其中的例子找到相应的缺省模块加入内核即可

[ 本帖最后由 zhangtieing 于 2007-12-26 18:17 编辑 ]


 samewhere 回复于:2009-02-11 14:21:35

这问题也是折腾死了我无数脑细胞,现在依然没有得到解决。。。。。。。。。:em11:




原文链接:http://linux.chinaunix.net/bbs/viewthread.php?tid=189498
转载请注明作者名及原文出处