1. 程式人生 > >自制簡單的小型Linux

自制簡單的小型Linux

一次 ces 安裝 需要 def 想要 user final ase

實驗環境:VMware Workstation Pro 14(試用版)

系統平臺:

CentOS release 6.9 (Final) 內核 2.6.32-696.el6.x86_64

步驟:

1.分區並創建文件系統

# fdisk /dev/sdb

分兩個必要的分區

/dev/sdb1對應/boot

/dev/sdb2對應根 /

2.格式化文件系統

# mkfs.ext4 /dev/sdb1

# mkfs.ext4 /dev/sdb2

3.掛載自制Linux的 /boot

# mkdir /mnt/boot 子目錄必須為boot

# mount /dev/sdb1 /mnt/boot

4.安裝grub

#grub-install --root-directory=/mnt /dev/sdb

#hexdump -C -n 512 /dev/sdb 看到sdb磁盤已經寫入了MBR引導信息

技術分享圖片技術分享圖片

5.復制內核心和initramfs文件

#cp /boot/vmlinuz-2.6.32-696.el6.x86_64 /mnt/boot/vmlinuz

#cp /boot/initramfs-2.6.32-696.el6.x86_64.img /mnt/boot/initramfs.img

6. 建立grub.conf

# cat > /mnt/boot/grub/grub.conf << EOF

default=0

timeout=30

title hunk_linux

root (hd0,0)

kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash

initrd /initramfs.img

EOF

root=/dev/sda2是考慮到以後掛載到其他機器時,sda1是/boot,sda2是/

7.創建自制Linux系統的根系統

#mkdir /mnt/rootfs

#mount /dev/sdb2 /mnt/rootfs/

#mkdir /mnt/rootfs/{etc,boot,dev,lib,lib64,home,var,usr,tmp,proc,sys,root,opt,mnt,srv,misc,net}

8.把網卡驅動一並復制到自制Linux系統的根系統

#modinfo e1000

filename: /lib/modules/2.6.32-696.el6.x86_64/kernel/drivers/net/e1000/e1000.ko

#cp /lib/modules/2.6.32-696.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/rootfs/lib/

8.運行我寫的腳本。(http://blog.51cto.com/191226139/2057595 找到第6條練習)把想要程序都運行 一次

9.復制剛才生成的程序文件和lib到自制Linux系統的根系統

#cp -r /tmp/commands/* /mnt/rootfs/

技術分享圖片技術分享圖片

10 . 可以切換至目標根進行測試命令

# chroot /mnt/sysroot

11.把磁盤掛載到一個新創建的機器中進行測試

技術分享圖片技術分享圖片

指令都沒有問題

技術分享圖片技術分享圖片

網卡在使用insmod /lib/e1000.ko加載後,使用ifconfig配置IP,也是能正常使用。

技術分享圖片技術分享圖片

最後:

由於是使用/bin/bash替代了/sbin/init的功能,因此,這個系統僅僅是做為一個簡單的小系統使用,用來加深理解相關知識,並且測試寫的腳本是否正常使用。

如果有興趣,可以替換為/sbin/init,只是需要配置一些配置文件。


自制簡單的小型Linux