Linux 最小系统制作
Posted jemylu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 最小系统制作相关的知识,希望对你有一定的参考价值。
Linux 最小系统制作
一、制作工具Busybox
在制作文件系统的时候,我们需要使用“Busybox 工具”,即为附件压缩包“busybox-1.21.1.tar.bz2”。“BusyBox 工具”是一个集成了一百多个最常用Linux 命令和工具的软件。 BusyBox 包含了一些简单的工具,例如 ls、cat 和 echo 命令等等,还包含了一些更大、更复杂的工具,例 grep、find、mount 以及 telnet 命令。有些人将 BusyBox 称为 Linux工具里的瑞士军刀。简单的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 android 系统自带的 shell。
“Busybox 工具”的官方网址是“http://www.busybox.net/”,这是一个开源的程序,并且一直在更新中,我们使用的版本是“busybox-1.21.1.tar.bz2”。
二、制作步骤
(1)首先拷贝“busybox-1.21.1.tar.bz2”到我们的虚拟机 Ubuntu 系统上,然后在Ubuntu 命令行,执行“#tar -xvf busybox-1.21.1.tar.bz2”解压命令
(2)如下图,使用“#cd busybox-1.21.1”命令进入到前面解压出来的“busybox-1.21.1”文件夹中
(3)输入make menuconfig 进行配置
(4)进入Busybox Settings ->Build Optiions-> Cross Compiler prefix
(5)输入交叉编译器arm-none-linux-gnueabi-
(6)返回busybox settings
(7)进入Installation Options ->BusyBox installation prefix
(8)删除./_install
(9)输入../system
(10)返回最上级,然后保存退出
(11)输入make,开始编译busybox
(12)把编译后的二进制文件安装到../system,输入命令make install
(13)Cd ../system 看里面的文件
(14)制作的文件系统还需要新建“dev,etc,lib,mnt,proc,sys,tmp,var”文件夹,使用命令“mkdir dev etc lib mnt proc sys tmp var”
(15) 进入ect文件夹cd etc,创建文件vi eth0-setting ,输入以下内容并保存:
IP=192.168.1.230
Mask=255.255.255.0
Gateway=192.168.1.1
DNS=192.168.1.1
MAC=08:90:90:90:90:90
(16) 修改文件权限chmod 755 eth0-setting
(17)在 etc 目录下用“mkdir init.d”命令建立“init.d”文件夹 ,进入init.d文件夹,cd init.d,创建文件vi ifconfig-eth0 ,输入以下内容
1. #!/bin/sh 2.echo -n Try to bring eth0 interface up......>/dev/ttySAC2 3.if [ -f /etc/eth0-setting ] ; then 4.source /etc/eth0-setting 5.if grep -q "/dev/root / nfs " /etc/mtab ; then 6.echo -n NFS root ... > /dev/ttySAC2 7.else 8.ifconfig eth0 down 9.ifconfig eth0 hw ether $MAC 10.ifconfig eth0 $IP netmask $Mask up 11.route add default gw $Gateway 12.fi 13.echo nameserver $DNS > /etc/resolv.conf 14.else 15.if grep -q "/dev/root / nfs " /etc/mtab ; then 16.echo -n NFS root ... > /dev/ttySAC2 17.else 18./sbin/ifconfig eth0 192.168.253.12 netmask 255.255.255.0 up 19.fi 20.fi 21.echo Done > /dev/ttySAC2
(18)修改文件权限chmod 755 ifconfig-eth0
(19)然后在“init.d”文件夹下使用“vi rcS”命令建立“rcS”文件 ,输入以下内容
1.#! /bin/sh 2.PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin: 3.runlevel=S 4.prevlevel=N 5.umask 022 6.export PATH runlevel prevlevel 7.# # 8.Trap CTRL-C &c only in this shell so we can interrupt subprocesses. 9.# 10.trap ":" INT QUIT TSTP 11./bin/hostname iTOP-4412 12.#/bin/mount -n -t proc none /proc 13.#/bin/mount -n -t sysfs none /sys 14.#/bin/mount -n -t usbfs none /proc/bus/usb 15.#/bin/mount -t ramfs none /dev 16.[ -e /proc/1 ] || /bin/mount -n -t proc none /proc 17.[ -e /sys/class ] || /bin/mount -n -t sysfs none /sys 18.[ -e /dev/tty ] || /bin/mount -t ramfs none /dev 19.echo /sbin/mdev > /proc/sys/kernel/hotplug 20./sbin/mdev -s 21.#/bin/hotplug 22.# mounting file system specified in /etc/fstab 23.mkdir -p /dev/pts 24.mkdir -p /dev/shm 25./bin/mount -n -t devpts none /dev/pts -o mode=0622 26./bin/mount -n -t tmpfs tmpfs /dev/shm 27.#/bin/mount -n -t ramfs none /tmp 28.#/bin/mount -n -t ramfs none /var 29.mkdir -p /var/empty 30.mkdir -p /var/log 31.mkdir -p /var/log/boa 32.mkdir -p /var/lock 33.mkdir -p /var/run 34.mkdir -p /var/tmp 35.ln -sf /dev/ttyS2 /dev/tty2 36.ln -sf /dev/ttyS2 /dev/tty3 37.ln -sf /dev/ttyS2 /dev/tty4 38.syslogd 39./etc/rc.d/init.d/netd start 40.echo " " > /dev/tty1 41.echo "Starting networking..." > /dev/tty1 42.#sleep 1 43.#/etc/rc.d/init.d/httpd start 44.#echo " " > /dev/tty1 45.#echo "Starting web server..." > /dev/tty1 46.#sleep 1 47.#/etc/rc.d/init.d/leds start 48.#echo " " > /dev/tty1 49.#echo "Starting leds service..." > /dev/tty1 50.#echo " " 51.#sleep 1 52.#echo "*************************************" > /dev/ttySAC2 53.#echo " http://www.topeet.com.cn " > /dev/ttySAC2 54.#echo "*************************************" > /dev/ttySAC2 55.#echo "*************************************" 56.#echo " http://www.topeet.com.cn " 57.#echo "*************************************" 58.mkdir /mnt/disk 59.sleep 1 60./sbin/ifconfig lo 127.0.0.1 61./etc/init.d/ifconfig-eth0
(20)然后保存并退出“rcS”文件,使用“chmod 755 rcS”命令修改“rcS”文件的权限
(21)返回上一级,cd ..进入etc文件夹
(22)接下来在“etc”目录下使用“vi passwd”命令建立文件“passwd” ,输入以下内容
root::0:0:root:/:/bin/sh
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
(23)然后保存并退出“passwd”文件,使用“chmod 755 passwd”命令修改“passwd”文件的权限
(24)使用“vi profile”命令在“etc”目录建立“profile”文件 ,输入
1.# Ash profile 2.# vim: syntax=sh 3.# No core files by default 4.ulimit -S -c 0 > /dev/null 2>&1 5.USER="`id -un`" 6.LOGNAME=$USER 7.PS1=‘[[email protected]$HOSTNAME]# ‘ 8.PATH=$PATH 9.HOSTNAME=`/bin/hostname` 10.export USER LOGNAME PS1 PATH
(25)然后保存并退出“profile”文件,使用“chmod 755 profile”命令修改“profile”文件的权限
(26)接下来使用“mkdir rc.d”命令在“etc”目录建立文件夹“rc.d”
(27)进入rc.d,使用“mkdir init.d”命令建立“init.d”文件夹 ,进入cd init.d文件夹
(28)接着在“init.d”文件夹,使用“vi netd”命令建立“netd”文件 ,输入
1.#!/bin/sh 2.base=inetd 3.# See how we were called. 4.case "$1" in 5.start) 6./usr/sbin/$base 7.;; 8.stop) 9.pid=`/bin/pidof $base` 10.if [ -n "$pid" ]; then 11.kill -9 $pid 12.fi 13.;; 14.esac 15.exit 0
(29)然后保存并退出“netd”文件,使用“chmod 755 netd”命令修改“netd”文件的权限
(30)使用“cd ../../../”命令返回到“system”目录 ,进入lib文件夹
(31)因为我们使用的交叉编译环境和编译内核是一样的,所以我们的编译器在文件夹“/usr/local/arm/arm-2009q3”中。Busybox 编译生成的二进制文件是以动态链接库的形式运行,所以我们需要拷贝编译器里面的库文件到“lib”目录,使用命令:cp/usr/local/arm/arm-2009q3/arm-none-Linux-gnueabi/libc/lib/* ./
(32)返回system,再进入var,然后使用“mkdir lib lock log run tmp”命令在“var”目录下建立“lib,lock,log,run,tmp”五个目录
(33)所有文件都创建好了,下面需要编译成映像文件
(34)拷贝“Linux_tools.tgz”到 Ubuntu 的“/”目录下,并使用命令“tar -vxf linux_tools.tgz”解压
(35)使用命令“make_ext4fs -s -l 314572800 -a root -L Linux system.img system”,执行该命令后,会生成“system.img”文件系统镜像
(36)然后把system.img烧录进开发板,烧录方式和android和QT的系统文件一样,其他的映像可以使用QT和android的映像
以上是关于Linux 最小系统制作的主要内容,如果未能解决你的问题,请参考以下文章
《Linux操作系统-Exynos4412》如何使用BusyBox制作最小文件系统
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段