CentOS6.10自制LINUX系统(vmware环境)
1、准备一块干净的新磁盘(vmware)
2、扫描磁盘scandisk
echo - - - > /sys/class/scsi_host/host0/scan
echo - - - > /sys/class/scsi_host/host1/scan
echo - - - > /sys/class/scsi_host/host2/scan
lsblk查看磁盘是否添加成功:
3、创建磁盘分区
使用fdisk /dev/sdb创建2个分区,一个当/(20G),一个当/boot(1G),分区后的结果如下:
4、格式化文件系统mkfs.ext4
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
使用blkid命令查看文件系统类型是否正确,如下图:
5、创建新磁盘的boot挂载点
mkdir /mnt/boot
6、mount /dev/sdb1 /mnt/boot/
sdb1:换到其它系统时,就变成sda1,即/
7、安装grub
grub-install --root-directory=/mnt/ /dev/sdb
--root-directory=/mnt/ :指定系统的根,必须是boot文件夹的上一级目录
ls /mnt/boot/grub/ 查看是否生成grub的1、1.5和2阶段的文件,如下图:
8、同步grub信息到磁盘
sync 为确保可靠同步,可以多软几次sync
9、拷贝原磁盘中的vmlinuz和initramfs到/mnt/boot/
cp /boot/vmlinuz-2.6.32-754.el6.x86_64 /boot/initramfs-2.6.32-754.el6.x86_64.img /mnt/boot/ ,如下图:
10、把vmlinuz和initramfs修改成简单的名称,方便后面使用
cd /mnt/boot/
mv vmlinuz-2.6.32-754.el6.x86_64 vmlinuz
mv initramfs-2.6.32-754.el6.x86_64.img initramfs.img
11、手动编辑grub.conf文件(必要的内容)
vim /mnt/boot/grub/grub.conf
default=0
timeout=5
title customlinux
kernel /vmlinuz root=/dev/sda2 selinux=0 init=/bin/bash
initrd /initramfs.img
#init=/bin/bash:指定系统启动的第一个进程
12、创建新磁盘的/挂载点
mkdir /mnt/root
13、mount /dev/sdb2 /mnt/root/
14、创建/根目录下的文件夹
for DIR in `ls /`;do mkdir /mnt/root/$DIR ;done 结果如下:
15、使用copycmd.sh脚本拷贝需要的命令到/mnt/root下
测试拷贝的命令:ifconfig,insmod,ping,mount,ls,cat,df,lsblk,blkid,bash,vi,echo,umount
cat copycmd.sh:
read -p "Pls input copycmd directory: " copydir
[ -d $copydir ] || mkdir -p $copydir
while true
do
read -p "Pls input a copycmd or quit: " name
if [ "$name" == "quit" ];then
exit
else
#cp $name ${copydir}${newdir}
newname=`which $name|sed -rn 's#.*/([^/].*)#\1#p'`
newdir=`which $name|sed -rn 's#(^/.*/).*$#\1#p'`
if [ ! -f ${copydir}`which $name` ];then
mkdir -p ${copydir}${newdir} &> /dev/null
\cp `which $name` ${copydir}${newdir}
fi
ldd `which --skip-alias $name` | while read line
do
testname=`echo $line | sed -rn 's/(.*) =>.*$/\1/p'`
if [ "$testname" == "linux-vdso.so.1" ];then
continue
else
cmd=`echo $line | sed -rn 's#.*/(.*) .*$#\1#p'`
cmddir=`echo $line | sed -rn 's#.*(/.*/).*$#\1#p'`
\cp -aL ${cmddir}${cmd} ${copydir}$cmddir &> /dev/null
fi
done
fi
done
#注意:copycmd的目标地址一定要填/mnt/root(新磁盘的/目录)
复制命令的结果如下:
16、复制网卡驱动e1000.ko
1) locate e1000 查找驱动的源地址
2) cp `locate e1000.ko` /mnt/root/lib/
3) ls /mnt/root/lib/
结果如下:
17、 磁盘同步
sync
sync
18、切根后测试一个复制的命令是否正确
chroot /mnt/root
#注意:如果没有出现提示符“bash-4.1#”,则上面的步骤有错误,如下图:
19、测试一下新磁盘系统是否可用
1) 关机本虚拟机
2) 先复制linux新系统硬盘(即第1步中的centos6.10基础-2.vmdk)到一个地方
3) 新建一个虚拟机(CentOS6.10)
4) 复制linux新系统硬盘(centos6.10基础-2.vmdk)到新建的虚拟机中
5) 添加一个网卡,方便测试虚拟机网络(注意要用同一个vmnet)
6) 启动新虚拟机
7) 测试一个使用copycmd.sh脚本拷贝的命令(注意:ifconfig -a 看不到网卡信息,因为没有驱动)
8) insmod安装网卡驱动(insmod /lib/e1000.ko)
9) 添加临时IP地址(ifconfig eth0 192.168.36.16/24)
10) 查看IP地址信息(ifconfig -a)
11) ping -c 2 192.168.36.110(同一vmnet中正在运行的虚拟机IP)
12) 查看/boot下面的内容(因为缺少/etc/fstab,所以什么也看不到,可以先挂载)
13) mount /dev/sda1 /boot
14) 如果想开机启动能看到/boot下面的内容,就需要写/etc/fstab文件。
添加硬盘向导
正常启动的界面
测试一下命令
添加网卡驱动及ping测试
转载于:https://blog.51cto.com/13560168/2378122