环境:RedHat 5.8 ,新增一块IDE接口的硬盘,并新建两个分区hda1和hda2,文件系统为ext3,hda1挂载至系统的/mnt/boot;hda2挂载至/mnt/sysroot。Hda1上面安装guab和initrd文件/boot。Hda2作为系统的跟文件系统。



232422853.png

进入基本配置选项进行相关配置


232519321.png


选择

232545720.png

把库文件编译成静态库,方便以后系统的移植

232609436.png

设置编译后成的文件目录

232634892.png

选择第二项进行输入

232707792.png在虚拟机内安装ctrl键可以删除原来的目录,本处设置为当前目录下的chris目录

232733682.png

保存退出~设置完成。

make install 编译安装

编译完成后放置在./chris目录内,如下

232815778.png

2、

 
  
  1. 新建磁盘分区并挂载  

  2.  mkdir -p /mnt/boot  

  3.  mkdir -p /mnt/sysroot  

  4.  fdisk /dev/hda  

  5.  mke2fs -j /dev/hda1  mke2fs -j /dev/hda2  

  6.  mount /dev/hda1 /mnt/boot/  

  7.  mount /dev/hda2 /mnt/sysroot/    

  8.  mount查看如下

3、利用chris目录内的文件进行编制initrd文件。新建目录/mnt/test

 
  
  1. mkdir -pv /mnt/test  

  2. cp -pr busybox-1.20.2/chris/* /mnt/test/  

  3. cd /mnt/test/  

  4. rm linuxrc  

  5. mkdir -pv proc sys etc tmp dev mnt/sysroot  lib/modules  

  6. 装载必须的文件系统模块ext3  

  7. cd /mnt/test/  

  8. modinfo ext3 依赖jbd  

  9. modinfo jbd  

  10. cp /lib/modules/2.6.18-308.el5/kernel/fs/jbd/jbd.ko lib/modules/  

  11. cp /lib/modules/2.6.18-308.el5/kernel/fs/ext3/ext3.ko lib/modules/  

  12. /test目录下新增init脚本  

  13. #!/bin/sh  

  14. mount -t proc proc /proc  

  15. mount -t sysfs sysfs /sys  

  16. insmod /lib/modules/jbd.ko  

  17. insmod /lib/modules/ext3.ko  

  18. mdev -s  

  19. mount -t ext3 /dev/hda2  /mnt/sysroot  

  20. exec  switch_root  /mnt/sysroot  /sbin/init  

  21. 给其脚本一个执行权限  

  22. chmod +x init  

  23. 手动创建两个设备  

  24. mknod dev/console c 5 3  

  25. mknod dev/null c 1 3

把当前目录归档压缩保存即可

find . | cpio -H newc --quiet -o | gzip -9 >/mnt/boot/initrd.gz

4、制作系统内核,直接cp系统内的即可

cp /boot/vmlinuz-2.6.18-308.el5 /mnt/boot/vmlinuz

5、安装grub

 
  
  1. grub-install --root-directory=/mnt /dev/hda  

  2. vim /mnt/boot/grub/grub.conf  

  3. default=0

  4. timeout=3

  5. title Chris busybox linux  

  6.     root(hd0,0)  

  7.     kernel /vmlinuz ro root=/dev/hda2  

  8.     initrd /initrd.gz

6、制作真正sysroot

 
  
  1. cp -a busybox-1.20.2/chris/* /mnt/sysroot/  

  2. cd /mnt/sysroot/  

  3. mkdir -pv  proc  sys  etc/rc.d/init.d  tmp  dev/pts  boot  var/log lib/modules /mnt/sysroot  

  4. 创建两个设备文件  

  5. mknod  dev/console  c  5  1  

  6. mknod  dev/null  c  1  3  

  7. vim etc/inittab  

  8. ::sysinit:/etc/rc.d/rc.sysinit  

  9. console::respawn:-/bin/sh  

  10. ::ctrlaltdel:/sbin/reboot  

  11. ::shutdown:/bin/umount -a -r  

  12. vim  etc/fstab  

  13. sysfs                   /sys                    sysfs   defaults        0 0  

  14. proc                    /proc                   proc    defaults        0 0  

  15. /dev/hda1               /boot                   ext3    defaults        0 0  

  16. /dev/hda2               /                       ext3    defaults        1 1


vim  etc/rc.d/rc.sysinit,添加如下内容:

 
  

  1. #!/bin/sh

    #

    echo -e "\t Welcome to \033[31mChris\033[0m linux"

    mdev -s

    mount -n -o remount,rw /dev/hda2 /

    mount -a

    insmod /lib/modules/jdb.ko

    insmod /lib/modules/ext3.ko


而后让此脚本具有执行权限:

chmod +x  etc/init.d/rc.sysinit

至此一个小的busybox系统初步建立完成,启动如下


233636598.png

进一步完善系统


为新构建的Linux启用虚拟控制台

 
  
  1. 将 etc/inittab文件改为如下内容  

  2. ::sysinit:/etc/rc.d/rc.sysinit  

  3. tty1::askfirst:/bin/sh  

  4. tty2::askfirst:/bin/sh  

  5. tty3::askfirst:/bin/sh  

  6. tty4::askfirst:/bin/sh  

  7. tty5::askfirst:/bin/sh  

  8. tty6::askfirst:/bin/sh  

  9. ::ctrlaltdel:/sbin/reboot  

  10. ::shutdown:/bin/umount -a -r

233918740.png

尽管上述第七步已经实现了虚拟控制台,但其仍是直接进入系统,且系统没有用户帐号等安全设施,这将不利于系统的安全性。因此,接下来的这步实现为系统添加用户帐号(这里仍然基于宿主机实现)。

为目标主机建立passwd帐号文件

# cd /mnt/sysroot

# cp /etc/passwd etc/

内容修改为下(注意后面的shell):


234028286.png

而后为root用户创建“家”目录:

mkdir root

为目标主机建立group帐号文件

# cp  /etc/group etc/

内容修改如下:

234048798.png

为目标主机建立shadow影子口令文件,

cp /etc/shadow etc/



etc/inittab文件改为如下内容:

下面配置在“利用busybox工具制作微型linux系统二”





grub安装、配置,内核复制系统上原来的内核即可、
利用busybox制作initrd和根文件系统
需要的包:busybox-1.20.2.tar.bz2 和linux-2.6.38.5.tar.bz2内核

1、busybox的编译 、安装busybox-1.20.2.tar.bz2


make menuconfig //进入busybox的编译配置界面


 
   
  1.   tar xf busybox-1.20.2.tar.bz2  

  2.    tar xf linux-2.6.38.5.tar.bz2  

  3.   Busybox的运行需要依赖最新的内核中的一个头文件,复制到  

  4.    cd busybox-1.20.2/include/  

  5.   mkdir mtd  

  6.   cd  

  7.    cp linux-2.6.38.5/include/mtd/ubi-user.h busybox-1.20.2/include/mtd/  

  8.   cd busybox-1.20.2  

  9.   进行编译