根文件系统的制作

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

使用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不同,这个过程是不可逆的

linux cp dd 不同文件系统,根文件系统的制作相关推荐

  1. Linux之系统移植与根文件系统构建

    Linux之系统移植与根文件系统构建 1.Uboot 1. 什么是Uboot: 一个裸机程序 就是一个bootloader用于启动Linux或其他系统 最主要的工作就是初始化DDR.因为Linux是运 ...

  2. linux ramdisk根文件系统,根文件系统与ramdisk

    一.文件系统 文件系统,是管理文件数据的一堆程序.操作系统,可以通过这些程序,从块设备中,读取或者写入文件. 常见的一些文件系统: ◾FAT32 ◾NTFS ◾EXT2 ◾EXT3 二.扇区和簇 扇区 ...

  3. Linux学习(2)——根文件系统详解

    Linux:ELF文件:可执行文件的存储格式.可执行的.可链接的文件类型. Windows上是:PE  可移植的. 文件系统: rootfs:根文件系统. FHS:文件系统层级标准 [root@ben ...

  4. SD卡启动tiny4412标准版(1306)的linux系统并挂载网络根文件系统

    uboot编译平台环境:64位win8.1的虚拟机vmware10下的ubuntu-12.04.5-64bit 交叉编译工具链为:  arm-linux-gcc-4.5.1 uboot压缩包:    ...

  5. Porting:linux内核的模块化、根文件系统的制作和自动挂载

    1.关于内核模块($: linux   #: 开发板)      模块化设计. $:' vi drivers/char/Makefile             obj-m    += led_drv ...

  6. linux busybox路径,BusyBox构建根文件系统

    BusyBox是一个复合了大量简易版Linux工具的程序,嵌入式系统中使用它可以快速建立一个相对简易的根文件系统. 1.下载busybox 官网 www.busybox.net 目前(2015.8.8 ...

  7. linux内核加载根文件系统,根文件系统 - Linux 内核引导选项简介

    [KNL] root=字符串 指定根文件系统的所在位置.通常这是一个必须明确设置的选项. "字符串"可以使用如下几种形式: XXxx 一个16进制数,其中"XX" ...

  8. linux系统根分区挂载出错 系统无法,用虚拟机安装linux时显示“没有定义根文件系统,请到分区菜单以修正此错误”,是什么意思,肿么弄谢谢各位...

    你的wubi安装在过程中应该失败了.安装程序进入了硬盘安装的过程,此时要格盘建分区(通常是两个:swap和"/"根目录挂载点).Wubi安装很简单的. 你的问题我不是很明白,wub ...

  9. linux启动过程文件系统崩溃,Linux启动过程简介(根文件系统加载过程)

    许多人对Linux的启动过程感到很神秘,因为所有的启动信息都在屏幕上一闪而过.其实, Linux的启动过程并不象启动信息所显示的那样复杂,它主要分成两个阶段: 1.启动内核.在这个阶段,内核装入内存并 ...

  10. linux下dd做优盘启动_Linux中制作U盘启动盘的三种方法,使用启动盘创建器/dd命令和Etcher...

    本文介绍在Linux系统中制作U盘启动盘的三种方法:使用启动盘创建器.dd命令和Etcher,以下以优麒麟Ubuntu Kylin 19.04为例,为你介绍这三种方法.如果要在Windows中制作U盘 ...

最新文章

  1. 分享:Arcadia 0.12.1 发布,Ruby 集成开发环境
  2. 侏罗纪显示服务器超时,侏罗纪世界进化服务器无法访问解决方案推荐
  3. 如何使用 AutoPilot 对作业自动调优?
  4. 热部署插件JRebel使用解决方案(安装+踩坑+使用方法)傻瓜式超详细!!!
  5. java hibernate 表关联_Hibernate多表关联
  6. github 生产环境_如何在GitHub上提高生产力
  7. 从入门到精通:卷积神经网络初学者指南
  8. Guava的介绍与使用示例
  9. EditPlus注册码 亲测最新版可用
  10. Windows,Ubuntu双系统卸载ubuntu(记录)
  11. 计算机系统如何恢复出厂设置路由器,斐讯p.to怎么恢复出厂设置?-斐讯路由器设置...
  12. 如何用计算机解锁苹果手机软件,屏幕显示连接到iTunes,如何解锁iPhone? -
  13. 鸿蒙入门手册(二):应用是怎样运行的
  14. Android硬件开发------计步传感器
  15. 京东 按时上下班被开除,国内IT业惨状
  16. MyCat2分库分表的基本操作
  17. Proteus8 发生关键仿真错误
  18. Gulp——JS模块化说明视频-张晓飞-专题视频课程
  19. PX4固定翼调试校准流程及实验相关问题记录分析
  20. 什么是跨站脚本 (XSS) 攻击?

热门文章

  1. 《The Elder Scrolls V: Skyrim》百般冷门却强力职业
  2. pure seq2seq
  3. 切换IP及DNS上网一键脚本设置
  4. 29个最酷的Firefox About:Config配置参数
  5. 委托代理问题------The principal-agent problem
  6. 可变卷积(Deformable ConvNets)算法的MXNet实现
  7. 写于即将23岁的前端转正前夕
  8. dc是什么游戏的简称_游戏缩写简称
  9. 华为鸿蒙wifi认证,鸿蒙 WiFi操作,热点连接
  10. 惠普台式计算机耳机插口,惠普耳机插在台式电脑上没声音,为什么