自制linux?mini系統
借助linux系統創建mini版系統文件
制作步驟:
a.載體,u盤或者硬盤
?vm創建虛擬硬盤后,免重啟硬盤識別命令:
這里創建的盤大小為20G?
# echo “- – -” > /sys/class/scsi_host/host2/scan??lsblk沒有顯示的話,只好reboot重啟??(⌒▽⌒?)。
b. 為mini硬盤創建分區 ;這里暫分兩個;引導區200m,另一個區用掉剩余1800M ,建分區可用parted 或 fdisk命令
#這里假若mini盤識別為sdb
fdisk /dev/sdb? ;創建分區 n ;主分區p,擴展分區e;分區編號(1-4);節點起始;分區大小 +….M
注:記得?w?保存!?。?/span>
c.創建分區文件系統,一般centos6用ext4格式,7用xfs格式。
命令mkfs.ext4 /dev/sdb1或 mkfs.xfs /dev/sdb1兩個分區都一并把文件系統創建好。blkid命令,查看UUID號是否生成。
d.部署mini盤的引導分區,并掛載分區
# mkdir -pv /mnt/{boot,rootfs}# mount /dev/sdb1 /mnt/boot/# mount /dev/sdb2 /mnt/rootfs/# df? ? 查看一下
e.生成內核引導文件–grub
# grub-install –root-directory=/mnt/ /dev/sdb
f.為mini?系統boot目錄創建內核與鏡像文件
拷貝當前系統的/boot里內核與內核鏡像,到mini系統的/boot目錄cp /boot/vmliuz-###.el#.x86_64??/boot/initramfs-###.el#.x86_64.img? /mnt/boot/
g.編寫引導配置文件?grub.conf
vim /mnt/boot/grub/grub.conf1. default=0??#等待時間2. timeout=33. title nice job linux???# 內核指定; root指定 ;第一啟動程序指定4. kernel /vmlinuz root=/dev/sda2??init=/bin/bash??selinux=0???# 內核鏡像指定5.?initrd /initramfs.img
h.創建根下子目錄
? ? ? ? cd /mnt/rootfs
? ? ? ? mkdir -pv {proc,dev,lib,bin,sbin,home,root,etc/rc.d,usr/{lib,bin,sbin},var/{log,run,lock},tmp,mnt,sys}
i.定制需要用到的程序
? ? ? ? ?由于上述指定了/bin/bash?為第一啟動程序,所以bash程序必須拷貝過來。
? ? ? ? ? cp /bin/bash /mnt/bin/bash
? ? ? ? ? 網卡如需使用也拷貝一下:
? ? ? ? ? cp /lib/modules/`內核`/kernel/drivers/net/ethernet/ethernet.ko /mnt/rootfs/lib/
? ? ? ? ? ?這里再制作一個起到“選擇并復制”作用的這么一個腳本。方便其他程序包的復制。
? ? ? ? ? ?代碼如下:
? ? ? ? ? ?#蛇棒while true ;doread -p “please input order(eg:[ls|quit]):” ordroot=”/mnt/sysroot”copycmd (){seat=`which $ord`dir=`dirname $seat`????????if [ $? -eq 0 ];then????????????????echo “$seat”????????????????[ ! -d “$root$dir” ] && mkdir -pv “$root$dir”????????????????cp -f “$seat” “$root$seat”????????else????????echo “Input error” ; continue????????fi}copylib (){????????ldd $(which $ord) |grep -oE “/.* ” |while read line ;do???????????????local libdir=$root$(dirname $line)???????????????if [ -e “$root$line” ];then???????????????????????continue???????????????elif??[ -d “$libdir” ];then??????????????????????cp -v “$line” “$libdir”???????????????else??????????????????????mkdir -pv “$libdir”??????????????????????cp -v “$line” “$libdir”???????????????fi???????????????done}case $ord inq|quit)???????echo??“Copy finished” ;exit 1;;*)?????????copycmd;copylibesacdone
j.關機,復制虛擬硬盤文件到指定文件夾,創建一個虛擬機,并裝載這個虛擬硬盤,啟動。。。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?—— ? ? ?end
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/93213