读书频道 > 系统 > linux > 深度探索Linux操作系统系统构建和原理解析
3.4.4 安装根文件系统到目标系统
2013-09-29 08:50:21     我来说两句 
收藏    我要投稿   
全书一共8章:第1章介绍了如何准备工作环境。在第2章中构建了编译工具链,这是后面构建操作系统各个组件的基础。在这一章中,不仅详细讲解了工具链的构建过程,而且还通过对编译链接过程的探讨,深入讨论了工具链  立即去当当网订购

接下来,我们需要将文件系统安装到虚拟机上,来配合内核进行启动。

当然,如果为了减少共享库和二进制可执行文件的大小,可以使用i686-none-linux-gnu-strip命令删除ELF中运行时不需要的符号,命令如下:
vita@baisheng:/vita$ i686-none-linux-gnu-strip rootfs/lib/* \
   rootfs/bin/*

但是一定不要对crt*.o等这些启动文件进行strip,因为这样会删除目标文件的符号表,导致链接器在链接时找不到符号。

接下来我们使用scp命令,将文件系统复制到虚拟机上。因为命令scp会跟随符号链接,因此,我们首先将文件系统打包,然后再使用scp命令进行复制:
vita@baisheng:/vita/rootfs$ tar zcvf ../rootfs.tgz *
vita@baisheng:/vita/rootfs$ scp ../rootfs.tgz \
    root@192.168.56.101:/vita/

在复制完成后,在虚拟机上解开压缩包:
root@baisheng-vb:/vita# tar xvf rootfs.tgz

重启系统后,如果一切顺利,用户空间的程序/bin/sh会顺利运行,如图3-28所示。

 

至此,一个基本的内核已经构建完成了。它可以运行在x86体系架构上,可以驱动Intel的SATA硬盘,可以识别EXT系列文件系统,并内置ELF文件加载器,最后成功运行了用户空间的程序bash。

当然,这仅仅是个开始,我们才刚刚上路。读者可以根据需要继续扩展内核功能,比如,后面为了支持网络,我们配置内核支持TCP/IP协议、配置内核支持网卡驱动等。但是,通过这一过程,我们也看到,从头开始编译一个内核并非如想象般困难。虽然内核包罗万象,支持不同的体系结构,有着成千上万的选项,包含数不清的驱动,这些都让内核看起来无比复杂,但是不要被这些表象迷惑,只要以目标为导向,再加上一点耐心,配置一个高效的内核不再是梦。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.4.3 安装shell
下一篇:Linux命令、编辑器与Shell编程(第3版)
相关文章
图文推荐
3.3.6 GNOME的软件管
3.3.5 GNOME的文件管
3.3.4 GNOME的窗口管
3.3.3 收藏夹和快捷
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站