自制小linux 系统
制作环境的概述
首先你的有VMware的虚拟机软件,其次安装了centos6/centos7的linux系统
而且你需要写一个复制相关命令以及依赖库文件的的脚本(主要是为了省时间,脚本写法会在后面备注)
准备好以上环境,便可以制作一个小linux系统了,具体步骤如下
1) 在虚拟机设置中,在原有基础上在挂载一个20G大小的硬盘
2) 开机启动原有linux系统,我们可以简称原系统为“SL”
3) 使用如下命令:
echo “- – -” > /sys/class/scsi_host/host2/scan 可以识别之前安装好的小硬盘,利用lsblk查看,确认设备已经识别
4) 对该硬盘进行分区
fdisk /dev/sdb
分为两个区
/dev/sda1—à/boot
/dev/sda2–à/ 根
加载文件系统统一为ext4
Mkfs.ext4 /dev/sda1
Mkfs.ext4
/dev/sda
5) 挂载 boot
mkdir /mnt/boot
mount /dev/sdb1 /mnt/boot
6) 安装grub
grub-install –root-directory=/mnt /dev/sdb
7) 恢复内核和initramfs文件
cp /boot/vmlinuz-2.6.32-642.el6.x86_64 /mnt/boot/
cp
/boot/initramfs-2.6.32-642.el6.x86_64.img
/mnt/boot
8) 建立grub.conf:
vim /mnt/boot/grub.conf
default=0
timeout=3
title customlinux
root (h0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 selinux=0 init=/bin/bash
initrd /initramfs-2.6.32-642.el6.x86_64.img
9) 创建一级目录
mkdir
/mnt/sysroot
mount
/dev/sdb2 /mnt/sysroot
mkdir–pv /mnt/sysroot/{etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc
,opt,home,root,boot,dev,mnt,media}
9) 复制bash和所需命令及相关库文件
ls,cat, vim,reboot,hostname等等~这里用之前提到的脚本即可快速实现
这有一个不错的脚本大家可以参考一下,虽然有些复杂,但是主要借鉴前面的判断语句的写法。
Vim copycmd .sh
#!/bin/bash
TargetDir=/mnt/sysroot
[ ! -d
$TargetDir ] && mkdir -p $TargetDir
#定义函数
CopyLib(){
for Lib in `ldd $1 | egrep -o
“/[^[:space:]]+”`
do
LibDirName=`dirname $Lib`
[ ! -d $TargetDir/$LibDirName ]
&& mkdir -p $TargetDir/$LibDirName
[ ! -f $TargetDir/$Lib ] &&
cp $Lib $TargetDir/$LibDirName
done
return 0
}
#定义函数
CopyCmd(){
CmdDirName=`dirname $1`
[ ! -d $TargetDir/$CmdDirName ] &&
mkdir -p $TargetDir/$CmdDirName
[ ! -f $TargetDir/$CmdDirName ] && cp
$1 $TargetDir/$CmdDirName
return 0
}
read -p
“Please input a comand: ” Cmd
while
true
do
[[ $Cmd =~ ^[Qq]$|^[Qq][Uu][Ii][Tt]$ ]]
&& exit
[[ $Cmd =~ ^[Ee]$|^[Ee][Xx][Ii][Tt]$ ]]
&& exit
if which $Cmd &>/dev/null
then
CmdPath=`which $Cmd`
if [ -f $TargetDir/$CmdPath ]
then
echo -e “\e[31mTarget
command\e[0m \e[1;31m$Cmd\e[0m \e[31mis exist!\e[0m”
read -p “Please input a
comand [quit|exist]:” Cmd
continue
fi
else
echo -e “\e[31mSource
command\e[0m \e[1;31m$Cmd\e[0m \e[31mis exist!\e[0m”
read -p “Please input a
comand [quit|exist]:” Cmd
continue
fi
CopyCmd $CmdPath && CopyLib
$CmdPath && echo -e “\e[1;32m$Cmd\e[0m \e[32mis copy
successed!\e[0m”
[ $? -ne 0 ] && echo -e
“\e[1;31m$Cmd\e[0m \e[32mis copy failured!\e[0m”
read -p “Please input a comand
again [quit|exist]: ” Cmd
done
考完后,关闭系统,新建虚拟机,将之前的20G小硬盘去掉,放入新建虚拟机中,即可安全启动(改该系统未考虑网络的问题,需要网络,首先需要安装网络模块 ,也可全路径拷贝网络模块,在复制相关网络管理命令和依赖库文件,即可具备网络功能)
如此,自制小linu大功告成,
话说玩玩就好,有时间追加全自主编译安装的linux,能够更加深入的了解linux,详细可以参考LFS6.2中文版
原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/72528