Loading... <p> linux系统内核非常的精简,而且基于一切皆文件的思想,使得我们可以再现有系统上挂载一个空硬盘,利用现有系统编译一个内核和相关程序文件并拷贝到空硬盘上。我们就可以用空硬盘来单独运行一个精简的linux系统,这对于依赖于注册表的windows系统来说是不可能实现的。本文简要介绍一下一个<span style="font-family: Calibri">mini linux</span><span style="font-family: 宋体">的安装制作过程</span></p> <p><span style="font-family: 宋体">实现的基本换进:vmware workstation</span></p> <p><span style="font-family: 宋体">实现的基本思想:</span><span style="font-family: Calibri">kernel+busybox</span></p> <p><span style="font-family: Calibri">软件包:</span><span style="font-family: Calibri">kernel </span><span style="font-family: Calibri"><span style="font-family: Calibri"><span style="font-family: Calibri">www.kernel.org </span></span></span><span style="font-family: Calibri">busybox www.busybox.net</span></p> <p><span style="font-family: Calibri"> 一、基本实现</span></p> <p><span style="font-family: 宋体"> 1、在现有系统上添加一块独立硬盘,以便装载</span><span style="font-family: Calibri">mini linux</span></p> <p><span style="font-family: Calibri"> fdisk /dev/sdc</span></p> <p><span style="font-family: Calibri"> mke2fs -t ext4 /dev/sdc1</span></p> <p><span style="font-family: Calibri"> mke2fs -t ext4 /dev/sdc2</span></p> <p><span style="font-family: Calibri"> </span><span style="font-family: Calibri">mkdir /mnt/{boot,fsroot}</span></p> <p><span style="font-family: Calibri"> </span><span style="font-family: Calibri">mount /dev/sdc1 /mnt/boot</span></p> <p><span style="font-family: Calibri"> mount /dev/sdc2 /mnt/fsroot</span></p> <p><span style="font-family: Calibri"> </span><span style="font-family: 宋体"> 2、下载</span><span style="font-family: Calibri">kernel</span><span style="font-family: 宋体">到</span><span style="font-family: Calibri">/usr/src并解压包tar xf linux-4.5.2.tar.xz </span></p> <p><span style="font-family: Calibri"> 3、</span><span style="font-family: Calibri">make allnoconfig </span><span style="font-family: 宋体">先生成一个纯净的</span><span style="font-family: Calibri">.config</span></p> <p><span style="font-family: 宋体"> 可能出错情况说明</span></p> <p><span style="font-family: Calibri"> [root@node1 linux]# make allnoconfig</span></p> <p><span style="font-family: Calibri"> make: Warning: File `arch/x86/Makefile' has modification time 2.7e+06 s in the future</span></p> <p><span style="font-family: Calibri"> make[1]: Warning: File `scripts/Makefile.host' has modification time 2.7e+06 s in the future</span></p> <p><span style="font-family: 宋体"> 这个是由于系统时间不对引起</span><span style="font-family: Calibri"> date -s</span><span style="font-family: 宋体">设置系统时间</span> <span style="font-family: 宋体">或者使用</span><span style="font-family: Calibri">ntpdate</span><span style="font-family: 宋体">同步系统时间</span><span style="font-family: Calibri"> netdate ntpserver</span></p> <p><span style="font-family: Calibri"> </span><span style="font-family: Calibri"> 4、make menuconfig</span><span style="font-family: 宋体">配置需要的编译项目</span></p> <p><span style="font-family: 宋体"> 可能出错情况说明</span></p> <p><span style="font-family: Calibri"> [root@node1 linux]# make menuconfig</span></p> <p><span style="font-family: Calibri"> scripts/kconfig/lxdialog/dialog.h:38:20: error: curses.h: No such file or directory</span></p> <p><span style="font-family: Calibri"> In file included from scripts/kconfig/mconf.c:23:</span></p> <p><span style="font-family: 宋体"> 这个是由于</span><span style="font-family: Calibri">ncurses-devel</span><span style="font-family: 宋体">模块,</span><span style="font-family: Calibri">yum</span><span style="font-family: 宋体">安装一下,</span><span style="font-family: Calibri">ncurses</span><span style="font-family: 宋体">提供字符终端处理库,包括面板和菜单。</span></p> <p><span style="font-family: Calibri"> </span><span style="font-family: 宋体">5、选择基础的需要的配置项目:</span></p> <p><span style="font-family: 宋体"> 由于要在现有平台直接移植一些功能,所以基础平台需要选择一样的:</span></p> <p><span style="font-family: 宋体"> 64-bit kernel</span><span style="font-family: Calibri"></span></p> <p style="text-align: center"><span style="font-family: Calibri"> <img title="1462191936933261.png" src="//cto.wang/usr/uploads/2016/07/20160703184312-12.png" /></span></p> <p><span style="font-family: Calibri"> cpu </span><span style="font-family: 宋体">类型</span></p> <p style="text-align: center"><img style="width: 445px;height: 437px" title="1462191936405103.png" src="//cto.wang/usr/uploads/2016/07/20160703184312-39.png" width="372" height="439" /></p> <p style="text-align: center"><img title="1462191936304448.png" src="//cto.wang/usr/uploads/2016/07/20160703184312-38.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 支持多核心</span></p> <p style="text-align: center"><img title="1462191936713434.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-42.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 支持</span><span style="font-family: Calibri">pci</span></p> <p style="text-align: center"><img title="1462191936105669.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-21.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 硬盘驱动编入:</span></p> <p style="text-align: center"><img title="1462191936310332.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-71.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p style="text-align: center"><img title="1462191936462168.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-89.png" /></p> <p><span style="font-family: Calibri"> fusion mpt</span><span style="font-family: 宋体">是</span><span style="font-family: Calibri">scsi</span><span style="font-family: 宋体">的中层驱动,等于是通讯层驱动,还要选择物理层驱动:</span></p> <p><span style="font-family: Calibri"> scsi device support—scsi device support scsi disk support</span></p> <p style="text-align: center"><img title="1462191936452347.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-40-1.png" /></p> <p><span style="font-family: 宋体"> 输入设备驱动选择:</span></p> <p style="text-align: center"><img title="1462191937174155.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-57-1.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 6、基础的功能都选择完毕,可以先编译一次看看:</span></p> <p><span style="font-family: Calibri"> make -j 4 bzImage —-</span><span style="font-family: 宋体">只编译内核</span></p> <p><span style="font-family: 宋体"> 编译完成后,会显示编译好的内核的大小和路劲</span></p> <p style="text-align: center"><img title="1462191937970667.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-25.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 7、安装</span><span style="font-family: Calibri">grub</span><span style="font-family: 宋体">,以便新系统启动引导:</span></p> <p><span style="font-family: Calibri"> gurb-install –root-directory=/mnt /dev/sdc</span></p> <p style="text-align: center"><img title="1462191937354729.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-15.png" /></p> <p><span style="font-family: 宋体"> 编辑</span><span style="font-family: Calibri">grub</span><span style="font-family: 宋体">配置文件</span><span style="font-family: Calibri">:</span></p> <p style="text-align: left"><span style="font-family: Calibri"> vim /mnt/boot/grub/grub.conf</span></p> <p style="text-align: center"><img title="1462191937138261.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-59.png" /></p> <p><span style="font-family: 宋体"> 8、将编译好的文件拷贝到</span><span style="font-family: Calibri">boot</span><span style="font-family: 宋体">中</span></p> <p style="text-align: center"><img title="1462191937725624.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-71-1.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 至此,最基本的配置及文件准备完成,我们用此硬盘作为一个新虚拟机的硬盘启动系统,会发现如下提示:</span></p> <p><img title="1462191937915200.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-36.png" /></p> <p><span style="font-family: 宋体">可以看到,虽然硬盘被识别,但是文件系统并未被识别驱动,为此我们需要选择内核支持的文件系统并重新编译。</span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 9、在</span><span style="font-family: Calibri">file system</span><span style="font-family: 宋体">中选择需要加载的文件系统的格式:</span></p> <p style="text-align: center"><img title="1462191937914298.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-19.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 同时,选择支持的可执行程序的格式,因为我们加载文件系统,就需要运行上面的程序</span></p> <p style="text-align: center"><img title="1462191937399219.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-69.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 10、编译完成后我们重新启动新的主机,发现文件系统可以识别了,但是没有</span><span style="font-family: Calibri">init</span><span style="font-family: 宋体">程序,系统还是无法正常启动。</span></p> <p style="text-align: center"><img title="1462191937329618.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-55.png" /></p> <p><span style="font-family: 宋体"> 我们可以查看</span><span style="font-family: Calibri">/usr/src/linux2/init/main.c</span><span style="font-family: 宋体">中查看系统默认启动时查找应用程序顺序:</span></p> <p style="text-align: center"><img title="1462191937108264.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-9.png" /></p> <p><span style="font-family: 宋体"> 我们还是先移一个</span><span style="font-family: Calibri">bash</span><span style="font-family: 宋体">到</span><span style="font-family: Calibri">sysroot</span><span style="font-family: 宋体">中,以便启动系统。</span></p> <p><span style="font-family: 宋体"> 对于一个根文件系统,我们先创建基本的目录</span></p> <p><img title="1462191937179291.png" src="//cto.wang/usr/uploads/2016/07/20160703184313-94.png" /></p> <p><span style="font-family: 宋体"> 下面我们要复制程序,复制程序除了复制程序本身,还要复制程序文件所依赖的库文件,我们需要建立一个脚本,以实现程序的复制</span></p> <p><span style="font-family: Calibri"> vim cpcmd.sh</span></p> <p style="text-align: center"><img title="1462191937744658.png" src="//cto.wang/usr/uploads/2016/07/20160703184314-52.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 通过此脚本将</span><span style="font-family: Calibri">bash</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">ls</span><span style="font-family: 宋体">拷贝到</span><span style="font-family: Calibri">/mnt/sysroot,</span><span style="font-family: 宋体">可以通过</span><span style="font-family: Calibri">chroot</span><span style="font-family: 宋体">来测试一下</span></p> <p style="text-align: center"><img title="1462191937790415.png" src="/upload/mrtnrvs0wti.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 此时</span><span style="font-family: Calibri">bash</span><span style="font-family: 宋体">已经拷贝完成,我们编辑一下</span><span style="font-family: Calibri">/mnt/boot/grub/grub.conf,</span><span style="font-family: 宋体">明确告诉系统</span><span style="font-family: Calibri">init</span><span style="font-family: 宋体">程序</span></p> <p style="text-align: center"><img title="1462191938359516.png" src="/upload/kyjg41nulao.png" /></p> <p><span style="font-family: 宋体"> 再启动新主机,会发现系统已经可以运转</span></p> <p><img title="1462191938974868.png" src="/upload/r4mdt21msuc.png" /></p> <p><span style="font-family: 宋体"> 到此,我们实现了一个简单的</span><span style="font-family: Calibri">MINI LINUX。</span></p> <p><span style="font-family: Calibri"></span> </p> <p><span style="font-family: Calibri"></span> </p> <p><span style="font-family: Calibri">二、</span><span style="font-family: 宋体">下面我们将演示如何使用</span><span style="font-family: Calibri">busybox</span><span style="font-family: 宋体">构建。</span><span style="font-family: Calibri"> </span></p> <p><span style="font-family: Calibri">BusyBox </span><span style="font-family: 宋体">是一个集成了一百多个最常用</span><span style="font-family: Calibri">linux</span><span style="font-family: 宋体">命令和工具的软件。</span><span style="font-family: Calibri">BusyBox </span><span style="font-family: 宋体">包含了一些简单的工具,例如</span><span style="font-family: Calibri">ls</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">cat</span><span style="font-family: 宋体">和</span><span style="font-family: Calibri">echo</span><span style="font-family: 宋体">等等,还包含了一些更大、更复杂的工具,例</span><span style="font-family: Calibri">grep</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">find</span><span style="font-family: 宋体">、</span><span style="font-family: Calibri">mount</span><span style="font-family: 宋体">以及</span><span style="font-family: Calibri">telnet</span><span style="font-family: 宋体">。有些人将</span><span style="font-family: Calibri"> BusyBox </span><span style="font-family: 宋体">称为</span><span style="font-family: Calibri"> Linux </span><span style="font-family: 宋体">工具里的瑞士军刀。简单的说</span><span style="font-family: Calibri">BusyBox</span><span style="font-family: 宋体">就好像是个大工具箱,它集成压缩了</span><span style="font-family: Calibri"> Linux </span><span style="font-family: 宋体">的许多工具和命令,也包含了</span><span style="font-family: Calibri"> Android </span><span style="font-family: 宋体">系统的自带的</span><span style="font-family: Calibri">shell</span><span style="font-family: 宋体">。</span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体">为了方便我们拷贝使用,我们采用静态编译的方式编译</span><span style="font-family: Calibri">busybox</span><span style="font-family: 宋体">,而不是采用共享库方式。</span></p> <p><span style="font-family: 宋体">要实现静态编译,我们要依赖于</span><span style="font-family: Calibri">glibc</span><span style="font-family: 宋体">库中的</span><span style="font-family: Calibri">glibc-static</span><span style="font-family: 宋体">支持,首先需要安装</span><span style="font-family: Calibri">glibc-static</span></p> <p style="text-align: center"><img title="1462191938287294.png" src="/upload/2uekiaxqgwq.png" /></p> <p><span style="font-family: Calibri">busybox</span><span style="font-family: 宋体">的编译方法和内核的编译方法类似,可以采用</span><span style="font-family: Calibri">make menuconfig</span><span style="font-family: 宋体">配置编译选项</span></p> <p style="text-align: center"><img title="1462191938652926.png" src="/upload/pnbngjxbuke.png" /></p> <p><span style="font-family: 宋体">在</span><span style="font-family: Calibri">Busybox Settings-build options</span><span style="font-family: 宋体">中选择采用静态编译方式:</span></p> <p style="text-align: center"><img title="1462191938963182.png" src="/upload/zc0eehy5j4h.png" /></p> <p><span style="font-family: Calibri">busybox settings-installation options</span><span style="font-family: 宋体">中可以选择采用什么样的链接安装,默认采用软链接方式</span></p> <p style="text-align: center"><img title="1462191938194304.png" src="/upload/im0j3m2zfb5.png" /></p> <p><span style="font-family: 宋体">执行</span><span style="font-family: Calibri">make && make install</span><span style="font-family: 宋体">,默认安装在当前目录的</span><span style="font-family: Calibri">_install</span><span style="font-family: 宋体">目录下。</span></p> <p><span style="font-family: 宋体">清空原有的</span><span style="font-family: Calibri">/mnt/sysroot</span><span style="font-family: 宋体">目录</span></p> <p><span style="font-family: 宋体">拷贝安装后的</span><span style="font-family: Calibri">busybox</span><span style="font-family: 宋体">到</span><span style="font-family: Calibri">/mnt/sysroot/</span><span style="font-family: 宋体">目录中</span></p> <p><span style="font-family: Calibri">cp -a _install/* /mnt/sysroot/</span></p> <p style="text-align: center"><img title="1462191938230564.png" src="/upload/hpaph2dwkdh.png" /></p> <p><span style="font-family: 宋体">可以看到,</span><span style="font-family: Calibri">ash</span><span style="font-family: 宋体">已经可以运行</span></p> <p><span style="font-family: 宋体">修改</span><span style="font-family: Calibri">grub</span><span style="font-family: 宋体">的</span><span style="font-family: Calibri">conf</span><span style="font-family: 宋体">文件:</span></p> <p style="text-align: center"><img title="1462191938609671.png" src="/upload/mceu4wjf3s5.png" /></p> <p><span style="font-family: 宋体">由于目前</span><span style="font-family: Calibri">sysroot</span><span style="font-family: 宋体">目录下只有</span><span style="font-family: Calibri">bin</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">sbin</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">usr</span><span style="font-family: 宋体">目录,我们再创建相关目录补全(少了</span><span style="font-family: Calibri">boot</span><span style="font-family: 宋体">)</span></p> <p style="text-align: center"><img title="1462191938591808.png" src="/upload/m1jg5kndmbi.png" /></p> <p><span style="font-family: 宋体">目前系统依赖于</span><span style="font-family: Calibri">init</span><span style="font-family: 宋体">,所以我们需要编辑</span><span style="font-family: Calibri">inittab</span><span style="font-family: 宋体">,告知系统如何初始化:</span></p> <p><span style="font-family: Calibri">vim /mnt/sysroot/etc/inittab</span></p> <p style="text-align: center"><img title="1462191938818416.png" src="/upload/wuknwzlcv4t.png" /></p> <p style="text-align: center"><span style="font-family: 宋体">第一项:说明系统初始化脚本</span></p> <p style="text-align: center"><span style="font-family: 宋体">第二项:说明控制台</span></p> <p style="text-align: center"><span style="font-family: 宋体">第三项:说明重启</span></p> <p style="text-align: center"><span style="font-family: 宋体">第四项:说明关机时卸载所有挂载文件</span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体">再创建</span><span style="font-family: Calibri">rc.sysinit</span><span style="font-family: 宋体">脚本</span></p> <p><span style="font-family: Calibri">mkdir /mnt/sysroot/etc/rc.d</span></p> <p><span style="font-family: Calibri">vim /mnt/sysroot/etc/rc.d/rc.sysinit</span></p> <p style="text-align: center"><img title="1462191938321490.png" src="/upload/oybudwaj5y1.png" /></p> <p><span style="font-family: Calibri"></span> </p> <p><span style="font-family: Calibri">chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit</span></p> <p><span style="font-family: 宋体">至此,我们可以尝试启动新的</span><span style="font-family: Calibri">mini linux</span></p> <p><span style="font-family: 宋体">(注意,如果系统提示没有</span><span style="font-family: Calibri">/dev/console</span><span style="font-family: 宋体">文件,则编译内核需要选择:</span></p> <p><span style="font-family: Calibri">device drivers–Generic device option</span><span style="font-family: 宋体">中自动装在</span><span style="font-family: Calibri">devtmpfs</span><span style="font-family: 宋体">到</span><span style="font-family: Calibri">dev</span><span style="font-family: 宋体">目录</span></p> <p><span style="font-family: Calibri"> <img title="1462192092736627.png" src="/upload/xwkomrmrnfi.png" /> </span><span style="font-family: 宋体">)</span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体">三、我们对上述的简单的</span><span style="font-family: Calibri">Mini Linux</span><span style="font-family: 宋体">做相应的补充:</span></p> <p><span style="font-family: Calibri">1</span><span style="font-family: 宋体">、创建</span><span style="font-family: Calibri">fstab</span><span style="font-family: 宋体">文件以开机自动挂载文件系统:</span></p> <p><span style="font-family: Calibri"> vim etc/fstab</span></p> <p><span style="font-family: Calibri"> </span></p> <p style="text-align: center"><img title="1462192092223766.png" src="/upload/vygozjfpnv1.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: Calibri"></span>2、<span style="font-family: 宋体">在</span><span style="font-family: Calibri">rc.sysinit</span><span style="font-family: 宋体">中指明执行</span><span style="font-family: Calibri">mount -a</span><span style="font-family: 宋体">(</span><span style="font-family: Calibri">mount -a</span><span style="font-family: 宋体">就是挂载</span><span style="font-family: Calibri">fstab</span><span style="font-family: 宋体">文件中所有的文件)</span></p> <p style="text-align: center"><img title="1462192092805065.png" src="/upload/oz3o34spkjg.png" /></p> <p><span style="font-family: Calibri">3</span><span style="font-family: 宋体">、启动时候我们只是采用了控制台</span><span style="font-family: Calibri">console</span><span style="font-family: 宋体">,我们可以使用虚拟终端,编辑</span><span style="font-family: Calibri">inittab</span><span style="font-family: 宋体">文件:</span></p> <p style="text-align: center"><img title="1462192092548968.png" src="/upload/yvq2l5snmpd.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体">完成以上几步后我们再启动</span><span style="font-family: Calibri">Mini Linux</span><span style="font-family: 宋体">,可以看到我们可以通过</span><span style="font-family: Calibri">ctrl+alt+F123</span><span style="font-family: 宋体">里切换中断了。</span></p> <p><span style="font-family: 宋体">同时可以看到开机要求的挂载的系统也都已经自动挂载上</span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体">4、我们用模块方式加载网卡的驱动:</span></p> <p><span style="font-family: Calibri">lspci </span><span style="font-family: 宋体">查看网卡类型</span></p> <p style="text-align: center"><img title="1462192093736771.png" src="/upload/pfv10zttnz0.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体">我们要重新编译内核,首先编译网络支持模块打开网络功能</span></p> <p><span style="font-family: Calibri">networking support–networking options</span><span style="font-family: 宋体">中:</span></p> <p style="text-align: center"><img title="1462192093352688.png" src="/upload/v5llf1pwnu4.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体">在编译网卡驱动:</span></p> <p style="text-align: center"><img title="1462192093782071.png" src="/upload/q3hujuda3xk.png" /></p> <p><span style="font-family: 宋体"></span> </p> <p><span style="font-family: 宋体">上面我们是将网卡编译进了内核,那么我们如何用模块编译呢?</span></p> <p style="text-align: left"><span style="font-family: Calibri"></span> <span style="font-family: 宋体">修改内核编译配置</span><span style="font-family: Calibri"> ethernet driver support</span></p> <p style="text-align: center"><img title="1462192093718107.png" src="/upload/f4x2c35teqn.png" /></p> <p><span style="font-family: 宋体">此时我们对内核编译就拆除了对网卡驱动的支持</span></p> <p><span style="font-family: 宋体">我们对单独的网卡驱动模块编译:</span></p> <p><span style="font-family: 宋体">网卡模块所在位置:由于我们之前编译进内核过,所以现在只有</span><span style="font-family: Calibri">.O</span><span style="font-family: 宋体">的文件,一般来说都是</span><span style="font-family: Calibri">.c</span><span style="font-family: 宋体">的文件:</span></p> <p><img title="1462192093645216.png" src="/upload/405vsg0mpsl.png" /></p> <p><span style="font-family: 宋体">单独编译内核模块:</span></p> <p><span style="font-family: Calibri">make M=path/to/somedir/</span></p> <p><span style="font-family: Calibri">#make M=drivers/net/ethernet/intel/e1000/</span></p> <p style="text-align: center"><img title="1462192093468352.png" src="/upload/o2h3r02n2z1.png" /></p> <p><span style="font-family: 宋体">然后将编译好的</span><span style="font-family: Calibri">ko</span><span style="font-family: 宋体">文件拷贝到</span><span style="font-family: Calibri">/mnt/sysroot/lib/modules</span><span style="font-family: 宋体">目录下:</span></p> <p style="text-align: center"><img title="1462192093639470.png" src="/upload/qulm4v1e1de.png" /></p> <p><span style="font-family: 宋体">完成后我们进入</span><span style="font-family: Calibri">Mini Linux</span><span style="font-family: 宋体">中会发现网卡已经没有了,需要手动装在网卡模块</span></p> <p style="text-align: center"><img title="1462192093590129.png" src="/upload/44c1w451bgo.png" /></p> <p><span style="font-family: 宋体">如果要自动装在,需要写脚本自动扫描所有硬件并安装合适的驱动。</span></p> <p><span style="font-family: 宋体">简单一点我们可以在</span><span style="font-family: Calibri">rc.sysinit</span><span style="font-family: 宋体">中用命令实现开机自动装载</span></p> <p> </p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体">5、我们还可以为系统创建登录</span></p> <p><span style="font-family: Calibri"></span> <span style="font-family: 宋体">创建</span><span style="font-family: Calibri">passwd</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">group</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">shadow</span><span style="font-family: 宋体">文件:</span></p> <p style="text-align: center"><span style="font-family: Calibri"> <img title="1462192093968596.png" src="/upload/twzr5frjojx.png" /></span></p> <p><span style="font-family: Calibri"></span> <span style="font-family: 宋体"></span><span style="font-family: Calibri">chroot</span><span style="font-family: 宋体">到</span><span style="font-family: Calibri">minilinux</span><span style="font-family: 宋体">中采用</span><span style="font-family: Calibri">useradd</span><span style="font-family: 宋体">添加</span><span style="font-family: Calibri">root</span><span style="font-family: 宋体">,并对文件作相应修改</span></p> <p style="text-align: center"><span style="font-family: Calibri"> <img title="1462192093907834.png" src="/upload/zntoaujuxcw.png" /></span></p> <p><span style="font-family: Calibri"> vim etc/passwd</span></p> <p style="text-align: center"><img title="1462192093446089.png" src="/upload/2l0z3upa1g4.png" /></p> <p><span style="font-family: Calibri"> vim etc/group</span></p> <p style="text-align: center"><img title="1462192093754264.png" src="/upload/jm5juw4qeri.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: Calibri"></span> <span style="font-family: 宋体">将目前系统的</span><span style="font-family: Calibri">root</span><span style="font-family: 宋体">密码传递过来</span></p> <p style="text-align: center"><img title="1462192094374323.png" src="/upload/wsgyyq1pfw0.png" /></p> <p><span style="font-family: Calibri"></span> <span style="font-family: 宋体">修改</span><span style="font-family: Calibri">inittab</span><span style="font-family: 宋体">文件</span></p> <p style="text-align: center"><img title="1462192094793054.png" src="/upload/51ky3wnbwqz.png" /></p> <p><span style="font-family: 宋体">以上配置即可</span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体">6、配置为</span><span style="font-family: Calibri">minilinux</span><span style="font-family: 宋体">提供</span><span style="font-family: Calibri">ssh</span><span style="font-family: 宋体">服务支持</span></p> <p><span style="font-family: Calibri">vim etc/issue—</span><span style="font-family: 宋体">显示</span><span style="font-family: Calibri">ssh</span><span style="font-family: 宋体">登录的提示</span></p> <p style="text-align: center"><img title="1462192094454680.png" src="/upload/ofjkpezci4g.png" /></p> <p><span style="font-family: 宋体"> 编译安装</span><span style="font-family: Calibri">dropbear</span></p> <p><span style="font-family: Calibri"> tar xf dropbear-2016.72.tar.bz2</span></p> <p><span style="font-family: Calibri"> cd dropbear-2016.72</span></p> <p><span style="font-family: Calibri"> ./configure<span style="font-family: 宋体">(需要</span><span style="font-family: Calibri">openssl-devel</span><span style="font-family: 宋体">包支持)</span></span></p> <p><span style="font-family: Calibri"> make && <span style="font-family: Calibri">make install</span></span></p> <p><span style="font-family: 宋体"> 使用命令复制脚本将</span><span style="font-family: Calibri">dropbear</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">dropbearkey</span><span style="font-family: 宋体">,</span><span style="font-family: Calibri">dbclient</span></p> <p><span style="font-family: Calibri"> </span></p> <p style="text-align: center"><img title="1462192094166568.png" src="/upload/k5mwfxctfny.png" /></p> <p style="text-align: center"><img title="1462192094799472.png" src="/upload/yqpjau2z5lz.png" /></p> <p><span style="font-family: 宋体"> 为目标系统的</span><span style="font-family: Calibri">dropbear</span><span style="font-family: 宋体">生成密钥文件</span></p> <p style="text-align: center"><img title="1462192094619396.png" src="/upload/q5gboez22wa.png" /></p> <p><span style="font-family: 宋体"> 注意:</span><span style="font-family: Calibri">key</span><span style="font-family: 宋体">文件放的位置可以查看</span><span style="font-family: Calibri">options.h</span><span style="font-family: 宋体">获得(在编译路径下)</span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 通过远程</span><span style="font-family: Calibri">ssh</span><span style="font-family: 宋体">登录时,登陆者使用的</span><span style="font-family: Calibri">shell</span><span style="font-family: 宋体">必须为安全</span><span style="font-family: Calibri">shell</span><span style="font-family: 宋体">,在</span><span style="font-family: Calibri">etc/shells</span><span style="font-family: 宋体">文件中定义:</span></p> <p style="text-align: center"><img title="1462192094486810.png" src="/upload/wjbuxa523g4.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 系统上</span><span style="font-family: Calibri">nsswitch</span><span style="font-family: 宋体">服务支持(</span><span style="font-family: Calibri">dropbear</span><span style="font-family: 宋体">在登录认证是需要将用户名转换成对应的用户</span><span style="font-family: Calibri">id</span><span style="font-family: 宋体">号)</span></p> <p><span style="font-family: Calibri"> vim etc/nsswitch.conf</span></p> <p style="text-align: center"><img title="1462192094473666.png" src="/upload/ykvffxl3eyz.png" /></p> <p> 将相关的库文件拷贝到对应目录下</p> <p style="text-align: center"><img title="1462192094512572.png" src="/upload/akmpuyf1lvt.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 注意:可以将</span><span style="font-family: Calibri">passwd文件</span><span style="font-family: 宋体">中用户最后对应的</span><span style="font-family: Calibri">shell</span><span style="font-family: 宋体">修改为该用户想启用的</span><span style="font-family: Calibri">shell</span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 编辑</span><span style="font-family: Calibri">/root/.bash_profile(只争对bash有效)</span></p> <p style="text-align: center"><img title="1462192109307124.png" src="/upload/om0c13p3ali.png" /></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体"> 创建</span><span style="font-family: Calibri">/vra/run</span><span style="font-family: 宋体">目录 (创建pid file需要)</span></p> <p><span style="font-family: 宋体"> 启动</span><span style="font-family: Calibri">dropbear </span><span style="font-family: 宋体">:</span><span style="font-family: Calibri">dropbear -E -F</span></p> <p><span style="font-family: 宋体"> 发现</span><span style="font-family: Calibri">dropbear</span><span style="font-family: 宋体">已经可以正常启动(注:新版本dropbear禁止使用root登录)</span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: 宋体">以上就是</span><span style="font-family: Calibri">mini linux</span><span style="font-family: 宋体">制作的全部内容,可以加深对于</span><span style="font-family: Calibri">linux</span><span style="font-family: 宋体">操作系统的理解。</span></p> <p><span style="font-family: Calibri"> </span></p> <p><span style="font-family: Calibri"></span> </p> <p><span style="font-family: Calibri"> </span></p> <p> </p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信