热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxcpdd不同文件系统,根文件系统的制作

根文件系统的制作(贴在这是为了方便分析,和大家一起讨论分析,尊重原创)使用Busybox-1.16.1制作根文件系统Busybox下载地址:

根文件系统的制作

(贴在这是为了方便分析,和大家一起讨论分析,尊重原创)

使用Busybox-1.16.1制作根文件系统

Busybox下载地址:

交叉编译器:arm-linux-4.3.2

一、STEP 1创建根目录:

在home目录下创建/home/rootfs文件夹,用作新构建的根文件系统的根目录

#cd/home

#mkdir  rootfs

创建根文件系统目录,主要包括以下目录

/dev  /etc/lib  /usr  /var/proc/tmp/home/root/mnt/bin/sbin

#mkdirdev  etclib  usr  varproctmphomerootmntbinsbinsys

二、STEP2构建 /bin、/sbin、linuxrc:

解压并进入busybox-1.16.1目录,执行

# make defconfig

# make menuconfig

Busybox Setting ----->

Build Options ----->

[*]Build BusyBox as a static binary (no shared libs)\\静态编译busybox

指定交叉编译器为

(/usr/local/arm/4.3.2/bin/arm-linux-)Cross Compiler prefix

Installation Options ----->

选择上Don’t use /usr

Busybox Library Tuning--->

[*]Username shell prompts

[*]Query  cursor  position  from  terminal

[*]   Fancy shell prompts(这个要是不加会出现[\u@\h \W]#ls这样的错误)

编译出的busybox的shell命令解释器支持显示当前路径及主机信息

保存退出

# make

# make install

在busybox目录下会看见_install目录,里面有/bin/sbinlinuxrc三个文件

三、STEP3构建etc目录:

1)进入根文件系统rootfs的etc目录,执行如下操作:

#cd /home/rootfs/etc

拷贝Busybox-1.2.0/examples/bootfloopy/etc/*到当前目录下

# cp  –r  busybox-1.16.1/examples/bootfloopy/etc/*  rootfs/etc

修改inittab,把第二项改为::respawn:-/bin/login

2)拷贝虚拟机上的/etc/passwd, /etc/group, /etc/shadow到rootfs/etc下。

# cp /etc/passwd    rootfs/etc

# cp /etc/group     rootfs/etc

# cp /etc/shadow    roofs/etc

对以上三个文件修改,只保存与root相关的项,根据具体情况内容会有所不同。

修改passwd为root:x:0:0:root:/root:/bin/sh,即只保存与root相关项,而且最后改成/bin/ash(也就是只保留第一行)

修改group为root:x:0:root

修改shadow为root:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7:::

登陆开发板时需输入用户名密码,同虚拟机相同

3)修改profile

PATH=/bin:/sbin:/usr/bin:/usr/sbin\\可执行程序环境变量

export LD_LIBRARY_PATH=/lib:/usr/lib\\动态链接库环境变量

USER="`id -un`"

LOGNAME=$USER

HOSTNAME='/bin/hostname'

PS1='[\u@\h \W]# '

显示主机名、当前路径等信息:

4)修改 etc/init.d/rc.S文件

/bin/mount -n -t ramfs ramfs /var

/bin/mount -n -t ramfs ramfs /tmp

/bin/mount -n -t sysfsnone /sys

/bin/mount -n -t ramfs none /dev

/bin/mkdir /var/tmp

/bin/mkdir /var/modules

/bin/mkdir /var/run

/bin/mkdir /var/log

/bin/mkdir -p /dev/pts

/bin/mkdir -p /dev/shm

/sbin/mdev -s

/bin/mount –a

echo /sbin/mdev > /proc/sys/kernel/hotplug

5)修改etc/fstab文件,增加以下文件

none/dev/ptsdevptsmode=06220 0

tmpfs/dev/shmtmpfsdefaults0 0

四、STEP4构建lib目录:

进入/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib目录

将以下动态库拷贝到rootfs/lib下

#cp  *so*  roofs/lib  -a

进入以下目录/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib

将以下动态库拷贝到rootfs/lib下

#cp ./libstdc++.so.*  rootfs/lib  -a

五、SETP5下载验证

经过以上几步,一个最基本的linux根文件系统已经制作完毕

可以将制作好的根文件系统通过nfs、cramfs、yaffs工具进行验证

1)CRAMFS工具包主要有两个工具,分别是mkcramfs和cramfsck

mkcramfs工具用来创建CRAMFS文件系统

# mkcramfs dirname  outfile

cramfsck工具用来进行CRAMFS文件系统的释放和检查

# cramfsck  file -x  dir

2)Yaffs工具包yaffs.tar.gz的使用:

#tar  zxvf  yaffs.tar.gz

#cd  yaffs;

#cd  untils

#make   //会产生mkyaffsimage

用mkyaffsimage制作yaffs文件系统镜像:

#mkyaffsimage usr usr.yaffs

与cramfs不同,这个过程是不可逆的



推荐阅读
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • C#设计模式之八装饰模式(Decorator Pattern)【结构型】
    一、引言今天我们要讲【结构型】设计模式的第三个模式,该模式是【装饰模式】,英文名称:DecoratorPattern。我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理 ... [详细]
  • ihaveusedthedelphidatabindingwizardwithmyxmlfile,andeverythingcompilesandrunsfine. ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
author-avatar
Less哒哒_288
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有