Linux運維學習之自制簡單linux小系統

    今天我帶你們作一下簡單的linux小系統,屬於本身定製的系統哦。linux

    實驗環境:centos6.9虛擬機系統
shell

    首先,咱們在VMware上給虛擬機添加一個新的硬盤,不須要太大的空間,20G就妥妥夠了,咱們只是能把系統跑動,有簡單的基本命令就好了,而後把硬盤的位置保存在咱們便於找到的地方,我放在了個人文檔之中,取名爲linux,固然名字是隨便起的,而後咱們開啓此虛擬機。
vim

    因爲個人虛擬機開始上面就有兩塊硬盤,很好分辨出咱們20G的小硬盤,是/dev/sdc,咱們先使用lsblk來查看一下是否硬盤已經被啓用
centos

wKioL1nAxF7x4aOeAABBzbIp-_Y775.png    而後咱們一頓分區格式化(基本操做就是fdisk /dev/sdc--->mkfs.ext4 /dev/sdc),這裏咱們就分出了兩個區,sdc1,sdc2,其中sdc1只有100M,剩下的全都分給了sdc2,以下圖bash

wKioL1nAxWqjmxRLAABJ4ioR2-Q949.png    而後就是把這兩個分區掛載到目錄上,就能夠在該磁盤上添加東西了,我分別掛載/dev/sdc1--->/mnt/boot/,/dev/sdc2--->/system,而後咱們先針對/mnt/boot/下的目錄開始搞事情,咱們知道,咱們的boot下都有什麼呢?initramfsxxx,僞根系統,vmlinuzxxxx,linux內核,grub,啓動相關的文件。咱們可使用mkinitrd initramfs-`uname -r` `uname -r`生成咱們須要的initramfs文件,而vmlinuz文件呢,在咱們掛載的光盤的下isolinux下也有vmlinuz或者本身手動強制安裝在/mnt/boot目錄,爲省事咱們直接從光盤掛載(mount /dev/sr0 /media)的目錄下cp過來,而後就剩grub了,生成grub的方法有不少種,最簡單的就是grub-install --root-directory=/mnt /dev/sdc 這種!ide

 

    至此咱們的boot文件基本解決,而後就缺grub.conf這個文件了,而這個配置文件也不是很複雜,就是一些默認開機選項,等待時間自動進入,內核信息,僞根信息
函數

wKiom1nAycvh1EBUAAAbmqX89rc566.png    有人會好奇了,那麼長一串的UUID,是怎麼弄上去?只是利用了咱們vim的一些小技巧,咱們:以後會進入模式,而後r!COMMAND就好了,好比,咱們的UUID,:r! blkid /dev/sdc2而後回車就會自動顯示在咱們的屏幕上。spa

    而後就是咱們的/system這個目錄,這個目錄至關於咱們在系統中的根目錄,目錄中有不少的文件夾命令函數庫啥的,而咱們須要從現有的系統中拷貝一些經常使用的命令,和對應的函數庫。咱們編寫了以一個shell腳原本實現,而這個腳本我是直接拿來同窗的直接用了,代碼以下:
blog

#!/bin/baship

#===============================================================

#做者:cheyue

#文件名:copycmd.sh

#版本:

#做用: 

#===============================================================

cjlu () {

        if [ -f $2 ];then

                echo " $1   已存在 "

        else

                mulu $1 $2

        fi

}

mulu () {

        mdmulu=$(echo $2 |sed -r "s/(.*\/)[^\/]*$/\1/")

        if [ -d $mdmulu ];then

                cp $1 $2 

        else

                mkdir -p $mdmulu

                cp $1 $2

        fi

}

i=0;sys=/system

while [ $i == 0 ];do

        while [ $i == 0 ];do

                read -p "請輸入一個命令: " cmd

                which $cmd &>/dev/null

                pd=$(echo $?)

                if [ $pd -ne 0 ];then 

                        echo "你輸入的是內部命令或不是命令。"

                        read -p "輸入no退出不退出回車: " b

                        if [[ $b =~ n ]];then

                                exit

                        fi

                else

                        let i+=1

                fi

        done

        cmdlj=$(which $cmd |tail -1 |grep -o "[^[:space:]]\+")

        cjlu $cmdlj $sys$cmdlj

        for i in $(ldd $cmdlj |sed -nr "s/.*[[:space:]](\/.*) .*/\1/p");do

                cjlu $i $sys$i

        done

        i=0

done

    而後我大約拷貝了,ls、ifconfig、ip、mount、cat、vi、insmod、modprobe、bash、ping.....還有一個網卡驅動模塊經過locate e1000查找到的以.ko結尾的文件拷貝到這裏。

    接着就是完善整個目錄體系,mkdir {etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot,dev,mnt,media}

wKiom1nAzQmQeSeVAAASj6pMtuQ117.png    檢查一下沒有問題,咱們就關閉此虛擬機,而後把硬盤放到另外一個空白的虛擬機中,點擊使用現有磁盤,開機。

    wKiom1nAzqSwNzY3AACYh7HSfPQ656.png    再而後成功製做成功第一個linux。

    今天分享到此結束,請你們多多指教。

相關文章
相關標籤/搜索