自制linux系統
需要為虛擬機新增一個硬盤,作為自制linux系統的載體。也可以用U盤、移動硬盤或其他設備作為載體
實驗步驟:
(1)為虛擬機新增一個大小為20G的硬盤
(2)給新增的磁盤分區,劃分/boot、swap、/三個分區
比如,將第一個分區當作boot,大小為500M;第二個分區當作swap分區,大小為2G;第三個分區用作/,大小為10G。其余空間保留
fdisk /dev/sdd
partx -a /dev/sdd
(3)為創建的三個分區創建對應的文件系統。
mkfs.ext4 /dev/sdd1 mkswap /dev/sdd2 mkfs.ext4 /dev/sdd3
(4)在/mnt/下創建boot目錄,將要使用為boot分區的磁盤分區掛載至該目錄。
mkdir -p /mnt/grub/boot mkdir -p /mnt/grub/sysroot
boot掛載至/mnt/grub/boot
/掛載至/mnt/grub/sysroot
mount /dev/sdd1 /mnt/grub/boot/mount /dev/sdd3 /mnt/grub/sysroot
(5)安裝grub
grub-install --root-directory=/mnt/mount /dev/sdd
(6)拷貝vmlinuz、initramfs文件至/mnt/mount/boot(7)創建grub配置文件
default=0 timeout=5title Zmingbo (Test) root (hd0,0) kernel /vmlinuz ro root=/dev/sda3 selinux=0 init=/bin/bash initrd /initramfs.img
(8)創建根文件系統(rootfs)
為/mnt/sysroot (新增硬盤被當作根分區的分區)創建root、home、dev、sys、proc、mnt、etc、tmp、lib、lib64、src、media、boot、bin、sbin、usr目錄
(9)通過腳本,拷貝bash,cp,vim,cat,less等命令至/mnt/mount/sysroot/目錄下對應的目錄中
腳本如下:
#!/bin/bash #寫一個腳本,完成如下功能(使用函數) #1、提示用戶輸入一個可執行命令 #2、獲取這個命令所依賴的所有庫文件 #3、復制命令至/mnt/mount/sysroot對應的目錄中 # 解釋:假設,如果復制的程序路徑是/bin/cat,那么要將/bin/cat復制到/mnt/mount/sysroot/bin目錄下 # 如果復制的是/usr/bin/useradd,那么就要將其復制到/mnt/mount/sysroot/usr/bin目錄中 #4、復制各庫文件至/mnt/mount/sysroot對應的目錄中。要求同復制命令。 # f_dir=/mnt/mount/sysroot input_cmd() { while true;do read -p "Please enter an excutable command (quit to exit) :" cmd if [[ -z $cmd ]];then echo "None option,try again..." continue elif [[ $cmd == "quit" ]];then exit 0 elif ! which --skip-alias $cmd &>/dev/null;then echo "No such command,please enter a correct command" continue else break fi done } cmd_lib_name() { cmd_path=`which --skip-alias $cmd` for path in $cmd_path;do cmd_lib_name=`ldd $path | grep -o -E '/[^[:space:]]+\>'` done } cp_cmd() { cmd_dir=`dirname $cmd_path` mkdir -p $f_dir$cmd_dir &>/dev/null cp $cmd_path $f_dir$cmd_path } cp_lib() { cmd_lib_name for i in $cmd_lib_name;do lib_dir=`dirname $i` mkdir -p $f_dir$lib_dir &>/dev/null cp $i $f_dir$i done } main () { while true;do input_cmd cmd_lib_name cp_cmd cp_lib done } main
查看對應目錄下是否有相應的命令和庫文件
也可以拷貝其他需要用的命令及其依賴的庫文件分別至對應的目錄
(10)創建/etc/fstab文件
(11)chroot至該目錄,查看是否可用
測試,系統可以正常使用。
(12)查看自定義linux系統的磁盤存放路徑,并關閉制作系統的虛擬機
(13)創建一個新的虛擬系統,在選擇磁盤時選擇現有的虛擬磁盤,將自定義系統的磁盤存放路徑加載至虛擬機的配置中
(14)啟動虛擬機做測試。
原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/46127