利用busybox创建一个MiniLinux的过程

前提:准备一块IDE的硬盘,并将该应分为两个区:

/dev/hda1大小:+20M文件系统:ext3挂载:mount /dev/hda1 /mnt/boot
/dev/hda2大小:+512M文件系统:ext3挂载:mount /dev/hda2 /mnt/sysroot

1 安装好busybox,将busybox的安装目录(_install)下的所有内容复制到一个自己创建的文件下(/tmp/busybox)

删除linuxrc
在这里插入图片描述

2 手动创建基本的目录

mkdir sys proc etc dev lib/modules sysroot  -pv

在这里插入图片描述

3 为了让我们的文件系统支持ext3文件系统,需要有ext3模块

modinfo ext3

在这里插入图片描述我们modinfo查看ext3模块,可以看到ext3模块依赖于jdb模块
将两个模块到复制到 lib/modules下面

cp /lib/modules/2.6.18-238.el5/kernel/fs/ext3/ext3.ko lib/modules/
cp  /lib/modules/2.6.18-238.el5/kernel/fs/jbd/jbd.ko lib/modules/

在这里插入图片描述

4 提供initrd的init脚本

vim init文件

  • 挂载proc文件系统
mount -t proc proc /proc
  • 挂载sysfs系统
mount -t sysfs sysfs /sys
  • 探测硬件
mdev -s
  • 插入自己需要的模块
insmod /lib/modules/jbd.ko
insmod /lib/modules/ext3.ko
  • 挂载根文件系统
mount -t ext3 /dev/hda2 /mnt/sysroot
  • 将根文件系统切换到/sbin/init
exec switch_root /mnt/sysroot /sbin/init

在这里插入图片描述
因为要将根文件系统挂载到/mnt/sysroot,则应创建该目录

mkdir mnt/sysroot -pv

在这里插入图片描述

5 创建两个必要的设备文件

mknod  dev/console c 5 1
 mknod dev/null c 1 3

在这里插入图片描述

6 给init文件加可执行权限,然后将所有文件压缩为/boot/initrd.gz文件

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

7 准备内核

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

安装grub

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

编辑grub.conf文件

vim grub/grub.conf
default=0
timeout=5
title xiuxiuya
        root (hd0,0)
        kernel /vmlinuz
        initrd /initrd.gz
 

在这里插入图片描述

8 将原来的_install文件全部复制到/mnt/sysroot目录下

cp _install/* /mnt/sysroot/ -a

9 cd到sysroot下,然后创建一些必要的文件夹

cd /mnt/sysroot
mkdir etc proc sys media mnt lib/modules dev var/{log,lock,run} etc/rc.d/init.d root boot -pv

10 创建etc/inittab文件并编辑

::sysinit:/etc/rc.d/rc.sysinit
console::respawn:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
 

11 准备etc/fstab

sysfs      /sys      sysfs      defaults   0 0
proc       /proc     proc       defaults   0 0
/dev/hda1  /boot     ext3       defaults   0 0 
/dev/hda2  /         ext3       defaults   1 1

在这里插入图片描述

12 创建两个必要的设备文件

mknod dev/console c 5 1
 mknod dev/null c 1 3

13 创建etc/rc.d/rc.sysinit文件并编辑

#!/bin/sh
 
echo -e "\t Welcom \033[34mxiuxiuya\033[0m "
 
echo -e "mount proc and sysfs..."
mount -t proc proc /proc
 
mount -t sysfs sysfs /sys
 
echo -e "remount /"
mount -o remount,rw /
 
echo -e "Creating the files of device.."
mdev -s
 
echo -e "mount all file...."
mount -a

给rc.sysinit文件可执行权限

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

14 利用dropbear实现远程登录

(该过程是实现完之后补充的,只是为了提醒自己,所以简略,可以上网看更详细的步骤)
安装dropbear略…

  • 编辑etc/shells,指定远程登录指定的shell类型
/bin/bash
/bin/sh
/bin/hash
/bin/ash

  • 在fstab中指定伪终端的挂载点
devpts     /dev/pts  devpts     mode=620   0 0

在这里插入图片描述

  • 生成主机的秘钥
dropbearkey -t rsa -f /mnt/sysroot/etc/dropbear/dropbear_rsa_host_key -s 2048
dropbearkey -t dss -f /mnt/sysroot/etc/dropbear/dropbear_dss_host_key 
  • 复制dropbear dbclient dropbearkey等相关命令
  • 将passwd,shadow和group等文件复制过来
  • 编辑etc/inittab,使得能进行用户名登录,复制mingetty命令
::sysinit:/etc/rc.d/rc.sysinit
::respawn:/sbin/mingetty tty1
::respawn:/sbin/mingetty tty2
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

在这里插入图片描述

  • 一定要插入网卡模块,并配置相应的ip地址
    在这里插入图片描述
  • 复制/etc/nsswitch.conf /lib/libness_files* /usr/lib/libnss3.so /usr/lib/libnss_files*
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值