使用BusyBox制作根文件系统的操作步骤
参考博客http://www.cnblogs.com/Charles-Zhang-Blog/p/3419301.html
一、构建根文件系统该有的目录
- 即在/rootfs/目录下创建该有的空目录;
- 一般有dev/ etc/ lib/ usr/ var/ proc/ tmp/ home/ root/ mnt/ bin/ sbin/ sys/ ;
- /bin /sbin由于是用busybox构建,再拷贝到此目录下的,所以可以先不创建;
二、使用busybox构建/bin /sbin linuxrc
1、获取busybox源码
- busybox是开源项目,版本差异不大;这里选择busybox-1.24.1版本。
- 官方网站下载:https://busybox.net/downloads/
2、解压后修改Makefile
- ARCH = arm
- CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin//arm-none-linux-gnueabi-
3、配置busybox
- 先make defconfig,然后make menuconfig,安装下面图示进行配置。
p.s:出现错误
解决思路方法:此文件和主功能无关,可以避开。
(1)先找到sync.c文件:在此目录下find -name "sync.c",知道其在./coreutils/sync.c
(2)cd coreutils,在Kbuild文件中,查找sync.o,可知由宏CONFIG_SYNC来控制是否编译
(3)在make menuconfig中,查找SYNC的位置,转到其位置,选择为N。
4、输入make进行编译,然后输入make install进行安装
(1)make install,执行busybox顶层目录的一个目标install。
(2)安装目录默认在busybox/_install,里面有bin/ sbin/ linuxrc三个(目录)文件。
- 也可以指定目录安装,以便后期不用再拷贝。
(3)make install的解释
- 安装软件的指令,在传统的linux系统中,安装软件时都是选择源代码方式安装的。
- 下载要安装的软件源代码,然后配置、编译、安装。
- 安装的含义是,将编译生成的可执行程序及其依赖的库文件、配置文件、头文件安装到当前系统中指定的目录下。
5、将bin/ sbin/ linuxrc拷贝到rootfs文件夹下
- 指令是cp bin/ sbin/ linuxrc /root/rootfs -ra;
三、构建etc目录
主要是拷贝一些文件到etc/目录下,并进行一些修改
1、将 busybox/examples/bootfloopy/etc/* 拷贝到 /rootfs/etc/ 目录下,然后修改其中的inittab文件;
(1)开机免登陆,直接进入shell
#first:run the system script file
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:-/sbin/reboot
#umount all filesystem
::shutdown:/bin/umount -a -r
#restart init process
::restart:/sbin/init
或者
::sysinit:/etc/init.d/rcS
#::respawn:-/bin/sh
#::respawn:-/bin/login
console::askfirst:-/bin/sh //这个和上面一样,只是id明确给出而已
#tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
(2)开机需要登陆
::sysinit:/etc/init.d/rcS
#::respawn:-/bin/sh
::respawn:-/bin/login
#console::askfirst:-/bin/sh
#tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
2、用户名、密码设置:将虚拟机ubuntu的 /etc/passwd、/etc/group、/etc/shadow 拷贝到 rootfs/etc/ 目录下,然后修改三个文件的相关内容;
(1)只保存与root相关项,修改passwd为root:x:0:0:root:/root:/bin/sh。
(2)只保存与root相关项,修改group为root:x:0:root。
(3)只保存与root相关项,shadow其他不需要更改(或者清除密码),登陆密码和拷贝源的密码一致。
3、修改profile文件;
# Ash profile
# vim: syntax=sh# No core files by default
ulimit -S -c 0 > /dev/null 2>&1USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]\# '
PATH=$PATHHOSTNAME=`/bin/hostname`export USER LOGNAME PS1 PATH
4、修改fstab文件;
添加以下内容:注意这里的挂载点需要预先建立(如果在第一步创建空目录是没有创建的话)
#<file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /var tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
5、修改etc/init.d/rc.S文件;
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=S
prevlevel=Numask 022export PATH runlevel prevlevelmount -aecho /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s/bin/hostname -F /etc/sysconfig/HOSTNAMEifconfig eth0 192.168.1.10
四、构建lib目录
将动态链接库拷贝到/root/rootfs/lib/目录下,动态链接库在 /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/ 目录下。
- 指令 cp /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/*so* /root/rootfs/lib/ -rdf
使用BusyBox制作根文件系统的操作步骤相关推荐
- 嵌入式Linux利用busybox制作根文件系统
本文介绍如何利用busybox制作一个最小根文件系统,系统包含ls.cd.ifconfig等基本指令,文件系统采用动态加载的方式. 1.去busybox官网下载源码 官网地址:busybox官网 ...
- 使用BusyBox制作根文件系统的理论分析
以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 一.inittab文件介绍 #first:run the system script file ::sysinit:/etc/init.d/ ...
- [架构之路-30]:目标系统 - 系统软件 - Linux OS根文件系统rootfs的概念、组成、制作以及用busybox制作根文件系统
目录 前言: 第1章 什么是根文件系统 1.1 什么是文件 1.2 什么是文件系统 1.3 文件系统组织文件的方式:树形结构 1.4 统一的虚拟文件系统 1.5 物理存储介质与物理文件系统类型 1.5 ...
- 使用busybox制作根文件系统(rootfs)
我们知道一个linux的启动过程,包括BIOS的加电自检POST,拷贝MBR的信息(启动BootLoader),加载内核,挂载根文件安系统这几大步,在嵌入式系统的移植方面我们也要自己动手制作内核映像, ...
- busybox制作根文件系统
一.分配空间 制作64M的镜像文件,命名为myrootfs.ext3 sudo dd if=/dev/zero of=myrootfs.ext3 bs=1M count=64 用ext3格式化上一步的 ...
- Linux 利用busybox制作根文件系统
busybox版本:1.17.3 官网下载路径:https://busybox.net/downloads/ 网盘下载路径:https://pan.baidu.com/s/1nvrEa73 密码:7y ...
- 使用Busybox制作根文件系统
使用Busybox手工制作 Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载.编译,如果它需要某些依赖库,你还需要手工下载.编译这些依赖库. 如果想做一个极简的文件系统, ...
- 嵌入式 详解制作根文件系统以及文件系统中init以及其他文件详解
一.FHS(Filesystem Hierarchy Standard)标准介绍 当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行 ...
- 根文件系统制作一制作根文件系统树
完成了u-boot移植后就是内核移植然后是根文件系统制作,这次分为这几部分书写:根文件系统树.文件系统initramfs.jaffs2.ubifs 有必要了解一些存储系统和文件系统的知识 Norfla ...
最新文章
- (循环练习题) 五只猴子分桃子
- 在报文摘要算法MD5中,首先要进行明文分组与填充,其中分组时明文报文摘要按照(42)位分组。【答案】C
- 计算机改名后无法上网,CDEF磁盘分区无法修改名字修复方法
- python的GUI库PyQt5的使用
- PHP文件包含漏洞原理分析和利用方法
- JZOJ 5354. 【NOIP2017提高A组模拟9.9】导弹拦截
- 第一个Android项目
- 【Qt】Qt数据库简介
- Mac OS 被XCode搞到无法正常开机怎么办?
- 单词替换(信息学奥赛一本通-T1406)
- websocket php MySQL_PHP写了一个websocket服务,mysql连接实例丢失问题怎么解决?
- 简述隐含表法化简状态步骤
- 苹果Mac电脑上fn键的妙用
- 安消一体智能分析终端服务器
- SSMS 18 安装过程中出现严重错误
- win10 搜索本地应用没反应,Cortana显示已挂起 的解决办法
- win10便签常驻桌面_win10技巧分享第六篇——win10自带的备忘录便签功能
- 北大青鸟消防控制器组网_北大青鸟消防报警主机维修与调试
- 马云收购士兰微_2019中国500强民企榜单出炉!阿里第一腾讯第二
- 用三角函数计算两个坐标点距离
热门文章
- Oulipo (KMP出现次数)
- js控制语句练习(回顾)
- Django models模型
- Android报“android.content.res.Resources$NotFoundException: String resource ID #0x2”错误
- Rotate String
- 图论测试题(一)第一题:longest
- 基于java的数据结构学习——数组实现的队列和循环队列及性能对比
- 数据结构排序法之鸡尾酒排序法he快速排序法
- .NET高级代码审计(第三课)Fastjson反序列化漏洞
- Android性能优化-App后台优化