Loading... <p> 前言:</p> <p> 此次编译是继一次简单的内核编译(一)进行操作编译的,请先查看第一篇再来看此片文章</p> <p></p> <p>一、使用busybox代替自己制作的init脚本,实现内核启动;</p> <p> 1、在这里我们使用静态编译busybox,所以需要先安装glibc-static依赖包,如果不安装会报错</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160345-42.png" title="1433041389827487.png" alt="45.png" /></p> <p></p> <p> 2、解压busybox到/usr/src/,切换到解压目录,运行make menuconfig</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160345-10.png" title="1433041208120071.png" alt="43.png" /></p> <p> </p> <p> 3、在busybox编译菜单中选择静态编译,以便于我们使用时方便 <img src="//cto.wang/usr/uploads/2016/07/20160703160345-67.png" title="1433041457105803.png" alt="44.png" /></p> <p> </p> <p> 4、选择好静态编译后,保存退出,运行make进行编译,编译完成后,运行make install进行安装,安装成功后生成以下文件及目录<img src="//cto.wang/usr/uploads/2016/07/20160703160345-96.png" title="1433041553103874.png" alt="46.png" /></p> <p></p> <p> 5、cd /mnt/sysroot/目录中,使用cpio归档当前所有文件做备份,备份完成后删除所有文件</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160345-72.png" title="1433041724908574.png" alt="47.png" /></p> <p> 复制编译busybox时产生的文件到/mnt/sysroot/,复制时使用-a选项,保持源文件的属性</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160345-42-1.png" title="1433041739111839.png" alt="48.png" /></p> <p> </p> <p> 6、复制完成后,确保/mnt/sysroot/sbin/目中要有init脚本</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160345-18.png" title="1433041750108759.png" alt="49.png" /></p> <p></p> <p> 7、删除linuxrc链接文件,然后创建系统初始化所需要的目录</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160345-67-1.png" title="1433042030135079.png" alt="50.png" /></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160346-2.png" title="1433042080477042.png" alt="54.png" /></p> <p></p> <p> 8、在/mnt/sysroot/etc/目中中创建network文件,内容如下:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160346-59.png" title="1433042232119164.png" alt="51.png" /></p> <p></p> <p> 9、在/mnt/sysroot/etc/rc.d/目中创建rc.sysinit系统初始化脚本,内容如下:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160346-45.png" title="1433042786158629.png" alt="57.png" /></p> <p></p> <p> 10、创建完成后,给/mnt/sysroot/etc/rc.d/rc.sysinit.添加执行权限</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160346-4.png" title="1433042342926888.png" alt="53.png" /></p> <p> </p> <p> 11、在/mnt/sysroot/etc/中创建系统初始化需要的文件inittab,内容如下:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160346-6.png" title="1433042632952180.png" alt="56.png" /></p> <p></p> <p> 12、创建启动时需要的字符设备</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160346-15.png" title="1433042795407820.png" alt="58.png" /></p> <p></p> <p> 13、运行sync同步数据,然后挂起宿主机,启动新建的虚拟机,启动结果如下:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160346-81.png" title="1433042878139985.png" alt="59.png" /></p> <p></p> <p> 14、关闭新建的虚拟机,启动宿主机,在/mnt/sysroot/etc/inttab中定义,系统启动时启动多个终端</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160346-32.png" title="1433042986113005.png" alt="60.png" /></p> <p> </p> <p> 15、运sync同步数据,挂起宿主机,启动新建的虚拟机,启动结果如下</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160346-40.png" title="1433043102696929.png" alt="61.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160346-37.png" title="1433043170546816.png" alt="62.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160346-59-2.png" title="1433043178238607.png" alt="63.png" /></p> <p></p> <p> 16、至此简单的内核编译完成,可以玩耍了,本人写的不好,请大侠多多指教</p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信