自制小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.www58058.com/72528