Embedded 版 (精华区)

发信人: he (无情的雨), 信区: Embedded_system
标  题: linux for ppc chapter 13 
发信站: 哈工大紫丁香 (2001年06月04日11:06:36 星期一), 站内信件

----------------------------------------------------------------------------
----
13. Root Filesystem
You need a root filesystem for the to kernel mount at startup. There are man
y options, and the best one will generally depend on whether your system nee
ds to be able to store persistent data (which must survive power cycling) in
 the field.
See: http://lists.linuxppc.org/listarcs/linuxppc-embedded/200003/msg00067.ht
ml.
Your best bet is likely to be the root filesystem from Hard Hat Linux. Extra
ct all the RPMs matching *.noarch.rpm, and use the image in opt/hardhat/devk
it/ppc/8xx/target as the root filesystem.
13.1 NFS Mounted
During development, the embedded system can NFS-mount its root filesystem fr
om your file sever to provide a complete diskless Linux system. The file ser
ver need not be the same architecture as the embedded client. Answer "Y" to
the kernel configuration questions regarding NFS client and root filesystem
via NFS, and "make zImage". The embedded system will attempt to mount its ro
ot filesystem from the server as "/tftpboot/<ipaddress>", where <ipaddress>
is it's IP address. Install your root filesystem image in this directory as
root on the server, and export the directory tree with an entry in /etc/expo
rts on the server, like:
    /tftpboot   (rw,no_root_squash)
If your system has a hard disk, you can start by using NFS then build a root
 file system on the disk and boot from that.
If your system has no ethernet, you may want to start developing on a board
that does.
13.2 Initial Ramdisk: initrd
To make a diskless system standalone, you need an initial ramdisk image cont
aining an ext2 filesystem to put in arch/ppc/mbxboot/ramdisk.image.gz. Then,
 build with "make zImage.initrd" and the ramdisk image will be mounted as th
e root filesystem at startup. See Documentation/initrd.txt in the kernel sou
rce tree.
You need to select both CONFIG_BLK_DEV_RAM and CONFIG_BLK_DEV_INITRD to buil
d zImage.initrd. You also need a file in arch/ppc/mbxboot called ramdisk.ima
ge.gz. When you build zImage.initrd, the secondary boot loader is re-compile
d with INITRD_OFFSET and INITRD_SIZE set, which are used to locate the start
 and end of the ramdisk.image.gz file in memory. The start and end are passe
d to the kernel in registers (r4/r5??), which it saves into the variables in
itrd_start and initrd_end. The secondary boot loader also changes the kernel
itrd_start and initrd_end. The secondary boot loader also changes the kernel
 command line arguments so that root=/dev/ram instead of root=/dev/nfs. The
kernel does various things if initrd_start is non-zero, but the main one is
to decompress the ramdisk.image.gz data into ramdisk 0, and because root=/de
v/ram, this is then mounted as the root filesystem.
If your ramdisk is larger than 4 MB, you will need to add ramdisk=xxxx to th
e kernel command line at boot time, or modify drivers/block/rd.c.
Beware that the CPU6 workarounds in the MontaVista 2.2.x kernel clobber the
kernel command line, and cause the initial ramdisk mount to fail. See the th
read at: http://lists.linuxppc.org/listarcs/linuxppc-embedded/200004/msg0010
3.html
There are a number of ways to create your inital ramdisk image, described be
low. For more info on building a root filesystem, see the Bootdisk HOWTO at:
 http://www.linux.org/docs/ldp/howto/Bootdisk-HOWTO/buildroot.html
Examples
An example ramdisk.image.gz is already included in the Hard Hat kit.
A simple ramdisk for use with ppcboot is available at the Denx ftp site.
Using a ramdisk
You can also create your own on your development machine in a filesystem on
/dev/ram. If your ramdisk is larger than 4 MB, you will need to increase the
 default ramdisk size on your development machine accordingly.
LILO users can do this by adding the following line to the first section of
/etc/lilo.conf:
/etc/lilo.conf:
ramdisk=65536
There is no real harm in asking for an excessive size, as /dev/ram* only all
ocates pages it actually needs to the ramdisk. However, you should use the "
blocks-count" parameter to limit the filesystem size when you run mke2fs to
prevent it creating unnecessarily large filesystem structures.
Using the loop device
Another approach is to use the loop device on your Linux development host to
 mount the ramdisk image as a local filesystem, and then copy the files you
require into it. To allow users to mount the ramdisk.image on /mnt/loop with
 "mount /mnt/loop", add this entry to your /etc/fstab:
/path/to/ramdisk.image  /mnt/loop       auto    user,noauto,rw,loop     0 0
Note that the minix file system code in Linux is not endian-independant, so
you can't build a minix file system image on an x86 machine and expect to re
ad it on a PowerPC machine. ext2 does not suffer from this problem.
For more info, see the Loopback-Root-FS HOWTO at: http://linuxdoc.org/HOWTO/
mini/Loopback-Root-FS-HOWTO.html
13.3 ROMFS Flash Filesystem
Search for ROMFS.
13.4 cramfs
The 2.4 kernel series has a compressed read-only filesystem (cramfs) aimed a
t embedded systems, which can be back-ported to 2.2 kernels. If you're cross
- developing, you need to modify
mkcramfs
to swap between little and big endian.
13.5 ramfs
ramfs from the 2.4 kernel is a simple filesystem ideal for use in a ramdisk.
 It can be used in combination with a cramfs read-only root filesystem, to m
ount writable filesystems on
/tmp
and
/var
, which typically need to be writable. This combination is ideal for systems
 which don't require persistent storage.
13.6 Journaling Flash FileSystem
http://www.developer.axis.com/software/jffs/
JFFS allows persistent storage, optimised for flash memories rather than blo
ck devices like hard disks. It is aimed at providing a crash/powerdown-safe
filesystem for disk-less embedded devices and is a better option than the cr
amfs/ramfs combination if your application requires persistent storage. You
use it with the Memory Technology Device subsystem.
----------------------------------------------------------------------------
---- 
--

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.250]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.299毫秒