實驗環境: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/
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,隻是需要配置一些配置檔案。
本文轉自 ljpwinxp 51CTO部落格,原文連結:http://blog.51cto.com/191226139/2058876