Linux内核裁减及根文件系统定制(之二)--------根文件系统定制

BusyBox制作根文件系统(rootfs) 定制根文件系统的方法很多,最常用的是使用BusyBox来构建。它能使用户迅速方便地建立一套相对完整、功能丰富的文件系统,其中包括大量常用的应用程序。它集成压缩了Linux的许多工具和命令。下面详细介绍有关BusyBox定制根文件系统。   一、系统环境: 1、操作系统:Ubuntu12.04 2、交叉编译工具:arm-linux-gcc4.4.3 3、busybox源码包:busybox 阅读详情

Linux内核裁减及根文件系统定制(之二)--------根文件系统定制
二、
根文件系统定制
   
1、 创建一个全新的根文件系统
       
你可以用mkinitrd来创建,这里介绍另外一种方式,用dd命令:
                      # mkdir -p /mnt/initrd    创建一个设备点,用于临时挂载根文件系统。
                      # cd  /tmp               在tmp下创建根文件系统
              # dd if=/dev/zero of=/tmp/initrd bs=512 count=40960      创建一个名为initrd的根文件
                                                           系统,系统每个块的大小为
                                                                                                       512字节,共40960块。
             # mke2fs -F -m 0 initrd       格式化根文件系统,其中-F表示强制执行;
                                                             -m 0表示不为系统预留空间。
    
        # mount -o loop /tmp/initrd /mnt/initrd         挂载根文件系统,记住这里要使用
                                                                                     -o loop选项,否则挂载会失败。
                      # cd /mnt/initrd     
  
       
2、 创建基本的目录结构
                     # mkdir dev proc etc etc/rc.d  sbin bin lib mnt tmp var usr  
                     # chmod 755 dev etc etc/rc.d  sbin bin lib mnt tmp var usr  
                     # chmod 555 proc

       
3、 添加设备

 

你可以使用mknod创建,也可以从现有的系统中拷贝过来,拷贝的时候一定要注意,最好使用-dfR,这样有两个好处:1、拷贝路径下的所有文件,如果有文件夹,则嵌套拷贝整个文件夹下的内容;2、保持文件(设备)的属性不变。

 

                   这里采用mknod创建的方式,以下设备是必须的console、kmem、mem、null、ram0、tty等。
                    建立一般终端机设备

                            # mknod tty c 5 0
                            # mkdir console c 5 1
                            # chmod 666 tty console 

           建立 VGA Display
虚拟终端机设备
                           # mknod tty1 c 4 0
                           # chmod 666 tty0 

           建立 RAM disk 设备

                          # mknod ram0 b 1 0
                          # chmod 600 ram0

           建立
null 设备
                         # mknod null c 1 3
                         # chmod 666 null 

        4、
创建配置文件
         到这里我们就有了一个初步的小型根文件系统,但是还需要配置一些有关的 shell script来完善它。
      在
etc下创建最基本的配置文件fstab、inittab、rc.d/rc.sysinit,其中每个配置文件中至少应该包含以下
      对应的内容:
                fstab
应包括:
         
   /proc  /proc  proc  defaults 0 0

             
   inittab
应包括:
                    ::sysinit:/etc/rc.d/rc.sysinit
                    ::sysinit:/bin/sh  (注意,这里如果用getty或minigetty代替sh,那么shell
就会等待用户登录,
                           而不会直接进入
shell。
)
               rc.d/rc.sysinit
应包括:
                    /bin/mount  –a

        5、
添加bin、sbin、usr/bin、usr/sbin下的可执行文件   
        系统至少应该包含工具sh, ls, cp, mv,init。我们可以将/bin /sbin /usr/bin /usr/sbin
    下的对应工具拷贝过来,拷贝的时候采用
cp  –dfR。系统中的可执行文件一般都比较大,
     在内存或磁盘空间紧张的情况下不适合,我们可以用
BusyBox来解决这个问题。BusyBox
包含了
     七十多种
Linux 上标准的工具程序,仅需要几百 k
磁盘空间,在嵌入式系统上常用到它。下载了
     B
usyBox
的源代码包后可以按照如下的步骤操作:
                DOSTATIC=true
     然后修改 BusyBox 中的 init.c,设定系统要执行的第一个程序为
: /etc/rc.d/rc.sysinit
                #define INIT_SRCIPT "/etc/rc.d/rc.sysinit" 
     开始编译
BusyBox
               #make
               #make install 
    到这一步我们就得到了可执行命令
busybox
       将busybox 复制到/mnt/initrd/bin
目录下
              # cp busybox  /mnt/initrd/bin 
    然后创建常用命令的link,具体的工作原理请参阅busybox
的官方说明。
   我们可以使用 ./busybox --help 来查看busybox中都有哪些工具。常用的工具及
busybox
   的用法如下:
               # ln -s busybox  ls
              # ln -s busybox  cp
              # ln -s busybox  mount
             # ln -s busybox  umount
             # ln -s busybox  more
            # ln -s busybox  ps
            # ln -s busybox  sh
      现在我们就有了所需的常用命令。
       
        6、
添加库到lib下
         该目录中包含有你的启动盘启动过程中所需要的共享函数库,如果缺少必须的函数库,
     系统会停止启动或出现一大堆错误信息,所以一定要注意。
        几乎所有的程序都需要libc库,列一下目录/lib中的libc
:
   ls  -l  /lib/libc*
  -rwxr-xr-x 1 root root 4016683 Apr 16 18:48 libc-2.1.1.so*
  lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so*
  libc.so.6的6表示版本号,它指向的文件才是你真正需要的。
        查看/bin  /sbin  /usr/bin  /sur/sbin下每一个程序使用的函数库,用命令ldd,
    如:
      ldd  /sbin/mke2fs
       libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000)
      libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000)
      libuuid.so.1 => /lib/libuuid.so.1 (0x40028000)
      libc.so.6 => /lib/libc.so.6 (0x4002c000)
      /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
    输出右边的库都是必须的,有的可能是链接文件。
      在/lib目录下你还必须有函数库装载器,这个装载器或是ld.so (对 a.out 库) 或是   
       
ld-linux.so (对 ELF 库)。新版本的ldd一般会告诉你所需库的装载器。
        7、 加载模块
       
如果你有一个模块化的内核,你还得考虑需要加载的模块,它们都位于/lib/modules 下
                        cp –dfR  /lib/modules/x.y.z  /mnt/initrd/lib/modules
       8、 打包
             # cd /tmp
        # umount /mnt/initrd
        # gzip -9  initrd
     最终产生的文件initrd.gz就是压缩过的根文件系统
        9、 修改已经存在的根文件系统
                   # gunzip initrd.zip
                   # mount -o loop /tmp/initrd /mnt/initrd
                  # 用户修改根文件系统
                  # umount /mnt/initrd
                  # gzip -9  initrd

 

iTop4412精英版配置支持NFS文件系统服务器和QT并烧录到开发板上,保姆级教程,遇到了各种错误。 嵌入式Linux实验讯为ITop4412定制内核,并支持NFS文件系统与QT,遇到了各种错误,保姆级教程。 错误列举:1. PL2303TA不支持Windows11。 2. 系统误识别为Android1.0。 3. Android ADB Interface上有叹号。无法成功安装ADB interface,ADB interface不好使以及各种驱动不支持,不识别。 4.烧录时无限重启。解决重启问题 5.网络连接问题,无需路由器。 6. 虚拟机设置问题。 7.出现 failed: No such device 问题 8. 出现 failed to copy MFC F/W during init ITop4412暂停错误。 9.出现Try to bring eth0 interface up......暂停错误。 10. waiting for device等等。 立即下载

相关推荐

附录B:Standard Delay Format(SDF)(上)

本附录将介绍标准延迟标注格式,并说明了如何在仿真中执行反标。 延迟格式描述了设计网表的单元延迟和互连走线延迟,无论设计是用两种主要硬件描述语言(VHDL或Verilog HDL)中的哪一种所描述的。 本章还会介绍仿真的反标(backannotation),STA的反标其实是一个简单直接的过程,其中DUA中的时序弧将由SDF所指定的延迟进行标注。

To the beyond and infinity! 5414

根文件系统定制

<!--google_ad_client = "pub-2132256014190581";/* 160x600, 创建于 09-1-4 */google_ad_slot = "4461398019";google_ad_width = 160;google_ad_height = 600;//-->根文件系统定制1、 创建一个全新的根文件系统你可以

嵌入式 Linux ARM ADS ADHOC C C++ PLC 单片机 2184

学习海康VisionMaster之BLOB分析

6):软阈值(相对):是一种动态阈值分割方法,其核心思想是 基于图像局部特性(如背景或参考区域)自适应调整阈值范围,适用于光照变化明显、背景灰度不均的场景。3:拖入位置修正功能:这个非常重要,模版匹配成功后会得到新的匹配坐标,那和创建模版时候的原点坐标会组合成一个坐标变换矩阵,通过这个矩阵,那后续的blob分析窗口则可以实现精确定位来查找目标对象。(2):设定参数:这里阈值方式是blob的核心算法,根据不同的应用场景来选择不同的阈值方式。8:高级参数:是设定blob区域的特征范围,用于筛选出来特定的区域。

yuhouxiyang的专栏 3622

定制适用于ARM平台的Ubuntu rootfs(根文件系统)

有一个很厉害的师兄针对我们实验室的需求设计了一块控制板,以beaglebone为基础,由于更改了一些底层的硬件,所以重新定制编译的内核,并预先烧写到了板子的flash中。现在需要安装的文件系统,以使用ROS的相关功能函数库。前一段时间我在下载了其提供的好的根文件系统,修改挂载设置fstab文件后顺利启动,但是不能支持图形界面,不知是内核支持的原因还是文件系统的原因。前面琢磨了如何编译适用于ARM架构的内核(...

szembed的博客 4273

基于STM32F407的立创球形六足双形态机器人:从Morphex复刻到毕业设计的完整开发指南

本文详细介绍了基于STM32F407主控芯片,从零开始复刻Morphex球形六足双形态机器人的完整开发过程。内容涵盖硬件选型(如总线舵机)、机械结构设计(阿基米德螺旋底盘)、软件控制(逆运动学与步态算法)以及多控制方式集成,为嵌入式系统与机器人开发的毕业设计或爱好者提供了全面的实战指南。

weixin_35414260的博客 322

如何用Arduino和HX711压力传感器制作一个简易电子秤(含OLED显示)

本文详细介绍了如何使用Arduino、HX711压力传感器和OLED显示屏制作一个简易电子秤。从硬件连接到软件编程,提供了分步教程,包括核心元件功能解析、接线方法、库安装、模块测试以及关键的校准流程。项目实践性强,适合创客和DIY爱好者学习嵌入式系统与传感器应用。

tea88的博客 537

4412 按键和中断

一、轮询方式获取按键 1.原理分析: 按键会影响电平的输入,通过GPIO的输入电平来检测按键的变化 按下0,前面实验“GPIO读”用到过 应用中是read 2.硬件准备 使用两个按键:Home和Back UART_RING和SIM_DET→ GPX1_1和GPX1_2→ EXYNOS4_GPX1(1),EXYNOS4_GPX1(2) 3.软...

weixin_30929195的博客 675

IC芯片验证 - 手把手教你搭建UVM验证环境

这是一个UVM的demo项目

howard789的博客 3万+

Linux内核裁减及根文件系统定制(之一)--------Linux内核裁减

Linux内核裁减及根文件系统定制(之一)--------Linux内核裁减目录:一、内核编译二、根文件系统定制三、内核选项说明 一、内核编译1、  准备工作(1)       整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)       建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/li

4718

AI驱动全栈开发实战:基于Spec与Codex的规格驱动开发指南

1. 先搞清楚“AI重构前端全栈”到底在解决什么实际问题 最近很多人在聊“AI重构前端全栈”,听起来像是又一个营销概念。但如果你真的拆开看,它核心解决的是一个非常具体且痛苦的问题: 一个开发者,如何从零开始,系统性地、不跑偏地完成一个完整项目,并且保证代码质量和架构一致性。 传统开发流程里,产品经理出PRD,前后端开会对齐,前端画页面,后端写接口,测试再介入。这个过程沟通成本高,文档容易过时,新人上手慢。而“AI重构”的思路,是试图用一套 规范化的指令(Spec) 来驱动AI(比如Codex这类模型)生成代

weixin_30596023的博客 460

从NHANES到发表:如何用survey包完成符合CDC要求的统计分析(含完整R代码)

本文详细介绍了如何利用R语言的survey包,对美国国家健康与营养调查数据进行符合CDC要求的统计分析。文章重点解析了NHANES数据的复杂抽样设计、权重变量的正确选择与调整,并提供了从数据获取、清洗、构建调查设计对象到执行加权回归及生成发表级表格的完整R代码实战指南,帮助研究者避免常见错误,确保分析结果的准确性与可发表性。

weixin_29054245的博客 523

Linux内核裁减及根文件系统定制

<br />根文件系统定制<br />1、 创建一个全新的根文件系统<br />你可以用mkinitrd来创建,这里介绍另外一种方式,用dd命令:<br /># mkdir -p /mnt/initrd 创建一个设备点,用于临时挂载根文件系统。<br /># cd /tmp 在tmp下创建根文件系统<br />  # dd if=/dev/zero of=/tmp/initrd bs=512 count=40960 创建一个名为initrd的根文件<br />系统,系统每个块的大小为<br />

babyfans的专栏 776

Python电梯II

输入数据有若干组(最多不超过1000组),每组数据的第一行为四个如题目中所示的整数N,u,d,s,由空格分隔开。第二行为不同楼层需要上下楼的请求, 最多不超过1000个。每个请求的格式为"from-to",其中"from"和"to"为所在楼层和要到达的楼层,保证from!=to。

沐风—云端行者 910

Uboot移植,Linux内核裁减及根文件系统定制

Uboot移植,Linux内核裁减及根文件系统定制 国庆写。。。 posted on 2014-09-29 09:50 Shimejing 阅读(...) 评论(...) 编辑 收藏 var allowComments=true,cb_blogId=161049,...

weixin_30336061的博客 279

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LINUX内核定制基本过程,Linux内核裁减及根文件系统定制(转)

一、内核编译1、准备工作(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。(3)下载并解压linux内核,建议从http://www.kernel.org...

weixin_36361600的博客 588

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

linux内核封装方式,Linux内核裁减及根文件系统定制(转)

一、内核编译1、准备工作(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。(3)下载并解压linux内核,建议从http://www.kernel.org...

weixin_39880328的博客 336

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

linux 文件系统覆盖目录,Linux内核裁减及根文件系统定制

一、内核编译1、准备工作(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。(3)下载并解压linux内核,建议从http://www.kernel.org...

weixin_32746239的博客 300

Linux内核裁减及根文件系统定制(一)

一、内核编译1、准备工作(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。(3)下载并解压linux内核,建议从http://www.ke

960

linux根文件系统清理,Linux内核裁减及根文件系统定制(之一)--------Linux内核裁减...

目录:一、内核编译二、根文件系统定制三、内核选项说明一、内核编译1、准备工作(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)建议用命令uname –r查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install步骤产生的文件会覆盖这个路径下的内容。(3)下载并解压linux内核,...

weixin_39952937的博客 144

Linux内核裁减及根文件系统定制(二)

二、根文件系统定制1、 创建一个全新的根文件系统你可以用mkinitrd来创建,这里介绍另外一种方式,用dd命令:# mkdir -p /mnt/initrd创建一个设备点,用于临时挂载根文件系统。# cd  /tmp 在tmp下创建根文件系统# dd if=/dev/zero of=/tmp/initrd bs=512 count=40960创建一个名为initr

1146

Linux内核裁减及根文件系统定制(之一)--------Linux内核裁减[z]

Linux内核裁减及根文件系统定制(之一)--------Linux内核裁减目录:一、内核编译二、根文件系统定制三、内核选项说明 一、内核编译1、  准备工作(1)       整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)       建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来

1137

Linux内核裁减及根文件系统定制(之二)--------根文件系统定制[z]

Linux内核裁减及根文件系统定制(之二)--------根文件系统定制二、根文件系统定制    1、 创建一个全新的根文件系统        你可以用mkinitrd来创建,这里介绍另外一种方式,用dd命令:                      # mkdir -p /mnt/initrd    创建一个设备点,用于临时挂载根文件系统。                      # cd 

941
上一篇: Linux内核裁减及根文件系统定制(之一)--------Linux内核裁减
下一篇: vi编辑器使用命令图解
ThomasLiu83
博客等级 码龄22年 38粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值