`
字符串
  • 浏览: 38064 次
文章分类
社区版块
存档分类
最新评论

构建基本的嵌入式Linux根文件系统

 
阅读更多

其实在去年8月份我做系统移植时就构建好了一个可以用的根文件系统,但是那时是跟着别人的《Linux全线移植文档》做的。有些东西我也不清楚,只是跟着做,做出来能用就了事了,没有深究其中的规范,以及文件系统中哪些要,哪些不要。

趁着今年过年的几天假期,我移植重新移植了U-Boot1.3.1和Linux2.6.24到S3C2410及S3C2440后,我想好好的看看有关文件系统构建方法和规范,整理整理构建根文件系统的文档。之后,我用了近一周的时间,慢慢研究《构建嵌入式Linux系统》这本书有关根文件系统的部分,以及一些网上的参考资料,不断地实验。构建好了一个精简的根文件系统,下面我只介绍构建的过程和方法,至于原理我给出以下参考资料,自己看吧。

1、 《Linux系统移植》:一个经典的Linux移植文档,共有95页的PDF文档,内容十分详细,里面有根文件系统的创建,还多地方都有下载(有的网站称之为《Linux系统全线移植文档》等等),很值得参考。在这里感谢文档的作者们。

2、 《构建嵌入式Linux系统》必看!里面对文件系统的构建讲的挺细。

3、 《Filesystem Hierarchy Standard》Linux文件系统的标准规范。我只看到英文的。

其他再遇到不懂的就google,基本上都是Linux的相关知识,都是找得到的。

(1)创建根文件系统的基本目录结构。

我把这个过程做成了shell脚本(文件名为mkroot) ,很方便!

#! /bin/sh

echo "creatint rootfs dir......"

mkdir rootfs

cd rootfs

 

echo "making dir : bin dev etc lib proc sbin sys usr"

mkdir bin dev etc lib proc sbin sys usr #必备的8个目录

mkdir usr/bin usr/lib usr/sbin lib/modules

 

# Don't use mknod ,unless you run this Script as root !

# mknod -m 600 dev/console c 5 1

# mknod -m 666 dev/null c 1 3

 

echo "making dir : mnt tmp var"

mkdir mnt tmp var

chmod 1777 tmp

mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp

mkdir var/lib var/lock var/log var/run var/tmp

chmod 1777 var/tmp

 

echo "making dir : home root boot"

mkdir home root boot

echo "done"

 

在你想要建立根文件系统的地方,运行:

[tekkamanninja@Tekkaman-Ninja nfs]$ ./mkroot

creatint rootfs dir......

making dir : bin dev etc lib proc sbin sys usr

making dir : mnt tmp var

making dir : home root boot

done

[tekkamanninja@Tekkaman-Ninja nfs]$ cd rootfs/dev/

[tekkamanninja@Tekkaman-Ninja dev]$ su

口令:

[root@Tekkaman-Ninja dev]# mknod -m 600 console c 5 1;mknod -m 666 null c 1 3;exit

exit

[tekkamanninja@Tekkaman-Ninja dev]$

(2)配置、编译和安装Busybox-1.9.1

[tekkamanninja@Tekkaman-Ninja source]$ tar -xjvf busybox-1.9.1.tar.bz2

修改Makefile文件:

[tekkamanninja@Tekkaman-Ninja busybox-1.9.1]$ pwd

/home/tekkamanninja/working/source/busybox-1.9.1

[tekkamanninja@Tekkaman-Ninja busybox-1.9.1]$ kwrite Makefile

 

 

......(第151-154行)

#SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \

#                 -e s/arm.*/arm/ -e s/sa110/arm/ \

#                 -e s/s390x/s390/ -e s/parisc64/parisc/ \

#                 -e s/ppc.*/powerpc/ -e s/mips.*/mips/ )

......(第174行附近)

#ARCH        ?= $(SUBARCH)

#CROSS_COMPILE    ?=

ARCH         = arm

CROSS_COMPILE = /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-

[tekkamanninja@Tekkaman-Ninja busybox-1.9.1]$ make menuconfig

 

在原有的基础上修改如下:

 

Busybox Settings --->

Installation Options --->

[*] Don't use /usr

(/home/tekkamanninja/working/nfs/rootfs) BusyBox installation prefix

Busybox Library Tuning  --->

[*] Support for /etc/networks

[*]   Additional editing keys

[*]   vi-style line editing commands

(15)  History size

[*]   History saving

[*]   Tab completion

[*]     Username completion

[*]   Fancy shell prompts

Login/Password Management Utilities  --->选项全部N掉,后面单独使用TinyLogin。(因为集成的好像不是很好用,我自己的经验是这样)

Linux Module Utilities  --->

[N] Support version 2.2.x to 2.4.x Linux kernels

Shells  --->

---   Ash Shell Options 下的选项全选

[tekkamanninja@Tekkaman-Ninja busybox-1.9.1]$ make

......

LINK busybox_unstripped

Trying libraries: crypt m

Library crypt is needed

Library m is needed

Final link with: crypt m

[tekkamanninja@Tekkaman-Ninja busybox-1.9.1]$ make install

我是动态编译所以查看一下需要的动态库

[tekkamanninja@Tekkaman-Ninja busybox-1.9.1]$ /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-readelf -d busybox

 

Dynamic section at offset 0xac014 contains 22 entries:

Tag Type Name/Value

0x00000001 (NEEDED) Shared library: [libcrypt.so.1]

0x00000001 (NEEDED) Shared library: [libm.so.6]

0x00000001 (NEEDED) Shared library: [libc.so.6]

0x0000000c (INIT) 0xc0f0

0x0000000d (FINI) 0x97608

0x00000004 (HASH) 0x80e8

0x00000005 (STRTAB) 0xa3c0

0x00000006 (SYMTAB) 0x8b30

0x0000000a (STRSZ) 3371 (bytes)

0x0000000b (SYMENT) 16 (bytes)

0x00000015 (DEBUG) 0x0

0x00000003 (PLTGOT) 0xbc0ec

0x00000002 (PLTRELSZ) 2976 (bytes)

0x00000014 (PLTREL) REL

0x00000017 (JMPREL) 0xb550

0x00000011 (REL) 0xb4e0

0x00000012 (RELSZ) 112 (bytes)

0x00000013 (RELENT) 8 (bytes)

0x6ffffffe (VERNEED) 0xb400

0x6fffffff (VERNEEDNUM) 3

0x6ffffff0 (VERSYM) 0xb0ec

0x00000000 (NULL) 0x0

(3)修改和创建必要的文件。

 

[tekkamanninja@Tekkaman-Ninja busybox-1.9.1]$ cp -a examples/bootfloppy/etc/* /home/tekkamanninja/working/nfs/rootfs/etc/

[tekkamanninja@Tekkaman-Ninja busybox-1.9.1]$ cd ../../nfs/rootfs/etc/

1、增加为SHELL导入全局变量的文件/etc/profile

[tekkamanninja@Tekkaman-Ninja etc]$ kwrite profile

 

# /etc/profile: system-wide .profile file for the Bourne shells

echo

echo "Processing /etc/profile... "

# no-op

 

# Set search library path

echo "Set search library path in /etc/profile"

export LD_LIBRARY_PATH=/lib:/usr/lib

 

# Set user path

echo "Set user path in /etc/profile"

PATH=/bin:/sbin:/usr/bin:/usr/sbin

export PATH

 

# Set PS1

#注意:ash 除了SHELL变量外,支持\u、\h、\W、\$、\!、\n、\w 、\nnn(ASCII字符对应的八进制数)

#以及\e[xx;xxm (彩色特效)等等!

#而且前面还要多加一个 '\'!

echo "Set PS1 in /etc/profile"

export PS1="\\e[05;32m[$USER@\\w\\a]\\$\\e[00;34m"

 

echo "Done"

echo

 

2、增加初始化文件

[tekkamanninja@Tekkaman-Ninja etc]$ kwrite inittab

::sysinit:/etc/init.d/rcS

::respawn:-/bin/login

::restart:/sbin/init

 

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

::shutdown:/sbin/swapoff -a

 

[tekkamanninja@Tekkaman-Ninja etc]$ kwrite fstab

proc /proc proc defaults 0 0

none /tmp ramfs defaults 0 0

mdev /dev ramfs defaults 0 0

sysfs /sys sysfs defaults 0 0

 

3、增加初始化脚本

[tekkamanninja@Tekkaman-Ninja etc]$ kwrite init.d/rcS

#! /bin/sh

echo "----------mount all"

/bin/mount -a

 

echo "----------Starting mdev......"

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

mdev -s

 

echo "*********************************************************"

echo " Tekkaman Ninja 2440 Rootfs(nfs) 2008.2 "

echo " Love Linux ! ! @@ Love Ke Ke ! ! "

echo "********************************************************"

 

4、删除备份文件

[tekkamanninja@Tekkaman-Ninja etc]$ rm *~ init.d/*~

 

5、为mdev创建配置文件

[tekkamanninja@Tekkaman-Ninja etc]$ vi mdev.conf

创建一个mdev.conf文件,内容可有可无。

(4)为使用用户登录功能移植TinyLogin

1、下载

从http://tinylogin.busybox.net/ 下载tinylogin-snapshot.tar.bz2,并解压.

[tekkamanninja@Tekkaman-Ninja source]$ tar -xjvf tinylogin-snapshot.tar.bz2

 

2、修改tinyLogin的Makefile

[tekkamanninja@Tekkaman-Ninja source]$ cd tinylogin

[tekkamanninja@Tekkaman-Ninja tinylogin]$ kwrite Makefile

 

指明tinyLogin使用自己的算法来处理用户密码

USE_SYSTEM_PWD_GRP = false

......

CROSS =/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-

CC = $(CROSS)gcc

AR = $(CROSS)ar

STRIPTOOL = $(CROSS)strip

3、 编译并安装

[tekkamanninja@Tekkaman-Ninja tinylogin]$ make PREFIX=/home/tekkamanninja/working/nfs/rootfs install

Aborting install -- You must be root, otherwise I can't.

make tinylogin be setuid root, which will cause it to fail.

make: *** [install] 错误 1

[tekkamanninja@Tekkaman-Ninja tinylogin]$su

口令:

[root@Tekkaman-Ninja tinylogin]# make PREFIX=/home/tekkamanninja/working/nfs/rootfs install

[root@Tekkaman-Ninja tinylogin]# exit

exit

我是动态编译所以查看一下需要的动态库

[tekkamanninja@Tekkaman-Ninja tinylogin]$ /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-readelf -d tinylogin

 

Dynamic section at offset 0x9670 contains 21 entries:

Tag Type Name/Value

0x00000001 (NEEDED) Shared library: [libcrypt.so.1]

0x00000001 (NEEDED) Shared library: [libc.so.6]

0x0000000c (INIT) 0x9c40

0x0000000d (FINI) 0x10160

0x00000004 (HASH) 0x8128

0x00000005 (STRTAB) 0x9070

0x00000006 (SYMTAB) 0x85e0

0x0000000a (STRSZ) 1430 (bytes)

0x0000000b (SYMENT) 16 (bytes)

0x00000015 (DEBUG) 0x0

0x00000003 (PLTGOT) 0x19740

0x00000002 (PLTRELSZ) 1064 (bytes)

0x00000014 (PLTREL) REL

0x00000017 (JMPREL) 0x9818

0x00000011 (REL) 0x97c8

0x00000012 (RELSZ) 80 (bytes)

0x00000013 (RELENT) 8 (bytes)

0x6ffffffe (VERNEED) 0x9758

0x6fffffff (VERNEEDNUM) 2

0x6ffffff0 (VERSYM) 0x9606

0x00000000 (NULL) 0x0

 

 

创建创建帐号及密码文件:

[tekkamanninja@Tekkaman-Ninja tinylogin]$ cd ../../nfs/rootfs/etc/

[tekkamanninja@Tekkaman-Ninja etc]$ su

口令:

[root@Tekkaman-Ninja etc]# cp /etc/passwd . ;cp /etc/shadow . ;cp /etc/group .

[root@Tekkaman-Ninja etc]# kwrite passwd

root:x:0:0:root:/root:/bin/sh

[root@Tekkaman-Ninja etc]# kwrite group

root:x:0:root

[root@Tekkaman-Ninja etc]# kwrite shadow

root:$1$N8K8eEQe$.XkJo3xcsjOE6vo1jW9Nk/:13923:0:99999:7:::

 

[root@Tekkaman-Ninja etc]# rm *~

rm:是否删除 普通文件 “group~”? y

rm:是否删除 普通文件 “passwd~”? y

rm:是否删除 普通文件 “shadow~”? y

[root@Tekkaman-Ninja etc]# exit

exit

[tekkamanninja@Tekkaman-Ninja etc]$

这 3个文件是从Host中拷贝过来的,只留下root帐号。

那么现在 root的登陆密码和Host的登陆口令一致了,可以登录后再修改以及创建新用户。( 若使用以上文件,则root密码为tekkaman)

 

 

拷贝必需的动态库文件

[tekkamanninja@Tekkaman-Ninja lib]$ cp -d /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/ld* .

cp: 略过目录 “/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/ldscripts”

[tekkamanninja@Tekkaman-Ninja lib]$ cp /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libc-2.3.2.so .;cp -d /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libc.so.6 .

[tekkamanninja@Tekkaman-Ninja lib]$ cp /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libm-* . ;cp -d /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libm.s* .

[tekkamanninja@Tekkaman-Ninja lib]$ cp /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libcrypt-* . ;cp -d /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libcrypt.s* .

 

 

以上是最基本的文件。

一个最基本根文件系统构建完成!未压缩的文件系统总大小不到3M。

以下是启动信息:

U-Boot 1.3.1 (Feb 18 2008 - 16:04:40)

 

DRAM: 64 MB

Flash: 1 MB

NAND: NAND flash probing at 0x4E000000

64 MB

In: serial

Out: serial

Err: serial

Hit any key to stop autoboot: 0

dm9000 i/o: 0x20000300, id: 0x90000a46

MAC: 08:08:08:08:12:27

operating at 100M full duplex mode

File transfer via NFS from server 192.168.1.22; our IP address is 192.168.1.2

Filename '/home/tekkamanninja/working/nfs/zImage.img'.

Load address: 0x30008000

Loading: #################################################################

#################################################################

#################################################################

#################################################################

#######################################################

done

Bytes transferred = 1611092 (189554 hex)

## Booting image at 30008000 ...

Image Name: tekkamanninja

Created: 2008-02-19 0:48:31 UTC

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 1611028 Bytes = 1.5 MB

Load Address: 30008000

Entry Point: 30008040

Verifying Checksum ... OK

XIP Kernel Image ... OK

 

Starting kernel ...

 

Uncompressing Linux........................................................................................................ done, booting the kernel.

Linux version 2.6.24 (tekkamanninja@Tekkaman-Ninja) (gcc version 4.1.1) #4 Tue Feb 19 08:48:15 CST 2008

CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177

Machine: Tekkaman2440

Memory policy: ECC disabled, Data cache writeback

CPU S3C2440A (id 0x32440001)

S3C244X: core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHz

S3C24XX Clocks, (c) 2004 Simtec Electronics

CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on

CPU0: D VIVT write-back cache

CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256

Kernel command line: noinitrd root=/dev/nfs rw nfsroot=192.168.1.22:/home/tekkamanninja/working/nfs/rootfs ip=192.168.1.2:192.168.1.22::255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=64M

irq: clearing pending ext status 00000200

irq: clearing subpending status 00000002

PID hash table entries: 256 (order: 8, 1024 bytes)

timer tcon=00500000, tcnt a4ca, tcfg 00000200,00000000, usec 00001e57

Console: colour dummy device 80x30

console [ttySAC0] enabled

Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)

Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)

Memory: 64MB = 64MB total

Memory: 61440KB available (2980K code, 309K data, 120K init)

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

net_namespace: 64 bytes

NET: Registered protocol family 16

S3C2410 Power Management, (c) 2004 Simtec Electronics

S3C2440: Initialising architecture

S3C2440: IRQ Support

S3C2440: Clock Support, DVS off

S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics

DMA channel 0 at c4800000, irq 33

DMA channel 1 at c4800040, irq 34

DMA channel 2 at c4800080, irq 35

DMA channel 3 at c48000c0, irq 36

usbcore: registered new interface driver usbfs

usbcore: registered new interface driver hub

usbcore: registered new device driver usb

NET: Registered protocol family 2

IP route cache hash table entries: 1024 (order: 0, 4096 bytes)

TCP established hash table entries: 2048 (order: 2, 16384 bytes)

TCP bind hash table entries: 2048 (order: 1, 8192 bytes)

TCP: Hash tables configured (established 2048 bind 2048)

TCP reno registered

NetWinder Floating Point Emulator V0.97 (double precision)

JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.

fuse init (API version 7.9)

yaffs Feb 15 2008 10:10:34 Installing.

io scheduler noop registered

io scheduler anticipatory registered (default)

io scheduler deadline registered

io scheduler cfq registered

Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled

s3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440

s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440

s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440

RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize

loop: module loaded

usbcore: registered new interface driver ub

dm9000 Ethernet Driver

eth0: dm9000 at f6100300,f6100304 IRQ 51 MAC: 08:08:08:08:12:27

Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx

S3C24XX NAND Driver, (c) 2004 Simtec Electronics

s3c2440-nand s3c2440-nand: Tacls=1, 9ns Twrph0=4 39ns, Twrph1=1 9ns

NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)

Scanning device for bad blocks

Bad eraseblock 3579 at 0x037ec000

Creating 7 MTD partitions on "NAND 64MiB 3,3V 8-bit":

0x00000000-0x00030000 : "U-Boot-1.3.1"

0x00030000-0x00040000 : "U-Boot-1.3.1 Parameter"

0x00040000-0x00500000 : "Linux2.6.24 Kernel(JFFS2)"

0x00500000-0x00a00000 : "Root(cramfs)"

0x00a00000-0x00f00000 : "Root(JFFS2)"

0x00f00000-0x01400000 : "Root(YAFFS)"

0x01400000-0x04000000 : "DATA"

s3c2410-ohci s3c2410-ohci: S3C24XX OHCI

s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1

s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000

usb usb1: configuration #1 chosen from 1 choice

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 2 ports detected

usb usb1: Product: S3C24XX OHCI

usb usb1: Manufacturer: Linux 2.6.24 ohci_hcd

usb usb1: SerialNumber: s3c24xx

usbcore: registered new interface driver libusual

mice: PS/2 mouse device common for all mice

S3C24XX RTC, (c) 2004,2006 Simtec Electronics

s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling

s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0

s3c2440-i2c s3c2440-i2c: slave address 0x10

s3c2440-i2c s3c2440-i2c: bus frequency set to 98 KHz

s3c2440-i2c s3c2440-i2c: i2c-0: S3C I2C adapter

S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics

s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled

TCP cubic registered

NET: Registered protocol family 1

RPC: Registered udp transport module.

RPC: Registered tcp transport module.

s3c2410-rtc s3c2410-rtc: setting system clock to 2008-02-20 16:01:20 UTC (1203523280)

eth0: link down

IP-Config: Complete:

device=eth0, addr=192.168.1.2, mask=255.255.255.0, gw=255.255.255.255,

host=192.168.1.2, domain=, nis-domain=(none),

bootserver=192.168.1.22, rootserver=192.168.1.22, rootpath=

Looking up port of RPC 100003/2 on 192.168.1.22

eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

Looking up port of RPC 100005/1 on 192.168.1.22

VFS: Mounted root (nfs filesystem).

Freeing init memory: 120K

init started: BusyBox v1.9.1 (2008-02-20 14:54:41 CST)

starting pid 781, tty '': '/etc/init.d/rcS'

----------mount all

----------Starting mdev......

*********************************************************

Tekkaman Ninja 2440 Rootfs(nfs) 2008.2

Love Linux ! ! @@ Love Ke Ke ! !

********************************************************

starting pid 785, tty '': '/bin/login'

 

192.168.1.2 login: root

Password:

login[785]: root login on `console

 

Processing /etc/profile...

Set search library path in /etc/profile

Set user path in /etc/profile

Set PS1 in /etc/profile

Done

 

[root@/root]#

 

 

以上我使用nfs挂载的,后面我会介绍如何挂载jffs2、cramfs以及yaffs文件系统,有了这个基本的文件系统以后,其他就好办了!以下是这个文件系统,编译器是gcc4.1.2(制作编译器所用内核为2.6.24)。

分享到:
评论

相关推荐

    构建基本嵌入式Linux根文件系统详细步骤

    构建一个基本的嵌入式Linux根文件系统需要一系列的步骤,这些步骤通常包括选择文件系统类型、配置工具链、安装基础软件包以及定制系统服务。下面将详细介绍这些步骤。 首先,我们需要选择合适的文件系统类型。常见...

    嵌入式Linux根文件系统

    构建嵌入式Linux根文件系统通常包括以下几个步骤: 1. 选择文件系统类型:根据设备的特性,可以选择不同的文件系统类型,如ext2、ext3、ext4或ubIFS。ubIFS因其对嵌入式设备的优化而备受青睐。 2. 创建文件系统...

    构建基本的嵌入式Linux根文件系统.docx

    * 《构建嵌入式 Linux 系统》:一本关于嵌入式 Linux 系统的详细指南 * 《Filesystem Hierarchy Standard》:Linux 文件系统的标准规范 构建基本的嵌入式 Linux 根文件系统需要了解 Linux 文件系统的标准规范、...

    构建嵌入式Linux的根文件系统

    构建嵌入式Linux的根文件系统构建嵌入式Linux的根文件系统

    基于S3C2440的嵌入式Linux根文件系统构建.pdf

    Busybox是一个构建嵌入式Linux根文件系统的软件,用它制作根文件系统简单、方便、灵活。 根文件系统的主要功能是控制对数据文件及设备的存取,提供对文件和目录的分层组织形式,数据缓存以及对文件存取权限的控制。...

    嵌入式linux根文件系统制作(经典)

    本文将详细介绍如何为嵌入式Linux系统构建一个完整的根文件系统,包括从准备阶段到最终生成文件系统的过程。 #### 二、准备工作与环境搭建 **1. 准备工作** 为了制作根文件系统,首先需要准备一些必要的工具和...

    基于POKY的嵌入式Linux根文件系统的构建.pdf

    * POKY可以用于构建嵌入式Linux根文件系统,提供了快速、稳定的开发环境。 * POKY可以减少开发周期,提高开发效率。 知识点五:Linux根文件系统 * 根文件系统是Linux操作系统的起点和支撑,选择一个好的根文件系统...

    嵌入式Linux根文件系统的构建.pdf

    在构建嵌入式Linux根文件系统时,可以不完全遵循标准目录结构,特别是对于没有多用户需求或扩展性的系统,如不需要`mnt`和`home`目录。 **Busybox**是构建嵌入式根文件系统的关键工具,它是一个小型的、集成化了...

    构建嵌入式Linux的根文件系统.pdf

    【构建嵌入式Linux的根文件系统】 根文件系统是嵌入式Linux系统的核心组成部分,它包含了操作系统启动后运行的基本程序和服务。这篇文章主要探讨如何利用busybox来构建一个高效的、可定制的根文件系统。 Busybox是...

    最新最新构建基本的嵌入式Linux根文件系统.docx

    构建嵌入式Linux根文件系统是一项至关重要的工作,它涉及到系统启动、应用程序执行等多个方面。本文将详细介绍构建过程及其背后的一些原理。 #### 二、准备工作 1. **理解文件系统的基本结构**: - **根目录(/)...

    一种构建嵌入式Linux根文件系统的方法.pdf

    【嵌入式Linux根文件系统】是构建嵌入式Linux系统的核心组成部分,它包含了系统启动后所需的最基本的程序、配置文件和服务。根文件系统通常包含了如/bin、/etc、/lib等基本目录,这些目录下的文件和程序使得操作系统...

    嵌入式 Linux 根文件系统的实现

    本文深入探讨了嵌入式Linux根文件系统(Root File System, RootFS)的设计与实现原理,重点介绍了选择根文件系统的方法以及如何构建适用于嵌入式系统的根文件系统。文章通过详细介绍Linux根文件系统的构成要素、不同...

    嵌入式Linux根文件系统的制作.doc

    嵌入式Linux根文件系统的构建是一项复杂而精细的工作,它涉及到内核的配置、编译以及根文件系统的搭建等多个步骤。下面将详细解析这一过程,帮助理解如何从零开始构建一个嵌入式Linux根文件系统。 ### 准备内核与...

    嵌入式Linux根文件系统NFS启动方式构建.pdf

    嵌入式Linux根文件系统NFS启动方式构建是指在嵌入式Linux系统中使用NFS(Network File System)协议来实现根文件系统的启动方式。这种方法可以提高开发效率,减少开发过程中的频繁下载问题。 在嵌入式Linux系统中,...

    用Busybox 制作嵌入式Linux 根文件系统

    "Busybox 构建嵌入式 Linux 根文件系统" Busybox 是一种轻便、灵活、可配置的嵌入式 Linux 根文件系统构建工具,广泛应用于嵌入式系统开发中。 Busybox 的主要特点是小巧、灵活、可配置、可裁剪,非常适合资源受限...

    Linux嵌入式系统根文件系统的选择与制作.pdf

    根文件系统是Linux内核启动过程中至关重要的一部分,它包含了操作系统运行所需的最基本文件和目录,如执行程序、库、配置文件等。根文件系统的选择和制作直接影响到嵌入式系统的性能、大小和功能。 1. **根文件系统...

    嵌入式Linux根文件系统构建步骤

    构建嵌入式Linux根文件系统并非一蹴而就,它涉及到对Linux内核启动机制的深刻理解,以及对嵌入式系统环境配置的细致把握。BusyBox工具的正确安装和配置,是实现一个功能完备且高效的嵌入式Linux根文件系统的关键。...

Global site tag (gtag.js) - Google Analytics