定制简单的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地址
ifconfig eth0 192.168.252.62/24 up
这样这个系统也可以使用网络功能了。
一个简单的Linux系统就制做完成了!