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
2,创建根文件系统,移植需要的命令,函数库,内核模块
cd /mnt/sysroot
mkdir -pv etc boot usr/{bin,lib,lib64} lib/modules lib64 proc sys bin sbin var dev
移植命令脚本,移植命令就要移植相应的函数库
#!/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
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
6,创建sbin/init
vim /mnt/sysroot/sbin/init
chmod a+x /mnt/sysroot/sbin/init;sync;sync
然后就可以跑起来了
本文出自 “小雨” 博客,请务必保留此出处http://evildexy.blog.51cto.com/8607019/1369430
原文:http://evildexy.blog.51cto.com/8607019/1369430