liu改udhcpc配置+根文件系统制作
linux各种根文件系统制作

内核在采用默认配置情况下,还要修改以下一些配置:make menuconfig进入菜单设置File systems --->[*] Miscellaneous filesystems ---><*> Journalling Flash File System v2 (JFFS2) support//支持JFFS2<*>Compressed ROM file system support (cramfs) //支持cramfs<*> YAFFS2 file system support //支持YAFFS2注意:如果上面这些选项没有选上,则内核无法找到根文件系统1、制作cramfs映像:压缩rootfs根文件系统生成cramfs./mkcramfs rootfs rootfs.cramfsrootfs.cramfs就是我们要烧写到目标板的映像文件2、在uboot下如下操作,将镜像rootfs.cramfs写入nandflash tftp 30008000 rootfs.cramfsnand erase 560000 40000000nand write 30008000 560000 31d000setenv bootargs 'noinitrd root=/dev/mtdblock3 console=ttySAC0,115200 init=/linuxrc mem=64M'saveenv3、进入文件系统后的运行界面创建一个文件:vi txt输入任意内容:asdasdasd保存:wq你会发现cramfs文件系统是只读的,无法保存提示:"txt" Read-only file system目录也无法创建的:[root@mini2440]#mkdir qqmkdir: cannot create directory 'qq': Read-only file system压缩rootfs根文件系统生成jffs2./mkfs.jffs2 -r rootfs -o rootfsmini.jffs2 -e 0x20000 --pad=0x800000 -nrootfsmini.jffs2就是我们要烧写到目标板的映像文件注意:(1)-r :指定要做成image的目录名。
嵌入式构建根文件系统的方法

嵌入式构建根文件系统的方法一、概述嵌入式系统是指以特定的应用为目标,将计算机系统硬件和软件集成在一起,形成一个独立的、可靠的、具有实时性能的系统。
而构建根文件系统则是嵌入式系统开发中必不可少的步骤之一。
本文将详细介绍如何构建嵌入式系统中所需的根文件系统。
二、准备工作1. 确认开发板及处理器架构在构建根文件系统之前,需要先确认使用的开发板及处理器架构。
因为不同的处理器架构需要使用不同的工具链和库文件。
2. 下载交叉编译工具链交叉编译工具链是用于编译适用于目标平台上运行程序所需的工具集合。
可以从官方网站下载对应版本的交叉编译工具链。
3. 下载所需库文件在构建根文件系统时,需要使用到各种库文件,例如uClibc、BusyBox等。
这些库文件可以从官方网站下载。
三、构建根文件系统1. 创建目录结构首先需要创建一个目录作为根文件系统,并在该目录下创建以下子目录:- bin:存放可执行程序;- dev:存放设备节点;- etc:存放配置文件;- lib:存放库文件;- proc:存放进程信息;- sys:存放系统信息;- tmp:存放临时文件;- usr:存放用户程序和数据。
2. 安装库文件将下载的库文件解压后,使用交叉编译工具链进行编译,并将编译后的库文件复制到根文件系统的lib目录下。
3. 安装BusyBoxBusyBox是一个集成了许多Unix工具的软件包,可用于替代一些独立的小工具。
在构建根文件系统时,需要使用到BusyBox中的一些工具。
将下载的BusyBox解压后,使用交叉编译工具链进行编译,并将编译后的可执行程序复制到根文件系统的bin目录下。
4. 配置启动脚本创建一个启动脚本,用于启动嵌入式系统。
该脚本通常位于根文件系统的etc目录下。
在该脚本中需要设置环境变量、挂载文件系统等操作。
5. 生成镜像文件使用mkimage命令生成镜像文件。
mkimage命令可用于生成各种平台上可执行程序所需的镜像格式。
linux建立和使用文件系统的步骤

linux建立和使用文件系统的步骤
在Linux上建立和使用文件系统的步骤如下:
1. 检查磁盘分区:使用命令fdisk -l或者lsblk来查看系统上的
磁盘分区信息。
2. 创建文件系统:选择一个分区来创建文件系统。
常用的文件系统包括ext4、btrfs、xfs等。
例如,使用命令mkfs.ext4
/dev/sda1来在/dev/sda1分区上创建ext4文件系统。
3. 挂载文件系统:将新创建的文件系统挂载到一个目录上,使得文件系统可以在该目录下访问。
例如,使用命令mount
/dev/sda1 /mnt来将/dev/sda1分区挂载到/mnt目录上。
4. 自动挂载文件系统:如果想要每次开机都自动挂载文件系统,可以编辑/etc/fstab文件,将文件系统的挂载信息添加到其中。
5. 使用文件系统:在文件系统挂载后,可以使用cd命令切换
到挂载点目录下,进行文件的读写等操作。
6. 卸载文件系统:如果要卸载文件系统,可以使用umount命令。
例如,使用umount /mnt来卸载/mnt目录下的文件系统。
以上是建立和使用文件系统的基本步骤,具体操作可以根据实际需要进行调整。
linux创建文件系统的步骤。

linux创建文件系统的步骤
1. 确认磁盘分区:使用fdisk或parted等工具对磁盘进行分区,确保分区正确。
2. 格式化分区:使用mkfs命令对分区进行格式化,例如:mkfs.ext4 /dev/sda1。
3. 挂载分区:使用mount命令将分区挂载到指定的挂载点上,例如:mount /dev/sda1 /mnt。
4. 配置/etc/fstab文件:将分区的挂载信息添加到/etc/fstab 文件中,以便系统在启动时自动挂载。
5. 设置权限:使用chmod和chown命令设置文件系统的权限和所有者。
6. 创建目录:使用mkdir命令创建需要的目录。
7. 配置文件系统:根据需要,可以使用tune2fs等工具对文件系统进行配置,例如:tune2fs -c 10 /dev/sda1,表示每10次挂载后进行一次文件系统检查。
8. 测试文件系统:使用df和du等命令检查文件系统的使用情况,确保文件系统正常工作。
linux制作根文件系统的原理

linux制作根文件系统的原理
制作根文件系统是Linux系统中的一个重要过程,它涉及到文
件系统的组织和安装。
根文件系统是Linux系统中的根目录,包含
了操作系统运行所需的所有文件和目录。
制作根文件系统的原理涉
及到以下几个方面:
1. 文件系统类型,Linux支持多种文件系统类型,如ext4、XFS、Btrfs等。
制作根文件系统时,需要选择合适的文件系统类型,根据实际需求和性能要求进行选择。
2. 文件系统组织,根文件系统的组织结构包括了目录结构、配
置文件、库文件、可执行文件等。
在制作根文件系统时,需要将这
些文件按照一定的目录结构组织起来,确保系统能够正常运行。
3. 安装过程,制作根文件系统通常是在一个干净的环境中进行,可以通过chroot命令将当前系统切换到一个新的根目录下,然后在
这个新的根目录下进行文件的安装和配置,以确保新的根文件系统
能够正常运行。
4. 内核模块和驱动程序,根文件系统中还需要包含操作系统所
需的内核模块和驱动程序,以支持硬件设备的正常工作。
在制作根
文件系统时,需要将这些模块和驱动程序一并包含进去。
5. 引导加载程序,根文件系统的制作还需要考虑引导加载程序,以确保系统能够正确引导并加载根文件系统。
这涉及到引导加载程
序的配置和安装。
总的来说,制作根文件系统的原理涉及到文件系统类型的选择、文件系统的组织、安装过程、内核模块和驱动程序的包含以及引导
加载程序的配置等多个方面。
这些都是确保根文件系统能够正常运
行的重要因素。
linux udhcpc 参数

linux udhcpc 参数摘要:1.引言2.Linux UDHCP 简介3.UDHCP 配置文件4.UDHCP 配置参数详解a.全局参数b.接口参数c.客户端参数d.服务器参数5.UDHCP 命令行参数6.UDHCP 高级配置7.总结正文:Linux 是一款开源的操作系统,其中的网络配置工具UDHCP 用于自动分配IP 地址和其他网络参数。
本文将详细介绍UDHCP 的参数配置以及命令行使用方法。
## Linux UDHCP 简介UDHCP 是一个用于Linux 系统中的动态主机配置协议(DHCP) 客户端和服务器。
它可以自动分配IP 地址、子网掩码、网关等网络参数给连接到网络的设备。
UDHCP 通过与DHCP 服务器通信,获取并更新网络参数。
## UDHCP 配置文件UDHCP 配置文件位于`/etc/udhcp`目录下,包括`udhcpd.conf`(服务器配置文件)和`client-scopes.d`(客户端配置文件)。
## UDHCP 配置参数详解UDHCP 配置参数分为全局参数、接口参数、客户端参数和服务器参数。
### 全局参数全局参数主要设置UDHCP 服务器的基本属性。
- `server`: 设置UDHCP 服务器的主机名。
- `hostname`: 设置分配给客户端的主机名。
- `domainname`: 设置分配给客户端的域名。
- `filename`: 设置分配给客户端的配置文件路径。
### 接口参数接口参数用于配置UDHCP 服务器监听的网络接口。
- `interface`: 设置UDHCP 服务器监听的网络接口。
- `network`: 设置该接口所属的网络。
- `broadcast`: 设置该接口的广播地址。
- `start`: 设置分配给客户端的IP 地址起始地址。
- `limit`: 设置分配给客户端的最大IP 地址数量。
### 客户端参数客户端参数用于配置客户端的网络参数。
Linux根文件系统的详细制作过程

Linux根文件系统的详细制作过程利用busybox制作跟文件系统准备一个busybox包我这里用的是busybox-1.21.1.tar.bz2这个包可以在官方网站上下载,这里我就用百度网盘链接https:///s/10Fnc-UbcNWPLaiAnaXKTug 解压安装包 tar xf busybox-1.21.1.tar.bz2 .根文件系统的制作1、什么是文件系统文件的索引信息文件的具体数据操作索引信息的具体代码kernel/fs/ 操作索引信息的代码ext4fatjffs2: norflashyaffs2: nandflashnfs...为什么会有很多中类型的文件?1)对应硬件特性不同2)软件的处理策略不同断电保护的策略...linux启动时加载使用的第一个文件系统称作根文件系统根文件系统中存储的文件是有特定需求的2、准备根文件系统所需要具备的目录(文件)2.1 生成arm处理器能够使用命令工具使用开源软件busybox去生成需要的命令cd /home/tarena/portingcp /home/tarena/workdir/rootfs/busybox-1.23.2.tar.bz2 ./cd busybox-1.23.2/make menuconfigBusybox Settings --->Build Options --->[*] Build shared libbusybox //共享库Installation Options ("make install" behavior) --->What kind of applet links to install (as soft-links) ---> //软链接(./_install) BusyBox installation prefix (NEW) //安装路径vi Makefile164 CROSS_COMPILE ?= arm-cortex_a9-linux-gnueabi-190 ARCH ?= armmakemake installcd _install2.2 准备busybox可执行程序需要的库文件mkdir libcp /opt/arm-cortex_a9-eabi-4.7-eglibc-2.18/arm-cortex_a9-linux-gnueabi/sysroot/lib/libm.so.6 lib/ -a cp /opt/arm-cortex_a9-eabi-4.7-eglibc-2.18/arm-cortex_a9-linux-gnueabi/sysroot/lib/libm-2.18-2013.10.solib/ -acp /opt/arm-cortex_a9-eabi-4.7-eglibc-2.18/arm-cortex_a9-linux-gnueabi/sysroot/lib/libc.so.6 lib/ -a cp /opt/arm-cortex_a9-eabi-4.7-eglibc-2.18/arm-cortex_a9-linux-gnueabi/sysroot/lib/libc-2.18-2013.10.so lib/ -acp /opt/arm-cortex_a9-eabi-4.7-eglibc-2.18/arm-cortex_a9-linux-gnueabi/sysroot/lib/ld*.so* lib/ -a2.3 配置文件的准备mkdir etc2.3.1 vi etc/inittab::sysinit:/etc/init.d/rcS::respawn:-/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -rmkdir etc/init.d2.3.2 vi etc/init.d/rcS //系统开机自启动的程序可以放入该文件#!/bin/sh#自动挂载/etc/fstab文件中指定的分区mount -a#热插拔事件发生时执行的命令echo /sbin/mdev >/proc/sys/kernel/hotplugmdev -s手工执行:chmod +x etc/init.d/rcS2.3.3 vi etc/fstab格式要求:设备挂载点文件系统类型挂载参数是否备份格式检查device mount_point type options dump fsckproc /proc proc defaults 0 0tmpfs /tmp tmpfs defaults 0 0sysfs /sys sysfs defaults 0 0tmpfs /dev tmpfs defaults 0 02.4 创建必要的目录mkdir proc tmp sys dev var opt mnt2.5 创建必要的设备文件linux内核在启动时需要使用两个设备文件/dev/console : 控制台/dev/null:黑洞文件sudo mknod dev/console c 5 1sudo mknod dev/null c 1 3sudo chown tarena:tarena dev/consolesudo chown tarena:tarena dev/null3、通过nfs方式验证以上根文件数据的有效性服务器端:sudo vi /etc/exports/home/tarena/porting/busybox-1.23.2/_install*(rw,sync,no_root_squash)sudo /etc/init.d/nfs-kernel-server restart客户端:setenv bootargs root=/dev/nfs nfsroot=192.168.1.8:/home/tarena/porting/busybox-1.23.2/_install init=/linuxrc ip=192.168.1.6:192.168.1.8:192.168.1.1:255.255.255.0lcd=vs070cxn tp=gslx680-linux console=ttySAC0,115200 maxcpus=1saveenv------------------------------------------------------------1、使用软链接的好处所有的命令都是指向busybox可执行的软链接_install/bin 远小于 ubuntu 系统 /bin,原因在于:1)使用了软链接的方式2) _install/bin命令是对应PC版本命令的简化版2、bin/busybox可执行程序的分析arm-cortex_a9-linux-gnueabi-readelf -d bin/busybox libm.so.6libc.so.6加载器ldarm版本的库在交叉编译工具包有which arm-cortex_a9-linux-gnueabi-gcc令开一个窗口cd /opt/arm-cortex_a9-eabi-4.7-eglibc-2.18find ./ -name "libm.so.6"cp -a-a: 等价于-dR-d: 保持软链接属性3、linux自举完成后会去运行1号进程1号进程如果指定为linxurclinuxrc对应的实现代码busybox/init/init.cinit_main(...){打开,解析/etc/inittab...}inittab文件的格式<id>:<runlevel>:<action>:<process>前两项在嵌入式经常忽略-/bin/sh:-, 一个会话shell4、设备节点文件的创建mknod dev/xxx c major minorc: 字符设备文件major: 主设备号minor: 次设备号ls /dev/console -l。
补充-根文件系统的制作

Linux文件系统目录结构 Linux文件系统目录结构
/bin、/sbin目录 /bin、/sbin目录 这个目录是系统中最主要的可执行文件的 存放地,这些可执行文件大都是uClinux uClinux系统里 存放地,这些可执行文件大都是uClinux系统里 最常用的命令。 最常用的命令。
这些命令可以大致归为下面几类: 这些命令可以大致归为下面几类:
本节主要介绍/etc,/bin,/sbin和/dev目录。 本节主要介绍/etc,/bin,/sbin和/dev目录。 /etc 目录
5
Linux文件系统目录结构 Linux文件系统目录结构
/etc目录:通常保存的是启动脚本和应用程序的配置文件。 /etc目录:通常保存的是启动脚本和应用程序的配置文件。 目录 在linux中,/etc目录下常用默认文件如下表所示。 linux中 /etc目录下常用默认文件如下表所示。 目录下常用默认文件如下表所示
10
Linux文件系统目录结构 Linux文件系统目录结构
/lib目录 /lib目录 /lib目录是根文件系统上的程序所需的共享库, /lib目录是根文件系统上的程序所需的共享库,存放了根文 目录是根文件系统上的程序所需的共享库 件系统程序运行所需的共享文件。 件系统程序运行所需的共享文件。这些文件包含了可被许多 程序共享的代码, 程序共享的代码,以避免每个程序都包含有相同的子程序的 副本,故可以使得可执行文件变得更小,节省空间。 副本,故可以使得可执行文件变得更小,节省空间。 /lib/modules 目录包含系统核心可加载各种模块,尤其是那 目录包含系统核心可加载各种模块, 些在恢复损坏的系统时重新引导系统所需的模块( 些在恢复损坏的系统时重新引导系统所需的模块(例如网络和 文件系统驱动) 文件系统驱动)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于ubuntu12.06
Mini2440 256M 试验通过2013年4月8日星期一
1、获得simple.script
#解压busybox
tar jxvf busybox-1.5.0.tar.ba2
mv busybox-1.5.0 busybox
cd busybox
#添加交叉工具链
export PATH=/usr/local/arm/3.3.2/bin:$PATH
make defconfig
make menuconfig
#配置时,我们基于默认配置,再配置它为静态编译,安装时不要/usr路径,把Miscellaneous Utilities #下的“taskset”选项去掉,不然会出错。
#如下:
Busybox setting
->builds options
->[*] build busybox as a static binary
->installitation options
->[*] don’t use /usr
Miscellaneous Utilities ―>
[ ] taskset
保存退出。
#编译安装
make ARCH=arm CROSS_COMPILE=arm-linux-
CONFIG_PREFIX=/root/build_rootfs/rootfs all install
ARCH指定平台
CROSS_COMPILE指定交叉编译
CONFIG_PRRFIX指定安装的路径
或者直接修改Makefile文件
生成的udhcpc是一个链接在上面的安装目录/all/sbin 下
此时把busybox考到根文件系统的/bin下和把udhcpc拷到根文件系统的/sbin(其实原有的根文件系统里可能已经包含了udhcpc{这样该不该都行,或许吧})开机运行/sbin 下的udhcpc就可以自动获得IP。
关键点要把busybox目录下的examples/udhcp/simple.script 脚本文件做为default.script拷贝到根文件系统的/usr/share/udhcpc/default.script。
没有则自己创建。
2、根文件系统配置
由于根文件系统下没有这个目录usr/share/udhcpc/,需要在usr下创建share目录,并在share目录下创建udhcpc目录。
并在根文件系统的usr目录下执行:chmod +x /dhcp/opt/FriendllyARM/QQ2440/root_default/usr/share/dhcp/default.script,从而获得主机信任。
保证生成的根文件系统中有此目录。
3、内核定制(我做的时候没用到这步,可能你需要)
在KERNEL中需要将Packet socket和IP: DHCP support编译进内核或编译成模块。
在编译Busybox时把Networking Utilities下udhcp Server/Client中的udhcp Client (udhcpc)选上。
3.1生成根文件系统并下载(其实原有的根文件系统里已经包含了udhcpc)
(B)拷贝编译生成的所有必需文件(拷贝到开发板根文件系统的usr/local目录)
cp /usr/local/minigui/* /home/minigui/rootfs/usr/local/ -dr{默认已经配好minigui}
vi /usr/local/etc/MiniGUI.cfg
gal_engine=fbcon
defaultmode=800x600-16bpp
# IAL engine
ial_engine=pc_xvfb
mdev=/dev/input/mice
mtype=IMPS2
[fbcon]
defaultmode=1024x768-16bpp
修改为:
gal_engine=fbcon
defaultmode=240x320-16bpp
# IAL engine
ial_engine=tslib
mdev=/dev/input/event0
#/dev/input/event0为触摸屏设备节点,不同的驱动有所差异
mtype=IMPS2
[fbcon]
defaultmode=240x320-16bpp
(D)在rootfs下创建/etc/ld.so.conf,写入
/usr/local/lib
/usr/lib
/lib
(E)在虚拟机下执行ldconfig -r /home/minigui/rootfs
-r后面的目录是根文件系统所在目录
(F)修改启动脚本加上(rcS为开机脚本开机启动项加在这里)
vi /etc/init.d/rcS
/bin/ln-s/dev/vc/0/dev/tty0
否则会出现
NEWGAL>FBCON:Can't open/dev/tty0 : No such file or directory
NEWGAL:Set video mode failure.
InitGUI:Can not initialize graphics engine!
如果用的是光盘自带的rootfs_qtopia_qt4-20110304.tar.gz还需把qt杀掉
#/bin/qtopia &
#echo " " > /dev/tty1
#echo "Starting Qtopia, please waiting..." > /dev/tty1
/bin/ln -s/dev/vc/0/dev/tty0
(G)运行mkyaffs2image-128 rootfs *.img(*为文件名)
注意不同的板子需要不同版本的mkyaffs2image,这里用的是mkyaffs2image-128
如果版本不对可能出现以下问题
uncorrectable error : yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs filesystem) on device 31:3.
Freeing init memory: 156K
Warning: unable to open an initial console.
Failed to execute /linuxrc. Attempting defaults...
Kernel panic - not syncing: No init found. Try passing init= option to kernel. Backtrace:
[<c00341cc>] (dump_backtrace+0x0/0x10c) from [<c03317d0>] (dump_stack+0x18/0x1c)
4、运行udhcpc
~ # udhcpc
udhcpc (v1.5.1) started
Sending discover...
Sending select for 59.64.134.99...
Sending select for 59.64.134.99...
Sending select for 59.64.134.99...
Lease of 59.64.134.99 obtained, lease time 10800
deleting routers
route: SIOC[ADD|DEL]RT: No such process
adding dns 211.68.71.4
adding dns 211.68.71.5
adding dns 202.106.196.115
adding dns 202.106.0.20。