本文正在参与 “走过Linux 三十年”话题征文活动
很高兴参加这次征文活动,借这次机会向Linux开源项目致敬!
这次给大家分享一次Linux系统制作的文章,Linux的模块化,简单化值得我们学习,加油!
制作环境
vmware 虚拟机软件
虚拟机1:安装系统 Ubuntu20
虚拟机2:一块虚拟磁盘 2 G
制作步骤
制作系统的大致流程:虚机1将最小系统制作完成后,将2G的虚拟磁盘,挂载到虚机2环境上运行。
首先进入到 虚机1, 将2G虚拟磁盘 挂载/mnt目录下
进入/mnt目录中,grub-install 生成相关配置文件及结构
--root-directory
指定虚拟磁盘设备
cd /mnt
grub-install --root-directory=/mnt /dev/sda
执行后, 目录会生成boot目录,及子目录grub
拷贝本机系统中内核文件到/mnt/boot目录
cd /mnt/boot
cp /boot/vmlinuz-5.11.0-27-generic vmlinuz
cp /boot/initrd.img-5.11.0-27-generic initrd.img
创建grup.cfg 引导配置文件
vim /mnt/boot/grub/grub.cfg
配置内容
default=0
timeout=10
menuentry 'mini ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-02c4dcdd-de2c-43bf-9757-3043aa5735c6' {
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 d220d03a-f1bd-4d4f-87a0-e15cf9d13418
else
search --no-floppy --fs-uuid --set=root d220d03a-f1bd-4d4f-87a0-e15cf9d13418
fi
linux /boot/vmlinuz root=UUID=d220d03a-f1bd-4d4f-87a0-e15cf9d13418 ro locale=en_US quiet enforcing=0
initrd /boot/initrd.img
}
注意:UUID
各个磁盘不一致, 可以使用以下命令查看 ls -l /dev/disk/by-uuid/
创建linux目录结构
cd /mnt
mkdir -pv {bin,dev,etc,lib,lib64,proc,sys}
拷贝基础命令
cp /bin/bash /mnt/bin
cp /bin/ls /mnt/bin
cp /bin/echo /mnt/bin
cp /bin/sh /mnt/bin
cp /bin/dash /mnt/bin
拷贝依赖动态库
创建/lib/x86_64-linux-gnu
目录
mkdir /mnt/lib/x86_64-linux-gnu
bash依赖的库文件
cp /lib/x86_64-linux-gnu/libtinfo.so.6 /mnt/lib/x86_64-linux-gnu
cp /lib/x86_64-linux-gnu/libdl.so.2 /mnt/lib/x86_64-linux-gnu
cp /lib/x86_64-linux-gnu/libc.so.6 /mnt/lib/x86_64-linux-gnu
cp /lib64/ld-linux-x86-64.so.2 /lib64
其他依赖的库文件
cp /usr/lib/x86_64-linux-gnu/libc.so /mnt/lib/x86_64-linux-gnu
cp /usr/lib/x86_64-linux-gnu/libc.so.6 /mnt/lib/x86_64-linux-gnu
cp /usr/lib/x86_64-linux-gnu/libdl.so /mnt/lib/x86_64-linux-gnu
cp /usr/lib/x86_64-linux-gnu/libdl.so.2 /mnt/lib/x86_64-linux-gnu
cp /usr/lib/x86_64-linux-gnu/libselinux.so.1 /mnt/lib/x86_64-linux-gnu
cp /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0 /mnt/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libpthread.so.0 /mnt/lib/x86_64-linux-gnu/
创建欢迎脚本
vim /mnt/init
新增内容
#!/bin/bash
echo -e "\t Welcome to \033[31mMy Mini Ubuntu Linux\033[0m"
设置执行权限
chmod +x /mnt/init
测试用chroot
命令,检查虚拟环境是否有问题
chroot /mnt
最后sync写入下磁盘
sync
上面步骤做完,最小系统就已经制作完成了。
系统启动
首先在 vmware 虚机2 设置页面中, 选择2G虚拟磁盘
启动后,grub页面
进入linux系统