裁剪测试Linux启动流程

Linux系统裁剪
在虚拟机上完成的
1,新增虚拟磁盘,对磁盘分区格式化,并挂载


fdisk /dev/sdd
mkfs.ext4 /dev/sdd1
mkfs.ext4 /dev/sdd2
mkdir /mnt/{boot,sysroot}
mount /dev/sdd1 /mnt/boot
mount /dev/sdd2 /mnt/sysroot


wKioL1MYU8CAZr-RAAAPyAptSXM732.png


2,创建根文件系统,移植需要的命令,函数库,内核模块


cd /mnt/sysroot
mkdir -pv etc boot usr/{bin,lib,lib64} lib/modules lib64 proc sys bin sbin var dev


wKiom1MYVOTy-1afAAAQdN9AY84778.png


移植命令脚本,移植命令就要移植相应的函数库

#!/bin/bash
while true;do
read -p "Enter a command: " comm
[ $comm == quit ]&&exit
commd=`which --skip-alias $comm`
dircommd=`dirname $commd`
if ! [ -e /mnt/sysroot$dircommd ];then
       mkdir -p /mnt/sysroot$dircommd
       cp $commd /mnt/sysroot$dircommd
       else
       cp $commd /mnt/sysroot$dircommd
fi
for i in `ldd $commd|egrep -o "/[^[:space:]]+"`;do
       if ! [ -e /mnt/sysroot`dirname $i` ];then
       mkdir -p /mnt/sysroot`dirname $i`
       cp $i /mnt/sysroot`dirname $i`
       else
       cp $i /mnt/sysroot`dirname $i`
       fi
done

done
~              

移植需要的内核模块


cp /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysroot/lib/modules/


3,安装grub


grub-install --root-directory=/mnt/ /dev/sdd


wKioL1MYVPOS_vjZAABPSRm5L_0077.png


4,准备内核和initrd文件


cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /mnt/boot/vmlinuz
cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/boot/initramfs.img


5,创建grub配置文件


vim /mnt/boot/grub/grub.conf


wKioL1MYVb6Da5rlAAAhk9k0vHw481.png


6,创建sbin/init


vim /mnt/sysroot/sbin/init
chmod a+x /mnt/sysroot/sbin/init;sync;sync


wKiom1MYVjTCFPNYAAAo_Ak26mo139.png然后把磁盘(/dev/sdd)放到一个新的虚拟机上

wKiom1MYVlajBbwHAABA75yaDqQ389.png

wKiom1MYVoLz2AIdAABNN_m5tI4786.png

wKioL1MYVnris1lnAAA-YAeiMSY968.png

然后就可以跑起来了

你可能感兴趣的:(linux,测试Linux启动)