天天看點

Linux裁剪之定制系統

   聽到這個标題也許會讓人認為不可思議,怎麼可以定制自己的系統呢?是的。這就是Linux為什麼一直深受廣大系統愛好者青睐之一,它可以根據自己的需求來定制自己想要和不想要的。本文就從最基礎的開始來搭建屬于自己的一個小型OS,并且能夠實作開機自動加載網卡,配置IP與其他主機通信。本文暫不做核心編譯的操作,不過會在之後陸續補上,盡請期待!

實驗環境;  主控端:Centos6.5-64位  目标主機:Centos6.5-64位

1、為主控端添加一塊新的20G硬碟,特命名為;testlinux6.5.vmdk(由于目标主機是通過主控端的sdb硬碟來啟動,故在此主控端上添加一塊新的硬碟)

  下圖為硬碟資訊;

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe0c1f6c9
Device Boot      Start         End      Blocks   Id  System      

2、為新添加的硬碟分區格式化以及建立檔案系統ext4

fdisk /dev/sdb磁盤分區;

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe0c1f6c9
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          26      208813+  83  Linux
/dev/sdb2              27          91      522112+  83  Linux      

3、格式化建立的硬碟分區,并且為兩個分區建立挂載目錄

[root@station103 ~]# mke2fs -t ext4 /dev/sdb1
[root@station103 ~]# mke2fs -t ext4 /dev/sdb2
[root@station103 mnt]# mkdir -pv /mnt/{boot,sysroot}      

4、先把/dev/sdb1挂載到/mnt/boot/目錄下

[root@station103 ~]# mount /dev/sdb1 /mnt/boot/
[root@station103 ~]# mount
/dev/sdb1 on /mnt/boot type ext4 (rw)      

5、為新的磁盤分區sdb1裝入grub;

[root@station103 ~]# grub-install --root-directory=/mnt /dev/sdb
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
[root@station103 ~]# ls /mnt/boot/
grub  lost+found
[root@station103 ~]#      

6、複制主控端的核心至新磁盤分區上sdb1挂載的/boot目錄下;

[root@station103 ~]# cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /mnt/boot/vmlinuz
[root@station103 ~]# cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/boot/initramfs.img
[root@station103 ~]# cd /mnt/boot/
[root@station103 boot]# ll
total 21074
drwxr-xr-x 2 root root     1024 Feb 22 23:32 grub
-rw------- 1 root root 17437215 Feb 22 23:36 initramfs.img
drwx------ 2 root root    12288 Feb 22 23:23 lost+found
-rwxr-xr-x 1 root root  4128368 Feb 22 23:36 vmlinuz      

7、挂載sdb2至/mnt/sysroot下,并且建立目标所需的根檔案;

[root@station103 ~]# mount /dev/sdb2 /mnt/sysroot
[root@station103 ~]# mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root}
[root@station103 ~]# cd /mnt/sysroot/
[root@station103 sysroot]# ls
bin   dev  home  lib64       media  proc  sbin  sys  var
boot  etc  lib   lost+found  mnt    root  srv   usr      

8、在主控端上移植bash的二進制的可執行檔案及庫檔案至目标主機的根檔案系統;(此處用的腳本實作,不做多的介紹.)

[root@station103 etc]# ./bashcp.sh
Enter a command: ls
Enter a command: ifconfig
Enter a command: ping
Enter a command: mv
Enter a command: cp
Enter a command: cat
Enter a command: mkdir
Enter a command: bash
Enter a command: useradd
Enter a command: chmod
Enter a command: chown
Enter a command: reboot
Enter a command: insmod
Enter a command: exit
Enter a command: quit      

9、檢視下剛剛複制的指令,并且為/mnt/sysroot/bin建立連結檔案;

[root@station103 etc]# chroot /mnt/sysroot
bash-4.1# ls
bin   dev  home  lib64       media  proc  sbin  sys  var
boot  etc  lib   lost+found  mnt    root  srv   usr
bash-4.1# cd /bin
bash-4.1# ls
bash  cat  chmod  chown  cp  ls  mkdir  mv  ping
bash-4.1# cd /sbin
bash-4.1# ls
ifconfig  insmod  reboot
[root@station103 bin]# ln -sv hash sh    建立連結檔案
`sh' -> `hash'      

10、為目标主機/mnt/boot/grub/下建立開機自檢grub.conf配置檔案;

default=0  指定預設啟動的核心或OS
timeout=5  等待使用者選擇要啟動的核心或OS的時間,預設機關為秒
title OuYang Linux System   标題名
        root (hd0,0)  在grub中,都以hd開頭
        kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash
                        指定核心檔案及傳遞給核心的參數
        initrd /initramfs.img      

   到此目标機已經可以啟動了,先測試一下,但在測試之前建議先把/sdb1,/sdb2設定為開機自動挂載。啟動目标機時,主控端得挂起或者關機。

   目标機測試OK。此時目标機還不能實作設定ip.還得得主控端上把網卡子產品複制到目标機上

Linux裁剪之定制系統

11、将主控端上的網卡子產品複制到目标機。

[root@station103 ~]# mkdir -p /mnt/sysroot/lib/modules
[root@station103 ~]# cp /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/net/e1000/e1000.ko/mnt/sysroot/lib/module/
[root@station103 ~]#      

12、為了能夠實作讓系統啟動自動裝載網卡,下面我特把grup.conf配置檔案裡的

init=

/bin/bash 改成init=/sbin/init

,讓/mnt/sysroot/sbin/init腳本來自動實作

[root@station103 sbin]# pwd
/mnt/sysroot/sbin
[root@station103 sbin]# vim init
#!/bin/bash
echo -e "\tWelcome to \033[32m ouyang \033[0m Linux"
mount -n -t proc /proc /proc
mount -n -t sysfs sysfs /sys
insmod /lib/modules/e1000.ko
[ $? -eq 0 ] && echo -e "Load e1000 modules succeeded                        [ \033[32mOK\033[0m ]"
ifconfig lo 127.0.0.1/8
ifconfig eth0 172.16.251.200/16
mount -n -o remount,rw /dev/sda2 /
#route add -net 172.16.0.0 gw 172.16.0.1
/bin/bash      

13、停止主控端,啟動目标機;

Linux裁剪之定制系統

   ip位址已自動加載

Linux裁剪之定制系統
Linux裁剪之定制系統

繼續閱讀