环境:RedHat 5.8 ,新增一块IDE接口的硬盘,并新建两个分区hda1和hda2,文件系统为ext3,hda1挂载至系统的/mnt/boot;hda2挂载至/mnt/sysroot。Hda1上面安装guab和initrd文件/boot。Hda2作为系统的跟文件系统。
选择
把库文件编译成静态库,方便以后系统的移植
设置编译后成的文件目录
选择第二项进行输入
在虚拟机内安装ctrl键可以删除原来的目录,本处设置为当前目录下的chris目录
保存退出~设置完成。
make install 编译安装
编译完成后放置在./chris目录内,如下
2、
新建磁盘分区并挂载
mkdir -p /mnt/boot
mkdir -p /mnt/sysroot
fdisk /dev/hda
mke2fs -j /dev/hda1 mke2fs -j /dev/hda2
mount /dev/hda1 /mnt/boot/
mount /dev/hda2 /mnt/sysroot/
mount查看如下
3、利用chris目录内的文件进行编制initrd文件。新建目录/mnt/test
mkdir -pv /mnt/test
cp -pr busybox-1.20.2/chris/* /mnt/test/
cd /mnt/test/
rm linuxrc
mkdir -pv proc sys etc tmp dev mnt/sysroot lib/modules
装载必须的文件系统模块ext3
cd /mnt/test/
modinfo ext3 依赖jbd
modinfo jbd
cp /lib/modules/2.6.18-308.el5/kernel/fs/jbd/jbd.ko lib/modules/
cp /lib/modules/2.6.18-308.el5/kernel/fs/ext3/ext3.ko lib/modules/
/test目录下新增init脚本
#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
insmod /lib/modules/jbd.ko
insmod /lib/modules/ext3.ko
mdev -s
mount -t ext3 /dev/hda2 /mnt/sysroot
exec switch_root /mnt/sysroot /sbin/init
给其脚本一个执行权限
chmod +x init
手动创建两个设备
mknod dev/console c 5 3
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
grub-install --root-directory=/mnt /dev/hda
vim /mnt/boot/grub/grub.conf
default=0
timeout=3
title Chris busybox linux
root(hd0,0)
kernel /vmlinuz ro root=/dev/hda2
initrd /initrd.gz
6、制作真正sysroot
cp -a busybox-1.20.2/chris/* /mnt/sysroot/
cd /mnt/sysroot/
mkdir -pv proc sys etc/rc.d/init.d tmp dev/pts boot var/log lib/modules /mnt/sysroot
创建两个设备文件
mknod dev/console c 5 1
mknod dev/null c 1 3
vim etc/inittab
::sysinit:/etc/rc.d/rc.sysinit
console::respawn:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
vim 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
vim etc/rc.d/rc.sysinit,添加如下内容:
#!/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系统初步建立完成,启动如下
进一步完善系统
为新构建的Linux启用虚拟控制台
将 etc/inittab文件改为如下内容
::sysinit:/etc/rc.d/rc.sysinit
tty1::askfirst:/bin/sh
tty2::askfirst:/bin/sh
tty3::askfirst:/bin/sh
tty4::askfirst:/bin/sh
tty5::askfirst:/bin/sh
tty6::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
尽管上述第七步已经实现了虚拟控制台,但其仍是直接进入系统,且系统没有用户帐号等安全设施,这将不利于系统的安全性。因此,接下来的这步实现为系统添加用户帐号(这里仍然基于宿主机实现)。
为目标主机建立passwd帐号文件
# cd /mnt/sysroot
# cp /etc/passwd etc/
内容修改为下(注意后面的shell):
而后为root用户创建“家”目录:
mkdir root
为目标主机建立group帐号文件
# cp /etc/group etc/
内容修改如下:
![234048798.png](https://i-blog.csdnimg.cn/blog_migrate/b2cc25b3f43d16a367f4388cc8e1982a.png)
为目标主机建立shadow影子口令文件,
cp /etc/shadow etc/
将 etc/inittab文件改为如下内容:
下面配置在“利用busybox工具制作微型linux系统二”
1、busybox的编译 、安装busybox-1.20.2.tar.bz2
make menuconfig //进入busybox的编译配置界面
tar xf busybox-1.20.2.tar.bz2
tar xf linux-2.6.38.5.tar.bz2
Busybox的运行需要依赖最新的内核中的一个头文件,复制到
cd busybox-1.20.2/include/
mkdir mtd
cd
cp linux-2.6.38.5/include/mtd/ubi-user.h busybox-1.20.2/include/mtd/
cd busybox-1.20.2
进行编译
转载于:https://blog.51cto.com/chrinux/1168143