技术分享 | 带你从零开始搭建linux最小系统
Linux操作系统运用十分广泛,但我们有时不需要运用所有组件,或者对处理机性能有要求,所以需要对Linux内核进行裁剪。
1.开发环境
系统 ubantu18.04
linux内核源码 linux-4.9.229
b
前言: Linux操作系统运用十分广泛,但我们有时不需要运用所有组件,或者对处理机性能有要求,所以需要对Linux内核进行裁剪。 1.开发环境 系统 ubantu18.04 linux内核源码 linux-4.9.229 busybox版本 busybox-1.30.0 虚拟机 qemu 2.0.0 2.相关软件安装 这是一个shell文件也可以一行行复制执行(shell脚本) # download code curl -o kernel.tar.xz # export ARCH=x86 # unzip Kernel tar xf kernel.tar.xz # cd linux-4.9.229 # install curses sudo apt-get install libncurses5-dev # make x86_64_defconfig # cd .. curl -o busybox-1.30.0.tar.bz2 # tar xf busybox-1.30.0.tar.bz2 cd linux-4.9.229 make menuconfig #打开编译配置界面 左右按键选择 …等控制选项 上下选择编译选项 空格选择该选项是否运行 回车键确定操作 选择General setup --→ 按空间建 [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support 如上设置 Device Drivers ---> [*] Block devices ---> RAM block device support (65536) Default RAM disk size (kbytes) 选择Save保存 make 编译 需要等一会 系统编译后位于 arch/x86_64/boot/bzImage 接下来编译busybox 先 make menuconfig 然后设置为静态编译 Busybox Settings ---> Build Options ---> [*] Build BusyBox as a static binary (no shared libs) #make && make install 编译和安装 编译后文件在 __install 创建一些必要的目录和路径 # mkdir etc dev mnt # mkdir -p proc sys tmp mnt # mkdir -p etc/init.d/ # vim etc/fstab proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0 # vim etc/init.d/rcS echo -e "Welcome to tinyLinux" /bin/mount -a echo -e "Remounting the root filesystem" mount -o remount,rw / mkdir -p /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s # chmod 755 etc/init.d/rcS # vim etc/inittab ::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh ::askfirst:-/bin/sh ::cttlaltdel:/bin/umount -a -r # chmod 755 etc/inittab # cd dev # mknod console c 5 1 # mknod null c 1 3 # mknod tty1 c 4 1 以上已经完成了所有linux最小系统所需要的东西 接下来是制作系统镜像 思路参考B站UP主 “简说Linux” 1.先制作一个空的镜像文件; 2.然后把此镜像文件格式化为ext3格式; 3.然后把此镜像文件挂载,并把根文件系统复制到挂载目录; 4.卸载该镜像文件。 5.打成gzip包。 #!/bin/bash rm -rf rootfs.ext3 rm -rf fs dd if=/dev/zero of=./rootfs.ext3 bs=1M count=32 mkfs.ext3 rootfs.ext3 mkdir fs mount -o loop rootfs.ext3 ./fs cp -rf ./_install/* ./fs umount ./fs gzip --best -c rootfs.ext3 > rootfs.img.gz 最终生成的文件系统镜像名字为:rootfs.img.gz 接下来用模拟器启动该镜像。 安装qemu apt-install qemu 接下来启动镜像 # qemu-system-x86_64 \ -kernel ./linux-4.9.229/arch/x86_64/boot/bzImage \ -initrd ./busybox-1.30.0/rootfs.img.gz \ -append "root=/dev/ram init=/linuxrc" \ -serial file:output.txt 打开虚拟机后输入ls测试执行成功 按alt+ctrl退出虚拟机输入 自此一个最小linux系统搭建完成。 结束语 现在我们完成了相当于“hello world”和点灯的操作,但内核开发还有很多的知识等待我们探索。 - End - 技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号linux 技术,我们将持续发布机器人行业最有价值的信息和技术。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |