LinuxSir.cn,穿越时空的Linuxsir!

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

LFS自动构建脚本

[复制链接]
发表于 2008-5-16 13:38:45 | 显示全部楼层 |阅读模式
上周末完成了我的第一个LFS系统,这周试着写脚本。因为测试起来比较花时间,现在只做好了工具链构建部分,先发上来听听大家的意见,有时间再继续写下一部分。:)

我的脚本有几个特点:

1.参考了gentoo的portage系统的思路,把每个包的编译安装配置信息写在单独的.build文件里,由emerge.sh读取.build文件完成编译安装。

2.实现自动下载源码包与补丁包(需要宿主系统安装有wget)。

3.日志功能,编译安装软件包时,如果中途出错退出,可手动修改后重新运行脚本,脚本自动读取日志从出错的地方重新开始编译。

使用时,只要将其解压到任意目录,设定好环境(.bashrc,.bash_profile),将build_tools.sh里首行的LFS变量正确设定好,运行build_tools.sh即可。

初学shell,刚开始接触LFS,脚本里肯定有很多不完善的地方,欢迎拍砖。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

第二部分完成了,两个脚本包可用来构建一个完整的LFS系统(网络和引导器的配置要手动完成,因为要根据实际情况而定)。上传和大家分享。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2008-5-16 21:01:11 | 显示全部楼层
这个脚本清晰简洁,希望能看到下集。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-17 09:41:10 | 显示全部楼层
很抱歉地告诉大家,我在准备写下一部分脚本的时候发现由脚本构建出的工具链不能chroot :(

可能是脚本中有错,目前还没查出哪里有问题...努力中...

用readelf查看到的Requesting program interpreter是没问题的,但是在chroot时提示找不到/tools/bin/env,有知道原因的朋友麻烦告诉一声:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-17 13:07:34 | 显示全部楼层
问题解决了,是因为$TOOL_DIR的原因,/tools软链接是必要的,这样才能保证chroot前后系统都能在/tools中找到要执行的文件。

脚本包已更新 :)
回复 支持 反对

使用道具 举报

发表于 2008-5-17 17:22:25 | 显示全部楼层
不使用 tools 作目录名称是可以的, 但是要在 / 下面有个同名的符号链接, 而且 configure 的时候的 prefix 指定的要是 /dir 而不是 $LFS/dir, 这样就可以保证 chroot 之后库的路径和 chroot 之前一致

另外, readlink 的输出是和建立符号链接时候的命令有关的, 比如你使用的是 ln -s /mnt/lfs/tools / 建立的 /tools 符号链接, 那 readlink /tools 的输出就是 /mnt/lfs/tools, 但是如果你使用的是 ln -s /mnt/lfs/tools/ / 建立的 /tools 符号链接, 那 readlink /tools 的输出就会变成 /mnt/lfs/tools/, 所以, 下面这句有可能会出问题的:
  1. if [ "$(readlink /tools)" != "${LFS}/tools/" ]; then
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-17 22:36:14 | 显示全部楼层
嗯,这样就行了吧:)

if [ "$(readlink /tools | sed 's/\/$//')" != "${LFS}/tools" ]; then
回复 支持 反对

使用道具 举报

发表于 2008-5-19 23:29:15 | 显示全部楼层
建议楼主参考下 lfscript 这个是比较完善的了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-20 09:39:33 | 显示全部楼层
Post by sohuandyahoo;1852072
建议楼主参考下 lfscript 这个是比较完善的了


嗯,我看看,谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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