CentOS6.10自制LINUX系统(vmware环境)

 

1、准备一块干净的新磁盘(vmware)

自制linux系统
 

2、扫描磁盘scandisk

    echo - - - > /sys/class/scsi_host/host0/scan
    echo - - - > /sys/class/scsi_host/host1/scan
    echo - - - > /sys/class/scsi_host/host2/scan
    lsblk查看磁盘是否添加成功:

自制linux系统
 

3、创建磁盘分区

    使用fdisk /dev/sdb创建2个分区,一个当/(20G),一个当/boot(1G),分区后的结果如下:

自制linux系统
 

4、格式化文件系统mkfs.ext4

    mkfs.ext4 /dev/sdb1
    mkfs.ext4 /dev/sdb2
    使用blkid命令查看文件系统类型是否正确,如下图:

自制linux系统
 

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阶段的文件,如下图:

自制linux系统
 

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/  ,如下图:

自制linux系统
 

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  结果如下:

自制linux系统
 

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(新磁盘的/目录)
    复制命令的结果如下:

自制linux系统
 

16、复制网卡驱动e1000.ko

    1)  locate e1000  查找驱动的源地址
    2)  cp `locate e1000.ko` /mnt/root/lib/
    3)  ls /mnt/root/lib/
    结果如下:

自制linux系统
 

17、 磁盘同步

    sync
    sync

 

18、切根后测试一个复制的命令是否正确

    chroot /mnt/root 
    #注意:如果没有出现提示符“bash-4.1#”,则上面的步骤有错误,如下图:

自制linux系统
 

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文件。

 

添加硬盘向导

自制linux系统
 

正常启动的界面

自制linux系统
 

测试一下命令

自制linux系统
 

添加网卡驱动及ping测试

自制linux系统