miniLinux的制作(图文)

1、解压Linux内核源码包至/usr/src/目录下,并软连接至linux中。

miniLinux的制作(图文)_第1张图片


2、进入linux文件夹中,使用make  help获取帮助。执行make  allnoconfig关闭所有可选的配置。

miniLinux的制作(图文)_第2张图片


3、执行make  menuconfig对内核进行编译前的功能模块进行配置。以下的配置选项是根据自己的需要和对主机适配信息选择。可通过lsmod、lscpu、lspci等进行查看。

miniLinux的制作(图文)_第3张图片

miniLinux的制作(图文)_第4张图片

miniLinux的制作(图文)_第5张图片

miniLinux的制作(图文)_第6张图片

miniLinux的制作(图文)_第7张图片


4、进行编译。编译的最终的结果在当前目录下的arch/x86/boot/bzImage。


5、前面四步完成后,为主机添加一个新的硬盘。

miniLinux的制作(图文)_第8张图片


6、为新的硬盘创建sdb1和sdb2两个分区,并格式化成ext4文件系统。

miniLinux的制作(图文)_第9张图片

miniLinux的制作(图文)_第10张图片

miniLinux的制作(图文)_第11张图片


7、将sdb1挂载到/mnt/boot/作为新系统的boot分区,sdb2挂载到/mnt/sysroot/作为新系统的根目录。

miniLinux的制作(图文)_第12张图片


8、在sdb设备上安装grub,并在boot下配置grub.conf文件,然后创建一些必须的文件夹。

miniLinux的制作(图文)_第13张图片

miniLinux的制作(图文)_第14张图片


9、使用编写的shell脚本复制本机的一些常用命令至sdb中的相应文件夹中。(shell脚本命令代码在文末)


10、可以增加额外init脚本实现开机挂载文件系统。

miniLinux的制作(图文)_第15张图片


11、一切准备就绪之后,将上述编译好的内核系统 bzImage 复制到/mnt/boot/下之后执行sync命令。


12、新建虚拟机,注意的一项是到 选择现有磁盘 这一步时需要找到相应的新建磁盘设备。miniLinux启动成功并且发现复制过来的命令也可以执行生效了。(宿主机需要挂起或者关闭)

miniLinux的制作(图文)_第16张图片miniLinux的制作(图文)_第17张图片


通过上述的实验基本上可以实现一个自定制的miniLinux系统,但是实际应用中我们需要与busyBox相互结合实现一个具有实质应用的系统。在上述的基础上:

1、我们需要以静态的方式对busyBox进行编译,首先安装glibc-static模块。


2、解压busyBox后,在解压目录下执行 make  menuconfig对其进行配置。详情:https://www.busybox.net

miniLinux的制作(图文)_第18张图片


3、编译安装busyBox。


4、编译安装完成后,生成的文件在_install目录下,并将其全部复制到/mnt/sysroot/目录下。(前面步骤所创建的文件夹和命令可全部删除,使用busyBox代替即可)

miniLinux的制作(图文)_第19张图片


附-复制命令脚本:

  #!/bin/bash
		#
		target=/mnt/sysroot
		[ -d $target ] || mkdir /mnt/sysroot

		read -p "A command: " command

		libcp() {
		    for lib in $(ldd $1 |  grep -o "[^[:space:]]*/lib[^[:space:]]*"); do
		        libdir=$(dirname $lib)
		        [ -d $target$libdir ] || mkdir -p $target$libdir
		        [ -f $target$lib ] || cp $lib $target$lib
		    done
		}

		while [ "$command" != 'quit' ]; do
		    if ! which $command &> /dev/null; then
		        read -p "No such command, enter again: " command
		        continue
		    fi
		    command=$(which --skip-alias $command)
		    cmnddir=$(dirname $command)

		    [ -d $target$cmnddir ] || mkdir -p $target$cmnddir
		    [ -f $target$command ] || cp $command $target$command
		    libcp $command
		    read -p "Another command(quit): " command
		done


你可能感兴趣的:(miniLinux的制作(图文))