定制简单的Linux系统
制作思路:
新加一块硬盘,设置两个分区,一个存/boot,一个存/,创建文件系统并格式化。要注意,现在我们家的硬盘是要可以拔下来安装到其他机器上使用的,否则就没有意义了。试验中的硬盘sdb当换到其他机器上就是我们熟悉的sda了。
简单的Linux系统应该包括:内核文件,grub,bash,再加些常用工具就可以了。
准备工作:
添加工具和命令可以通过脚本来实现,所以我们先准备一个可以复制命令并安装的脚本。
#!/bin/bash
#-----------------------------
#Filename: copycmd.sh
#Revision: 1.0
#Date: 2017-09-21
#Author: zyx
#Emali: zyx@gmail.com
#Description:
#------------------------------
fcopy () {
aa=`which $1 | tail -1`
ldd $aa
if [ $? -eq 0 ] ;then
if [ -a /system ];then
cp --parents $aa /system && echo "Command has been copied ! "
else
mkdir /system
cp --parents $aa /mnt/sysroot/ && echo "Command has been copied ! "
fi
if [ -a /testdir/copycmd ];then
ldd $aa | sed -r -e "s@.*[[:space:]]+(/.*)[[:space:]].*@\1@g" -e '1d' > /testdir/copycmd
else
mkdir /testdir
touch /testdir/copycmd
ldd $aa | sed -r -e "s@.*[[:space:]]+(/.*)[[:space:]].*@\1@g" -e '1d' > /testdir/copycmd
fi
while read line ;do
cp --parents $line /mnt/sysroot/
done < /testdir/copycmd
echo "Libary file has been copied !"
fi
}
select choice in run quit ;do
case $choice in
run)
read -p "Please enter a command:" cmd
fcopy $cmd
;;
quit)
echo "bye"
exit 0
;;
*)
echo "error"
exit 2
esac
done
开始制作:
新建硬盘:
在虚拟机上新建一块大小为20G(根据个人喜好修改)的硬盘。
如果在线添加硬盘的话,添加完成后系统并不能立即识别,使用命令
echo '- - -'> /sys/class/scsi_host/host0/scan 就可以在线添加硬盘了。
系统启动,查看磁盘 lsblk
磁盘分区 fdisk /dev/sdb
保存退出:w
格式化分区 :
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
创建/boot文件,在那个目录下不重要,必须是/boot,因为数据是放在硬盘grub下,目录必须是/boot。
挂载 mount /dev/sdb1 /mnt/boot/
安装grub包 grub-install -–root-directory=/mnt /dev/sdb
可以看出grub已经安装成功了,距离成功已经不远了。
可以查看二进制,看看是否安装成功
Hexdump –C /dev/sdb –n 512
接下来将原系统本身的文件拷贝给新系统就行了
cp /boot/vmlinuz-2.6.32-696.el6.x86_64 /mnt/boot/
cp /boot/initramfs-2.6.32-696.el6.x86_64.img /mnt/boot/
具体版本可以Tab键补齐
创建grub文件
vim /mnt/boot/grub/grub.conf
default=0
timeout=5
title linux
kernel /vmlinuz-2.6.32-696.el6.x86_64 root=UUID=2ca667c0-a6d5-4267-8b19-598430499167 selinux=0
initrd /initramfs-2.6.32-696.el6.x86_64.img
这样一个简单的系统基本上完成了,接下来就需要用脚本将一些常用命令复制过来就可以了。
创建开机后的一级目录,并将sdb2挂载在目录下
给脚本加上执行权限,运行脚本
把自己想要的命令都可以复制过来
等等命令都可以复制, 不过不要忘了 网卡驱动模块,这样系统就可以使用网络功能了。
locate e1000
复制e1000.ko就可以了
作为一个操作系统,根下的一些文件夹因为是要有的
mkdir {etc,dev,sys.proc,tmp,root,lib,user,home,var,boot}
当然不要忘了 sync 让缓存数据写进磁盘。
然后就可以关机转移磁盘了。这里我们在新建一个虚拟机,将系统自带的银盘移除,装上我们自己制作的硬盘。
启动虚拟机。
激动人心的时刻就要到来啦!
终于 ,系统成功启动!
接下来实现网络功能:
手动添加网卡驱动
insmod /lib64/e1000.ko
查看ip ip a
添加IP地址
ifconfig192.168.252.62/24 up
这样这个系统也可以使用网络功能了。
一个简单的Linux系统就制做完成了!