今天我带大家做一下简单的linux小系统,属于自己定制的系统哦。
实验环境:centos6.9虚拟机系统
首先,我们在VMware上给虚拟机添加一个新的硬盘,不需要太大的空间,20G就妥妥够了,我们只是能把系统跑动,有简单的基本命令就行了,然后把硬盘的位置保存在我们便于找到的地方,我放在了我的文档之中,取名为linux,当然名字是随便起的,然后我们开启此虚拟机。
由于我的虚拟机开始上面就有两块硬盘,很好分辨出我们20G的小硬盘,是/dev/sdc,我们先使用lsblk来查看一下是否硬盘已经被启用
然后我们一顿分区格式化(基本操作就是fdisk /dev/sdc--->mkfs.ext4 /dev/sdc),这里我们就分出了两个区,sdc1,sdc2,其中sdc1只有100M,剩下的全都分给了sdc2,如下图
然后就是把这两个分区挂载到目录上,就可以在该磁盘上添加东西了,我分别挂载/dev/sdc1--->/mnt/boot/,/dev/sdc2--->/system,然后我们先针对/mnt/boot/下的目录开始搞事情,我们知道,我们的boot下都有什么呢?initramfsxxx,伪根系统,vmlinuzxxxx,linux内核,grub,启动相关的文件。我们可以使用mkinitrd initramfs-`uname -r` `uname -r`生成我们需要的initramfs文件,而vmlinuz文件呢,在我们挂载的光盘的下isolinux下也有vmlinuz或者自己手动强制安装在/mnt/boot目录,为省事我们直接从光盘挂载(mount /dev/sr0 /media)的目录下cp过来,然后就剩grub了,生成grub的方法有很多种,最简单的就是grub-install --root-directory=/mnt /dev/sdc 这种!
至此我们的boot文件基本解决,然后就缺grub.conf这个文件了,而这个配置文件也不是很复杂,就是一些默认开机选项,等待时间自动进入,内核信息,伪根信息
有人会好奇了,那么长一串的UUID,是怎么弄上去?只是利用了我们vim的一些小技巧,我们:之后会进入模式,然后r!COMMAND就行了,比如,我们的UUID,:r! blkid /dev/sdc2然后回车就会自动显示在我们的屏幕上。
然后就是我们的/system这个目录,这个目录相当于我们在系统中的根目录,目录中有很多的文件夹命令函数库啥的,而我们需要从现有的系统中拷贝一些常用的命令,和对应的函数库。我们编写了以一个shell脚本来实现,而这个脚本我是直接拿来同学的直接用了,代码如下:
#!/bin/bash
#===============================================================
#作者:cheyue
#文件名:copycmd.sh
#版本:
#作用:
#===============================================================
cjlu () {
if [ -f $2 ];then
echo " $1 已存在 "
else
mulu $1 $2
fi
}
mulu () {
mdmulu=$(echo $2 |sed -r "s/(.*\/)[^\/]*$/\1/")
if [ -d $mdmulu ];then
cp $1 $2
else
mkdir -p $mdmulu
cp $1 $2
fi
}
i=0;sys=/system
while [ $i == 0 ];do
while [ $i == 0 ];do
read -p "请输入一个命令: " cmd
which $cmd &>/dev/null
pd=$(echo $?)
if [ $pd -ne 0 ];then
echo "你输入的是内部命令或不是命令。"
read -p "输入no退出不退出回车: " b
if [[ $b =~ n ]];then
exit
fi
else
let i+=1
fi
done
cmdlj=$(which $cmd |tail -1 |grep -o "[^[:space:]]\+")
cjlu $cmdlj $sys$cmdlj
for i in $(ldd $cmdlj |sed -nr "s/.*[[:space:]](\/.*) .*/\1/p");do
cjlu $i $sys$i
done
i=0
done
然后我大约拷贝了,ls、ifconfig、ip、mount、cat、vi、insmod、modprobe、bash、ping.....还有一个网卡驱动模块通过locate e1000查找到的以.ko结尾的文件拷贝到这里。
接着就是完善整个目录体系,mkdir {etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot,dev,mnt,media}
检查一下没有问题,我们就关闭此虚拟机,然后把硬盘放到另一个空白的虚拟机中,点击使用现有磁盘,开机。
今天分享到此结束,请大家多多指教。