下面将由我带领大家搭建一个自己的linux系统,虽然个人感觉搭建的这个操作系统不实用,但是可以加深我们对linux的理解。
本例我们利用centos6,为自己搭建一个小小的linux系统。
一、打开centos6,为自己的机器添加一块硬盘。
注意:在设置磁盘容量的界面,最好选择 “将虚拟磁盘存储为单个文件”(ntfs格式的文件系统支持文件大小均在2TB上),还有就是一定要能让自己找到你创建的这个磁盘在哪。
二、让新增的磁盘被识别
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
有的机器支持host0,有的机器支持host2,任选其一,然后再查看一下硬盘有没有加载上(使用lsblk命令)。如果第一个命令没有加载上,就换用第二条命令。
三、分区
使用fdisk命令设置分区
分区类型如下:
Device Boot Start End Blocks Id System
/dev/sdb1 1 523 4200966 83 Linux
/dev/sdb2 524 785 2104515 82 Linux swap / Solaris
/dev/sdb3 786 2610 14659312+ 83 Linux
分区大小如下:
[root@localhost ~]# lsblk |grep sdb
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
├─sdb2 8:18 0 2G 0 part
└─sdb3 8:19 0 14G 0 part
四、格式化并挂载
[root@centos6(nanyibo) ~]# mkfs.ext4 /dev/sdb1
[root@centos6(nanyibo) ~]# mkfs.ext4 /dev/sdb3
[root@centos6(nanyibo) ~]# mkswap /dev/sdb2
[root@centos6(nanyibo) ~]# mkdir /mnt/sysimage
[root@centos6(nanyibo) ~]# mount /dev/sdb3 /mnt/sysimage/
[root@centos6(nanyibo) ~]# mkdir /mnt/sysimage/boot
[root@centos6(nanyibo) ~]# mount /dev/sdb1 /mnt/sysimage/boot/
设置完分区之后,我们需要将磁盘分区挂载起来,这里我们一般都选择挂载在mnt目录下面。
五安装grub、内核、ramdisk文件
直接利用本机的内核、ramdisk文件即可。
[root@centos6(nanyibo) ~]# grub-install --root-directory=/mnt/sysimage /dev/sdb
[root@centos6(nanyibo) ~]# cp /boot/vmlinuz-2.6.32-6.el6.x86_64 /mnt/sysimage/boot/
[root@centos6(nanyibo) ~]# cp /boot/initramfs-2.6.32-696.el6.x86_64.img /mnt/sysimage/boot/
六、编写grub.conf文件
vim /mnt/sysimage/boot/grub/grub.cong
default=0
timeout=5
title CentOS 6 Custom (2.6.32-696.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=46e387c1-f2be-4caa-b864-7d3a09f23b30 selinux=0 init=/bin/bash
initrd /initramfs-2.6.32-696.el6.x86_64.img
七、拷贝程序和对应的库文件
在这里直接给大家提供一个拷贝命令到我们指定的目录下面
vim copycmd.sh
#!/bin/bash
copy_cmd() {
local cmd_destdir=$destdir$(dirname $(which $1))
if [ ! -d $cmd_destdir ];then
mkdir -pv $cmd_destdir
fi
cp -v $(which $1) $cmd_destdir
}
copy_libfile() {
ldd $(which $1) |grep -oE "/.* " | while read libfile
do
local lib_destdir=$destdir$(dirname $libfile)
local lib_destfile=$destdir$libfile
if [ -e $lib_destfile ];then
continue
elif [ -d $lib_destdir ];then
cp -v $libfile $lib_destdir
else
mkdir -pv $lib_destdir
cp -v $libfile $lib_destdir
fi
done
}
destdir=/mnt/sysimage
if [ ! -d $destdir ];then
mkdir $destdir
fi
while true;do
echo -ne "\e[33mPlease input a execute command:\e[0m"
read cmd
if [ "$cmd" == quit ];then
exit
fi
which $cmd &> /dev/null || { echo $cmd not exist;continue; }
copy_cmd $cmd
copy_libfile $cmd
done
添加执行权限
chmod +x copycmd.sh
./copycmd.sh 复制以下命令
bash ls ifconfig ping hostname cat vi mount umount ps pstree mv touch cp insmod modprobe
八、拷贝一些需要的模块,比如网卡模块 e1000.ko
cp /lib/modules/2.6.32696.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysimage/lib64/
九、创建根下的一级目录
mkdir {etc,dev,proc,sys,home,var,mnt,media,root,tmp,lib}
十、.关掉旧系统,创建新的虚拟机,并使用已有的新建硬盘。启动
大功告成,三五秒即可启动该程序