Linux 最小系统制作

时间:2021-12-15 09:50:38

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”文件夹中

Linux 最小系统制作

(3)输入make menuconfig 进行配置

Linux 最小系统制作

(4)进入Busybox Settings ->Build Optiions-> Cross Compiler prefix

Linux 最小系统制作

(5)输入交叉编译器arm-none-linux-gnueabi-

(6)返回busybox settings

(7)进入Installation Options ->BusyBox installation prefix

Linux 最小系统制作

(8)删除./_install

(9)输入../system

(10)返回最上级,然后保存退出

Linux 最小系统制作

(11)输入make,开始编译busybox

Linux 最小系统制作

(12)把编译后的二进制文件安装到../system,输入命令make install

Linux 最小系统制作

(13)Cd ../system 看里面的文件

Linux 最小系统制作

(14)制作的文件系统还需要新建“dev,etc,lib,mnt,proc,sys,tmp,var”文件夹,使用命令“mkdir dev etc lib mnt proc sys tmp var”

Linux 最小系统制作

(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”文件 ,输入以下内容

.#! /bin/sh  
.PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:  
.runlevel=S  
.prevlevel=N  
.umask   
.export PATH runlevel prevlevel  
.# #  
.Trap CTRL-C &c only in this shell so we can interrupt subprocesses.  
.#  
.trap ":" INT QUIT TSTP  
./bin/hostname iTOP-  
.#/bin/mount -n -t proc none /proc  
.#/bin/mount -n -t sysfs none /sys  
.#/bin/mount -n -t usbfs none /proc/bus/usb  
.#/bin/mount -t ramfs none /dev  
.[ -e /proc/ ] || /bin/mount -n -t proc none /proc  
.[ -e /sys/class ] || /bin/mount -n -t sysfs none /sys  
.[ -e /dev/tty ] || /bin/mount -t ramfs none /dev  
.echo /sbin/mdev > /proc/sys/kernel/hotplug  
./sbin/mdev -s  
.#/bin/hotplug  
.# mounting file system specified in /etc/fstab  
.mkdir -p /dev/pts  
.mkdir -p /dev/shm  
./bin/mount -n -t devpts none /dev/pts -o mode=  
./bin/mount -n -t tmpfs tmpfs /dev/shm  
.#/bin/mount -n -t ramfs none /tmp  
.#/bin/mount -n -t ramfs none /var  
.mkdir -p /var/empty  
.mkdir -p /var/log  
.mkdir -p /var/log/boa  
.mkdir -p /var/lock  
.mkdir -p /var/run  
.mkdir -p /var/tmp  
.ln -sf /dev/ttyS2 /dev/tty2  
.ln -sf /dev/ttyS2 /dev/tty3  
.ln -sf /dev/ttyS2 /dev/tty4  
.syslogd  
./etc/rc.d/init.d/netd start  
.echo " " > /dev/tty1  
.echo "Starting networking..." > /dev/tty1  
.#sleep   
.#/etc/rc.d/init.d/httpd start  
.#echo " " > /dev/tty1  
.#echo "Starting web server..." > /dev/tty1  
.#sleep   
.#/etc/rc.d/init.d/leds start  
.#echo " " > /dev/tty1  
.#echo "Starting leds service..." > /dev/tty1  
.#echo " "  
.#sleep   
.#echo "*************************************" > /dev/ttySAC2  
.#echo " http://www.topeet.com.cn " > /dev/ttySAC2  
.#echo "*************************************" > /dev/ttySAC2  
.#echo "*************************************"  
.#echo " http://www.topeet.com.cn "  
.#echo "*************************************"  
.mkdir /mnt/disk  
.sleep   
./sbin/ifconfig lo 127.0.0.1  
./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”文件 ,输入

.# Ash profile  
.# vim: syntax=sh  
.# No core files by default  
.ulimit -S -c  > /dev/null >&  
.USER="`id -un`"  
.LOGNAME=$USER  
.PS1='[$USER@$HOSTNAME]# '  
.PATH=$PATH  
.HOSTNAME=`/bin/hostname`  
.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”文件 ,输入

.#!/bin/sh  
.base=inetd  
.# See how we were called.  
.case "$1" in  
.start)  
./usr/sbin/$base  
.;;  
.stop)  
.pid=`/bin/pidof $base`  
.if [ -n "$pid" ]; then  
.kill - $pid  
.fi  
.;;  
.esac  
.exit   

(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”五个目录

Linux 最小系统制作

(33)所有文件都创建好了,下面需要编译成映像文件

(34)拷贝“Linux_tools.tgz”到 Ubuntu 的“/”目录下,并使用命令“tar -vxf linux_tools.tgz”解压

Linux 最小系统制作

(35)使用命令“make_ext4fs -s -l 314572800 -a root -L Linux system.img system”,执行该命令后,会生成“system.img”文件系统镜像

(36)然后把system.img烧录进开发板,烧录方式和android和QT的系统文件一样,其他的映像可以使用QT和android的映像

Linux 最小系统制作的更多相关文章

  1. [嵌入式开发入门]4412开发板从零建立Linux最小系统

    本文转自iTOP-4412开发板实战教程书籍 http://www.topeetboard.com iTOP-4412开发板不仅可以运行Android,还可以运行简单的Linux最小文件系统. 最小L ...

  2. 基于busybox的Linux小系统制作 (initrd)

    我们有时候有需要在busybox基础上,制作linux,可是却不知道具体怎么做,这里将对基于busybox的linux小系统制作做出详细的步骤说明.准备环境:1.一个Redhat完整系统的虚拟机,本次 ...

  3. Linux最小系统移植之早期打印CONFIG_EARLY_PRINTK

    请先参考先前博文:  Linux最小系统移植之早期打印CONFIG_DEBUG_LL  , 因为eraly_printk其实就是对printch()封装的 一. 必要选项(在上面链接选中的前提下再新增 ...

  4. Linux最小系统移植之早期打印CONFIG_DEBUG_LL

    一.几个关键宏定义 CONFIG_DEBUG_LL. CONFIG_DEBUG_LL_INCLUDE 容我慢慢道来, 首先要使能早期打印, menuconfig必须选中CONFIG_DEBUG_LL, ...

  5. stm32最小系统制作(原理图,PCB图,焊接等)

    一直想自己做一个最小系统,这次终于把想法付诸实现.     原理图如下:     PCB图如下: 过了多日,板子终于邮到了,就是下面这个熊样.   焊接了稳压电路,发现稳压电路原理图部分画错,没有接地 ...

  6. 用BusyBox制作Linux最小系统

    1.下载busybox-1.30.1 地址:https://busybox.net/downloads/busybox-1.30.1.tar.bz2 2.解压:tar xvf busybox-1.30 ...

  7. ZYNQ学习之路1. Linux最小系统构建

    https://blog.csdn.net/u010580016/article/details/80430138?utm_source=blogxgwz1 开发环境:window10, vivado ...

  8. 在Linux最小系统上编译运行第一个helloworld程序

    一.安装和使用SSH软件 1.安装SSH 软件 1)SSH 软件压缩包可以在网盘下载,下载后解压,进入解压出来的文件夹,如下图. 2)单击上图中的“SSHSecureShellClient-3.2.9 ...

  9. Linux 最小系统挂载U盘(SD、TF卡)并执行程序

    一.在Ubuntu下编译C文件 使用指令"arm-none-linux-gnueabi-gcc-4.4.1 -o HelloWorld HelloWorld.c -static"编 ...

随机推荐

  1. SecureCRT:保存输出日志的方法

    处理地址: http://blog.sina.com.cn/s/blog_64c1dd210101gzgz.html 或者: http://renchen.blog.51cto.com/4531967 ...

  2. dynamic-load-apk插件原理整理

    因为当前项目功能越来越多,编译速度越来越慢(公司电脑配置也挺差的...),并且方法数已超出65535的限制了,虽然通过multidex暂时解决了,但是这并不是一个好的解决方式.所以通过插件来加快编译速 ...

  3. spring boot properties

    [转载] 代码从开发到测试要经过各种环境,开发环境,测试环境,demo环境,线上环境,各种环境的配置都不一样,同时要方便各种角色如运维,接口测试, 功能测试,全链路测试的配置,hardcode 肯定不 ...

  4. IOS 100 - 1 开工闲聊

    1 前言 现在的行情,作为码农,ios 普遍比c# 的待遇好上不少.感觉就如清洁工人,扫厕所干的再高效和干净,一个月就那么点微薄的收入.当然你可以选择去香港打扫卫生间,那里的行情据说清洁工也破万了.说 ...

  5. hdu3847Trash Removal(凸包)

    链接 这题居然是WF的题, 应属于签到题.. 求一个多边形是否能被一个宽为d的矩形框住. 可以求一下凸包,然后枚举每条凸包的边,找出距离最远的点. #include <iostream> ...

  6. python &colon;生产者和消费者模型 即简单的协程

    def consumer(name): print('%s开始准备吃包子了' %name) while True: baozi=yield print('[%s]包子来了,被[%s]吃了' %(bao ...

  7. 【&period;NET-EF】Entity Framework学习笔记1 - VS2013没有EF的解决方法

    解决方法:我本来也没有,百度了一下,在C:\ProgramData\Package Cache\{08AEF86A-1956-4846-B906-B01350E96E30}v12.0.20912.0\ ...

  8. &period;NET使用HttpRuntime&period;Cache设置程序定时缓存

    第一步:判断读取缓存数据 #region 缓存读取 if (HttpRuntime.Cache["App"] != null) { return HttpRuntime.Cache ...

  9. django之创建第9个项目-管理后台admin

    django之创建第9个项目-管理后台admin配置 1.配置setting文件INSTALLED_APPS = (    'django.contrib.auth',    'django.cont ...

  10. &lbrack;解决思路&rsqb;ORA-01078&colon; failure in processing system parameters LRM-00109&colon; could not open parameter file

    oracle数据库,服务器异常断电,导致数据库不能启动.... 错误提示: SQL> startup ORA-01078: failure in processing system parame ...