LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1695|回复: 20

用SVN20060210-Udev+更新的软件,LFS出的问题(已解决)

[复制链接]
发表于 2006-2-15 15:24:19 | 显示全部楼层 |阅读模式
这几天,我都在用
LFS-BOOK-Udev_update-20060210-HTML
编译lfs,有一些软件比svn的还要新,结果出了一些奇怪的问题:

1.expect 书上是 5.43.0 ,我这里是 expect-5.44.1
不管我用什么参数,它都非要tk不可,pass1里用的是主系统的,chroot后就配置不了了,这是我的配置(找不到tk)
./configure --prefix=/usr  --with-tcl=/usr/lib \
     --with-x=no \
     --with-tclinclude=/usr/include/tcl8.4/ --enable-shared

2.binutils 书上是 2.16.1 , 我的是 2.16.91.0.5
必须要有 bison 和 flex 才能编译,pass1 用的是主系统的,最好在编译工具链时加入 bison 和 flex , chroot后也可以编译bison 和 flex .

3.zlib 用的版本和书上一样 zlib-1.2.3
但书上似乎少了一步: ./configure --prefix=/usr --shared --libdir=/lib
这样就只有 zlib.so ,少了 zlib.a ,编译e2fsprogs 时要 zlib.a.
要再编译一遍zlib :./configure --prefix=/usr --static --libdir=/lib

4.kernel 2.6.15.4 我这里出了更奇怪的问题,应该是我的配置的问题
  1. root:/usr/src/linux-2.6.15.4# make kernelrelease
  2. 2.6.15.4 .file null .ident GCC:(GNU)4.0.2 .section .note.GNU-stack,,@progbits
  3. root:/usr/src/linux-2.6.15.4# make LOCALVERSION=-1lfs kernelrelease
  4. 2.6.15.4-1lfs
复制代码

不用 make LOCALVERSION=-1lfs 就无法 make modules_install ,因为内核名错了,无法生成目录

5.bash-3.1 和书上一样,但可能 3.1 的兼容性不太好,一些脚本会出错,可能前面的错误与 bash-3.1 有关.
也许 还是用 bash 3.0 比较好.
 楼主| 发表于 2006-2-15 15:51:43 | 显示全部楼层
ps : 书上说到的补丁,我都打过了
回复 支持 反对

使用道具 举报

发表于 2006-2-15 17:38:57 | 显示全部楼层
晚上试试,今天忙着看dns和email服务器的架设。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-16 11:35:00 | 显示全部楼层
  1. 4.kernel 2.6.15.4 我这里出了更奇怪的问题,应该是我的配置的问题

  2. 代码:
  3. root:/usr/src/linux-2.6.15.4# make kernelrelease
  4. 2.6.15.4 .file null .ident GCC:(GNU)4.0.2 .section .note.GNU-stack,,@progbits
  5. root:/usr/src/linux-2.6.15.4# make LOCALVERSION=-1lfs kernelrelease
  6. 2.6.15.4-1lfs不用 make LOCALVERSION=-1lfs 就无法 make modules_install ,因为内核名错了,无法生成目录

  7. 5.bash-3.1 和书上一样,但可能 3.1 的兼容性不太好,一些脚本会出错,可能前面的错误与 bash-3.1 有关.
  8. 也许 还是用 bash 3.0 比较好.
复制代码


问题已经解决,可能是chroot环境的问题,用lfs的内核启动后,就没有4,5这两个问题了.
不过这样 make LOCALVERSION=-1lfs 编译内核应该不错,看起来像一个dist,我都用2.6.15.4-xlfs ,标明我的内核编译次数,现在是2.6.15.4-2lfs.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-16 13:04:51 | 显示全部楼层
6,编译过 kernel 但无法启动
第一次,没有initrd,是 xfs 没有编译进内核
第二次,用了 initrd (从 mdv2006 借来源码编译), 还是无法启动,似乎是因为我的 /dev 目录是udev 管理,但 initrd 里没有udev,但有 hotplug 无法管理,所以不能挂 / .
第三次,没办法,重新编译 kernel 把xfs编译进. 再用initrd. 还是无法启动
第四次,只用新 kernel ,无法启动
第五次,只用新 kernel ,但改变了 grub 的启动参数,从
kernel /boot/vmlinuz init 3 ro root=/dev/hda9 vga=791 resume=/dev/hda11
改成
kernel /boot/vmlinuz init 3 rw root=/dev/hda9 vga=791 resume=/dev/hda11
终于成功了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-16 14:20:43 | 显示全部楼层
7. udev 问题,Udev_update-20060210 更新了udev相关包,已经不用 hotplug了.但描述还是有问题,我用的和书上一样的 udev-084

  1. make \
  2. EXTRAS="extras/ata_id extras/cdrom_id extras/edd_id extras/firmware extras/floppy extras/scsi_id extras/usb_id extras/volume_id"
  3. make DESTDIR=/ \
  4. EXTRAS="extras/ata_id extras/cdrom_id extras/edd_id extras/firmware extras/floppy extras/scsi_id extras/usb_id extras/volume_id" \
  5. install
复制代码


缺少3个程序: udev , udevstart, udevsend ,书上也没说有这3个程序,但要运行 /sbin/udevstart.

我用的 lfs-bootscripts-20060210.tar.bz2 已经打过 udev 补丁了.

但还有一个问题, 书上没有提到:
cp -v ../udev-config-5.rules /etc/udev/rules.d/25-lfs.rules
这个 udev-config-5.rules 还是老版本,要用 hotplug ,会导致启动出错,必须禁用 hotplug 相关内容 .

看看书上说的 : Udev's configuration is far from ideal by default, so install the configuration files here .
我读了 udev-084 的 rules ,看来 lfs 的rules 似乎还没有 udev 自带的好,许多设备都没有安装. 我要换一个 rules ,看看哪个好.
回复 支持 反对

使用道具 举报

发表于 2006-2-16 18:36:14 | 显示全部楼层
udev 书上用的是 071。之所以没更新,就是因为udev072版本后有所改动,所以LFS没有更新。071我觉的不错。

make kernelrelease
这句话从哪里看到的?我没看到这条命令的说。

expect的问题,我看看。。。准备开始svn一次。呵呵。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-16 19:25:01 | 显示全部楼层
make kernelrelease
不是编译内核,只显示即将编译的内核版本.
回复 支持 反对

使用道具 举报

发表于 2006-2-16 21:55:43 | 显示全部楼层
还是不明白udev与hotplug的关系?udev是否要hotplug才能正常工作的?youbest的精华帖里好像只用udev,不用hotplug的。因为我清楚我的基本硬件,所以可以把需要的直接编入或再modules.conf里调用,才不想要hotplug的。但一些“虚拟的设备”如何告诉udev工作?
回复 支持 反对

使用道具 举报

发表于 2006-2-16 22:05:25 | 显示全部楼层
刚在udev的官方网看到的:
About
udev allows Linux users to have a dynamic /dev directory and it provides the ability to have persistent device names. It uses sysfs and /sbin/hotplug and runs entirely in userspace.
Requirements
It requires a 2.6 Linux kernel with CONFIG_HOTPLUG enabled to run. It is recommended that you also have the Linux Hotplug scripts installed, but it is not necessary for it to work properly.
一条要,一条不要,信哪条?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表