自制Linux系統

                      自制Linux系統

1、環境準備:

        centos6上添加一塊新硬盤,并分區格式化。

        虛擬機不關機情況下添加新硬盤,需執行以下命令,讓系統識別新硬盤。

        [root@centos6 Desktop]# echo "- – -" > /sys/class/scsi_host/host2/scan

        使用fdisk分區工具,創建兩個必要的分區

        使用mkfs格式化工具,格式化成ext4格式的文件系統。

 

 2、開始對/dev/sdc硬盤分區并格式化:

      1)使用fdisk分區工具,創建兩個必要的分區:

          /dev/sdc1 :對應/boot分區;

          /dev/sdc2 :對應根(rootfs)分區;

      2)使用mkfs格式化工具,格式化成ext4格式的文件系統。

          [root@centos6 Desktop]# fdisk /dev/sdc

             Device Boot      Start         End      Blocks   Id  System

          /dev/sdc1               1          65      522081   83  Linux

          /dev/sdc2              66        2610    20442712+  83  Linux

 

      3)使用lsbik命令查看/dev/sdc磁盤分區

          [root@centos6 Desktop]# lsblk  /dev/sdc

          NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT

          sdc      8:32   0    20G  0 disk

         ├─sdc1   8:33   0 509.9M  0 part

         └─sdc2   8:34   0  19.5G  0 part

          [root@centos6 Desktop]#

 

      4)格式化/dev/sdc1分區和/dev/sdc2分區:

          [root@centos6 Desktop]# mkfs.ext4 /dev/sdc1

          [root@centos6 Desktop]# mkfs.ext4 /dev/sdc2

 

 3、創建/boot/sysroot系統根目錄掛載點:

        [root@centos6 Desktop]# mkdir /mnt/boot

        [root@centos6 Desktop]# mkdir /mnt/sysroot

        [root@centos6 Desktop]#

 

 4、掛載/dev/sdc1/分區和/dev/sdc2分區到指定的目錄上:

       [root@centos6 Desktop]# mount /dev/sdc1 /mnt/boot/

       [root@centos6 Desktop]# mount /dev/sdc2 /mnt/sysroot/

 

 5、復制內核(kernel)文件和initramfs文件到/mnt/boot目錄(也可以從光盤拷貝):

       [root@centos6 Desktop]# cp -rf /boot/vmlinuz-2.6.32-642.el6.x86_64 /mnt/boot

       [root@centos6 Desktop]# cp -rf /boot/initramfs-2.6.32-642.el6.x86_64.img /mnt/boot

       [root@centos6 Desktop]#

 

 6、安裝/mnt/boot目錄下的grub目錄及grub目錄下的文件:

       注意:執行此操作時必須指定/boot目錄的父目錄作為根目錄。

             因為此項操作實際上是寫數據到/dev/sdc1分區中的,相當于就是/boot目錄。

       [root@centos6 Desktop]# grub-install –root-directory=/mnt  /dev/sdc

       Probing devices to guess BIOS drives. This may take a long time.

       Installation finished. No error reported.

       This is the contents of the device map /mnt/boot/grub/device.map.

       Check if this is correct or not. If any of the lines is incorrect,

       fix it and re-run the script `grub-install'.

 

       (fd0) /dev/fd0

       (hd0) /dev/sda

       (hd1) /dev/sdb

       (hd2) /dev/sdc

       [root@centos6 Desktop]#

 

 7、建立/mnt/boot/grub/grub.conf配置文件:

       1 default=0

       2 timeout=5

       3 title=centos6.8 small Linux

       4 kernel  /vmlinuz-2.6.32-642.el6.x86_64  ro root=/dev/sda2 selinux=0 init=/bin/bash

       5 initrd     /initramfs-2.6.32-642.el6.x86_64.img

 

 8、創建/mnt/sysroot目錄下small Linux 根目錄下的目錄:

       [root@centos6 Desktop]# mkdir -pv /mnt/sysroot/

       {etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot,dev,mnt,media}

 

    查看/mnt/sysroot目錄下創建的目錄:

       [root@centos6 Desktop]# tree /mnt/sysroot/

       /mnt/sysroot/

      ├── bin

      ├── boot

      ├── dev

      ├── etc

      ├── home

      ├── lib

      ├── lib64

      ├── lost+found

      ├── media

      ├── mnt

      ├── opt

      ├── proc

      ├── root

      ├── sbin

      ├── sys

      ├── tmp

      ├── usr

      └── var

      18 directories, 0 files

      [root@centos6 Desktop]#

 

 9、創建/mnt/sysroot/etc/fstab文件:

      [root@centos6 Desktop]# vim /mnt/sysroot/etc/fstab

      1 /dev/sda1   /boot   ext4  defaults 1 1

      2 /dev/sda2   /       ext4  defaults 1 2

     x  (保存退出)

 

 10、復制bash和相關庫文件;復制相關命令及相關庫文件:

      由于復制相關命令和庫文件比較繁瑣,所以我們使用腳本進行復制;

      查看腳本文件:

       [root@centos6 Desktop]# vim /testdir/copycmd.sh

       1 #!/bin/bash

       2

       3 ch_root="/mnt/sysroot"

       4 [ ! -d $ch_root ] && mkdir $ch_root

       5

       6 bincopy() {

       7     if which $1 &>/dev/null; then

       8     

       9         local cmd_path=`which –skip-alias $1`

      10         local bin_dir=`dirname $cmd_path`

      11         [ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}

      12         [ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}

      13         return 0

      14     else

      15         echo "Command not found."

      16         return 1

      17     fi  

      18 }

      19  

      20 libcopy() {

      21     local lib_list=$(ldd `which –skip-alias $1` | grep -Eo '/[^[:space:]]+')

      22     for loop in $lib_list;do

      23         local lib_dir=`dirname $loop`

      24         [ -d ${ch_root}${lib_dir} ] || mkdir -p  ${ch_root}${lib_dir}

      25         [ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir}

      26     done

      27 }

      28  

      29 read -p "Please input a command: " command

      30

      31 while [ "$command" != "quit" ];do

      32     if bincopy $command ;then

      33         libcopy $command

      34     fi

      35     read -p "Please input a command or quit: " command

      36 done

 

  拷貝命令及相關庫文件:

     [root@centos6 Desktop]# source /testdir/copycmd.sh

     Please input a command: bash

     Please input a command or quit: vim

     Please input a command or quit: reboot

     Please input a command or quit: poweroff

     Please input a command or quit: cd

     Please input a command or quit: ifconfig

     Please input a command or quit: cat

     Please input a command or quit: ls

     Please input a command or quit: hostname

     Please input a command or quit: init

     Please input a command or quit: passwd

     Please input a command or quit: tree

     Please input a command or quit: lsblk

     Please input a command or quit: blkid

     Please input a command or quit: shutdown

     Please input a command or quit: quit

     [root@centos6 Desktop]#

 

 至此精簡版的smalllinux已經制作完成,可以將/dev/sdc磁盤移至其它虛擬機中進行測試。

 

 

 

 

 

 

        

 

   

原創文章,作者:zhengyibo,如若轉載,請注明出處:http://www.www58058.com/48369

(0)
zhengyibozhengyibo
上一篇 2016-09-21 21:18
下一篇 2016-09-21 21:24

相關推薦

  • day7作業練習

    1、顯示當前系統root、mage或wang用戶的UID和默認shell  2、找出/etc/rc.d/init.d/functions文件中行首為某單詞(包 括下劃線)后面跟一個小括號的行  3、使用egrep取出/etc/rc.d/init.d/functions中其基名     v …

    系統運維 2016-08-08
  • 淺談RPM

    淺談RPM    [先絮叨下編譯啊]   1、 庫:其實就是一個程序模塊(它沒有執行入口,不能獨立執行,只能被能獨立運行的程序調用時執行)你可以把它想象成工具螺絲刀,可執行的程序是就是你自己;螺絲刀能自己干活嗎?沒有螺絲刀能擰螺絲嗎?或者說你現在制作一個? 螺絲刀可以實現這個功能但需要你來執行這個動作。   2、靜態編譯:將程序所需要的所有的庫都編…

    Linux干貨 2015-04-27
  • 進程管理

    Process Manager 工作管理  jobs ctrl+z,& bg,fg nohup 進程,資源管理  查看:pstree,ps,top,vmstat,pmap 查詢:pgrep,pidof,fuser,lsof 管理:kill,nice,renice 管理軟件or命令  htop glances dstat …

    Linux干貨 2016-04-11
  • 使用mysql-mmm實現高可用mysql讀寫分離

    MMM介紹:  MMM全稱為Multi-Master Replication Manager for MySQL,即為主主復制管理器;根據MMM官網介紹,其工作原理類似于lvs,都是利用vip地址;但lvs只有一個組件便可以正常工作,而MMM則使用三個組件,分別是mysql-mmm、mysql-mmm-agent、mysql-mmm-monitor…

    Linux干貨 2015-08-04
  • Centos 7&6分布式lamp平臺

    Centos 7&6分布式lamp平臺 Centos 7&6分布式lamp平臺 一、環境介紹 lamp的實現方式 本文安裝方式 二、Centos 7 分布式lamp平臺,module方式 安裝httpd和php xcache phpMyAdmin wordpress https的phpMyAdmin 環境規劃 主機2配置mariadb 主機1…

    Linux干貨 2016-04-25
  • Linux的自動化安裝實現

    在介紹自動化安裝系統之前讓我們來回顧一下系統的啟動流程,系統的啟動大概分為一下幾個步驟:加電自檢 boot sequence(mbr)— boot loader –>kernel(initramfs)—>rootfs  /sbin/init大概就是這么幾個過程了,接下來來介紹系統的安裝,安裝系統雖然看起來簡單,普…

    系統運維 2016-09-19
欧美性久久久久