自制一个小型的linux操作系统

下面将由我带领大家搭建一个自己的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}

十、.关掉旧系统,创建新的虚拟机,并使用已有的新建硬盘。启动

大功告成,三五秒即可启动该程序

猜你喜欢

转载自blog.csdn.net/qq_34208467/article/details/82048117