Loading... <p>一、编译环境</p> <p> 1、准备一台测试机,放置两块硬盘</p> <p> 2、安装"Development Tools"和"Server Platform Development"编译环境</p> <p> 3、内核下载地址:https://www.kernel.org(本人使用的是3.10版本)</p> <p> 4、下载busybox:http://www.busybox.net </p> <p></p> <p>二、编译</p> <p> 1、分区,将新添加的硬盘进行分区,结果如下:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160422-15.png" title="1432595763412319.png" alt="1.png" /></p> <p></p> <p> 2、在/mnt目录下创建boot,sysroot目录,格式化新磁盘分区,分别挂载至/mnt/boot,/mnt/sysroot</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160422-38.png" title="1432596094400670.png" alt="2.png" /></p> <p> </p> <p> 3、以/mnt/boot目录为新系统的/boot目录,/mnt/sysroot/为新系统的根目录,安装grub到/mnt/boot目录,安装方式如下:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160422-55.png" title="1432596485290588.png" alt="3.png" /></p> <p> </p> <p> 4、解压内核源文件至/usr/src,并创建软连接为linux <img src="//cto.wang/usr/uploads/2016/07/20160703160422-50.png" title="1432610485791720.png" alt="1.png" /></p> <p></p> <p> 5、使用make allnoconfig 清除内核所有默认配置:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160423-71.png" title="1432597113599950.png" alt="5.png" /></p> <p> </p> <p> 6、运行make menuconfig,在出现的菜单中选择要使用的内核功能;</p> <p> (1)选择内核支持64位操作系统,支持装载模块</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160423-39.png" title="1432610588103249.png" alt="2.png" /></p> <p> </p> <p> (2)选择内核支持模块卸载</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160423-96.png" title="1432597644473469.png" alt="6.png" /></p> <p> </p> <p> (3)选择CPU型号 <img src="//cto.wang/usr/uploads/2016/07/20160703160423-30-1.png" title="1432598082128783.png" alt="8.png" /></p> <p></p> <p> (4)保存退出</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160423-30-2.png" title="1432598107100178.png" alt="9.png" /></p> <p></p> <p> (5)运行make bzImage进行编译 </p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160423-97.png" title="1432605178221594.png" alt="10.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160423-27.png" title="1432605248132532.png" alt="11.png" /></p> <p></p> <p> (6)复制编译后的内核文件(bzImage)到/mnt/boot目录下</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160423-38.png" title="1432605433297984.png" alt="12.png" /></p> <p> </p> <p> (7)切换到/mnt/boot/grub/目录中,创建grub.conf文件,内容如下:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160423-1.png" title="1432605887660658.png" alt="13.png" /></p> <p> </p> <p> 7、新建虚拟机,以宿主机的磁盘(/dev/sdb)为系统盘</p> <p> 在选择磁盘时使用现有磁盘,如下</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160424-37.png" title="1432607782110949.png" alt="15.png" /></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160424-42.png" title="1432607812944983.png" alt="16.png" /></p> <p></p> <p> 8、虚拟创建完成,在宿主机运行sync,将内存信息同步到磁盘</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160424-45.png" title="1432608188100407.png" alt="17.png" /></p> <p> </p> <p> 9、挂起宿主机,启动新建的虚拟机:</p> <p> 启动界面</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160424-65.png" title="1432610720109676.png" alt="18.png" /></p> <p> 启动完成后提示内恐慌,没有文件系统</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703160424-97.png" title="1432611032941615.png" alt="3.png" /></p> <p></p> <p> 10、给内核添加文件系统,使其能够识别文件系统</p> <p> (1)添加支持的文件系统类型 <img src="//cto.wang/usr/uploads/2016/07/20160703160424-77.png" title="1432611520100123.png" alt="4.png" /></p> <p> </p> <p> (2)选择支持的块设备 <img src="//cto.wang/usr/uploads/2016/07/20160703160424-27.png" title="1432611689269947.png" alt="5.png" /> </p> <p>(3)选择磁盘驱动程序</p> <p><img src="/upload/vzt2xmta4yh.png" title="1432611901410888.png" alt="6.png" /></p> <p><img src="/upload/mwqjrvumkje.png" title="1432614893906036.png" alt="9.png" /></p> <p></p> <p>(4)选择磁盘接口类型</p> <p><img src="/upload/3zlcxt3fs0f.png" title="1432614879600225.png" alt="8.png" /></p> <p> </p> <p> (4)保存选择的配置信息,再次运行make bzImage进行编译</p> <p> (5)将新的内核文件bzImage复制到/mnt/boot/覆盖原有的bzImage</p> <p> <img src="/upload/mgz0rn4iile.png" title="1432612221434612.png" alt="7.png" /></p> <p> (6)运行sync,同步数据信息</p> <p> <img src="/upload/pwy3x0uue3f.png" title="1432612341381211.png" alt="17.png" /></p> <p> (7)挂起宿主机,运行新建的虚拟主机,结果如下</p> <p> <img src="/upload/swtkb02u2y2.png" title="1432615782100367.png" alt="10.png" /></p> <p> </p> <p> 11、添加init程序</p> <p> (1)在/mnt/sysroot/目录中创建系统所需要的目录 <img src="/upload/ltqaq4oj5jp.png" title="1432696679797943.png" alt="11.png" /></p> <p> </p> <p> (2)将bash以及bash依赖的库文件复制到/mnt/sysroot对应的目录中,使用脚本<img src="/upload/4tz2gsvheos.gif" style="line-height: 16px;vertical-align: middle;margin-right: 2px" />bincp.txt(马哥提供的脚本)复制,上传到宿主机,修改后缀名为bincp.sh,添加执行权限即可使用;</p> <p> <img src="/upload/pjjvzsovxhq.png" title="1432697181936287.png" alt="12.png" /></p> <p></p> <p>(3)查看复制的结果:</p> <p> <img src="/upload/0rvplwwm4yo.png" title="1432697336135859.png" alt="13.png" /></p> <p> </p> <p> (4)切换到/mnt/sysroot/bin/目录,给bash做软连接为sh</p> <p> <img src="/upload/ds0tqvdnczp.png" title="1432697616124526.png" alt="14.png" /></p> <p> </p> <p> (5)编辑/mnt/boot/grub/grub.conf,指定init程序是/bin/sh</p> <p> <img src="/upload/h51lsmcr0ct.png" title="1432697849137683.png" alt="15.png" /></p> <p> </p> <p> (6)切换到/usr/src/linux,运行make menuconfig,给内核添加可以支持bash的程序 <img src="/upload/ousflamw4kn.png" title="1432698516525243.png" alt="16.png" /></p> <p></p> <p> (7)添加完成后保存退出,运行 make bzImage进行编译,然后将编译后的结果复制到/mnt/boot/目录中,覆盖原有的bzImage文件</p> <p> <img src="/upload/rdy0ctiaew3.png" title="1432698997859905.png" alt="19.png" /></p> <p> </p> <p> (8)运行sync,同步数据</p> <p> (9)同步完数据后,挂起宿主机,启动新建的虚拟机;启动结果如下:</p> <p> <img src="/upload/2k43sxm0b0h.png" title="1432703935142709.png" alt="21.png" /> </p> <p></p> <p> 12、虽然内核已经可以正常启动,但是没有键盘和鼠标驱动,无法使用键盘鼠标,接下来给内核添加鼠标键盘驱动</p> <p> (1)添加键盘</p> <p> <img src="/upload/fnvjtjp1ppm.png" title="1432704165128184.png" alt="22.png" /> <img src="/upload/2chfm5h5yq2.png" title="1432704398105607.png" alt="23.png" /></p> <p> </p> <p> (2)添加鼠标 <img src="/upload/hjwar4ogb0g.png" title="1432704545414675.png" alt="24.png" /></p> <p></p> <p> (3)添加USB驱动 <img src="/upload/ikvm3pzfjoa.png" title="1432705046408579.png" alt="25.png" /></p> <p></p> <p>(4)添加以上设备驱动后,保存退出,运行make menuconfig,将生成的bzImage复制到/mnt/boot/,覆盖原有的bzImage</p> <p> <img src="/upload/kesihcjrrjw.png" title="1432705404138677.png" alt="26.png" /></p> <p></p> <p>(5)运行sync同步数据</p> <p>(6)同步完数据后,挂起宿主机,运行新建的虚拟机,结果如下: <img src="/upload/vbinjoxf4az.png" title="1432706341451845.png" alt="27.png" /></p> <p></p> <p> 13、添加常用的bash命令,使用bincp.sh脚本添加;</p> <p> <img src="/upload/bwaum0kxoee.png" title="1432706636263047.png" alt="28.png" /></p> <p> </p> <p> 14、添加完bash命令后,运行sync,进行数据同步,同步完成后,挂起宿主机,启动新建的虚拟机,运行添加的bash命令</p> <p> <img src="/upload/xyqbwnyrdix.png" title="1432707191470767.png" alt="29.png" /></p> <p></p> <p> 15、编写init脚本,替换/bin/sh,init脚本内容如下:</p> <p> <img src="/upload/14oslxvhu40.png" title="1432780575353953.png" alt="30.png" /> </p> <p> 添加执行权限</p> <p> <img src="/upload/3is5kcojbud.png" title="1432780731132329.png" alt="31.png" /></p> <p> 16、编辑/mnt/boot/grub/grub.conf,修改init程序位置,使用bincp.sh移植mount命令到/mnt/sysroot对应的目录中</p> <p> (1)编辑/mnt/boot/grub/grub.conf,修改内容如下:</p> <p> <img src="/upload/4afqsenzgue.png" title="1432781567874838.png" alt="32.png" /> </p> <p> </p> <p> (2)移植mount命令</p> <p> <img src="/upload/pke0uhyhsf4.png" title="1432781671132311.png" alt="33.png" /></p> <p></p> <p> (3)运行sync同步数据,同步完成后挂起宿主机,运行新建的测试机,结果如下: <img src="/upload/rncewzhnge4.png" title="1432782931116710.png" alt="34.png" /> </p> <p></p> <p> 17、给内核添加网络功能</p> <p> (1)cd /usr/src/linux目录,运行 make menuconfig,选取网络驱动跟网络功能 <img src="/upload/pnhcslojsp3.png" title="1432784002102626.png" alt="35.png" /> </p> <p> (2)选取网络驱动 <img src="/upload/dbj1xjmeoy5.png" title="1432784528604461.png" alt="36.png" /></p> <p></p> <p> (3)保存退出,运行make bzImage进行编译,将生成的bzImage复制到/mnt/boot/,覆盖原有的bzImage内核</p> <p> <img src="/upload/os2pexczoy4.png" title="1432784835125092.png" alt="37.png" /></p> <p> </p> <p> (4)复制相关的ip命令到/mnt/sysroot对应目录中</p> <p> <img src="/upload/ovww0bpibps.png" title="1432785104229617.png" alt="38.png" /></p> <p> (5)运行sync同步数据,挂起宿主机,启动新建的测试机;结果如下</p> <p> <img src="/upload/ctp1jr3y3bc.png" title="1432791136307463.png" alt="39.png" /></p> <p> <img src="/upload/l3s1dzfuusg.png" title="1432791263101515.png" alt="40.png" /></p> <p> <img src="/upload/egmihn4vhmu.png" title="1432791379572215.png" alt="41.png" /></p> <p> <img src="/upload/c41sbf2ta3h.png" title="1432791493459746.png" alt="42.png" /></p> <p> </p> <p> </p> <p></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信