加入收藏 | 设为首页 | 会员中心 | 我要投稿 广州站长网 (https://www.020zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

技术分享 | 带你从零开始搭建linux最小系统

发布时间:2022-10-28 14:31:04 所属栏目: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脚本)

红旗linux技术社区_linux 集群技术_linux 技术

# 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 技术,我们将持续发布机器人行业最有价值的信息和技术。

(编辑:广州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!