自制简单的小型Linux

实验环境: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,只是需要配置一些配置文件。



本文转自 ljpwinxp 51CTO博客,原文链接:http://blog.51cto.com/191226139/2058876

你可能感兴趣的:(自制简单的小型Linux)