COMPUTER SYSTEM LABORATORY Lab6 - Root Filesystem.
-
Upload
lynn-madlyn-wade -
Category
Documents
-
view
221 -
download
1
Transcript of COMPUTER SYSTEM LABORATORY Lab6 - Root Filesystem.
COMPUTER SYSTEM
LABORATORYLab6 - Root Filesystem
/ 222Lab 6
Experimental Goal
•Learn how to build your own root filesystem for PXA270.
2013/10/22
/ 223Lab 6
Environment
• Host System• Windows XP
• Build System• VirtualBox + Ubuntu 8.04
• Target System• Creator XScale PXA270
• Software• BusyBox
• Compiled toolchain
• mkfs.jffs2 & genext2fs utility
• You can download all software from RSWiki CSL Course Software2013/10/22
/ 224Lab 6
Introduction to Root Filesystem
•A file system is a method of storing and organizing computer files and their data.
•A root filesystem is the file system that is contained on the same partition on which the root directory, i.e., / in Linux, is located.
•The exact contents of the root filesystem will vary according to the computer, but they will include the files that are necessary for booting the system.
2013/10/22
reference: linfo: root filesystem, http://www.linfo.org/root_filesystem.html
/ 225Lab 6
Memory Layout of PXA270
•32MB Flash ROM• Addressing from 0x00000000
•64MB SDRAM• Addressing from 0xa0000000
2013/10/22
/ 226Lab 6
Basic Root Filesystem Structure
•Root filesystem follows FHS (Filesystem Hierarchy Standard).• FHS has the guideline of your filesystem.
2013/10/22
/ 227Lab 6
Types of Filesystems
•Some well-known filesystems• Windows : FAT, NTFS
• Mac OS X : HFS Plus, UFS
• Linux : ext*, XFS, JFS, ReiserFS
•We will use JFFS2 & ext2 in this lab.• JFFS2 (Journaling Flash File System Version 2)
• A journaling file system.
• Writable, compressed, power-down-reliable file system.
• ext2 (The second extended filesystem)
• A non-journaling file system.
• Writable.
2013/10/22
/ 228Lab 6
Create Root Filesystem Skeleton
•Step1: create a folder for placing root filesystem content.• % mkdir $HOME/<root filesystem folder’s name>
•Step2: create the essential directories.• % cd <the path in step1>
• % mkdir etc lib var proc mnt dev tmp
2013/10/22
/ 229Lab 6
Compiled Toolchain Installation
•To compile BusyBox, we need to install another cross-compiler.
•Step1: download cross-compiler (cross-2.95.3.tar.bz2).
•Step2: extract the compiler. • % tar jxvf cross-2.95.3.tar.bz2
•Step3: move files to specified location.• % sudo mkdir –p /usr/local/arm
• % sudo mv 2.95.3 /usr/local/arm
•Step4: append installation directory (bin) to PATH.
•Test new cross-compiler.• % arm-linux-gcc -v
2013/10/22
/ 2210Lab 6
Build BusyBox (1/3)
•BusyBox contains a collection of stripped-down Unix utilities into a single executable.
•Why BusyBox?• You don’t have to configure and build the sources of each utility.
•Step1: download BusyBox (busybox-1.00.tar.gz).
•Step2: extract the source codes.
•Step3: copy header from kernel source codes of Lab5.• % cd busybox-1.00
• % cp –R <creator mt-linux path>/pxa270/linux/include/linux include
2013/10/22
/ 2211Lab 6
Build BusyBox (2/3)
•Step3: download Linux verison.h.• % wget http://eraser.csie.ntu.edu.tw/courses/csl/10201/lab6/software/version.h
• % cp version.h include/linux
•Step4: configure BusyBox.• % make menuconfig
• Build Options
• Networking Utilities
2013/10/22
/ 2212Lab 6
Build BusyBox (3/3)
•Step5: compile BusyBox.• % make -j4
•Step6: install BusyBox.• % make -j4 install
•Step7: move files to your root filesystem folder (slide8).• % mv _install/* <root filesystem folder’s path>
2013/10/22
/ 2213Lab 6
Create Essential Device Files (1/3)
•Device files allow user programs to access hardware devices on the system through the kernel.
•The kernel just relies on device file’s type and major number to find which driver manages this device.
2013/10/22
/ 2214Lab 6
Create Essential Device Files (2/3)
•The official information for device major and minor numbers can be found in Documentation/devices.txt under the kernel source codes.
•We can use mknod command to create device files in Linux, e.g., if we want to create a character ttyS0 device with major number 4 and minor number 64:• % mknod ttyS0 c 4 64
2013/10/22
/ 2215Lab 6
Create Essential Device Files (3/3)
•For the convenience, we use a script to create related device files for our root filesystem:• % wget http://eraser.csie.ntu.edu.tw/courses/csl/10201/lab6/software/mknod.sh
• % cp mknod.sh <root filesystem folder’s path>/dev
• % cd <root filesystem folder’s path>/dev
• % sudo sh mknod.sh
• % rm mknod.sh
2013/10/22
/ 2216Lab 6
Add Initialization Scripts (1/2)
• Step1: add configuration file used by first user-space program (i.e. /sbin/init).• % wget http://eraser.csie.ntu.edu.tw/courses/csl/10201/lab6/software/inittab
• % cp inittab <root filesystem folder’s path>/etc
• inittab describes which processes are started during bootup.• The entry syntax of inittab.
• id : runlevels : action : process
::sysinit:/etc/rcS
::askfirst:/bin/sh
• sysinit : execute the process during system boot
• askfirst : prompt “Please press Enter to activate this console.” before execution
• Some other actions: respawn, ctrlaltdel
2013/10/22
/ 2217Lab 6
Add Initialization Scripts (2/2)
•Step2: add system initialization script (rcS).• % wget http://eraser.csie.ntu.edu.tw/courses/csl/10201/lab6/software/rcS
• % cp rcS <root filesystem folder’s path>/etc
•Step3: change permission.• % cd <root filesystem folder’s path>/etc
• % chmod 777 inittab rcS
•Please refer to the website below for more information.• http://linux.vbird.org/linux_basic/0510osloader.php#startup_init
2013/10/22
/ 2218Lab 6
Create Root Filesystem Image (1/2)
•Step1: make a JFFS2 file system image. (Download mkfs.jffs2)• % chmod +x mkfs.jffs2
• % ./mkfs.jffs2 -v -e 0x20000 --pad=0xf00000 -r <root filesystem folder’s path> -o rootfs.jffs2
• You can see the mkfs.jffs2 usage by executing without arguments.
•Step1: or a ext2 file system image. (Optional)• Install genext2fs package in Ubuntu 8.04.
• % genext2fs -b 15360 -d <root filesystem folder’s path> -e 0 rootfs.ext2
• Please refer to the website below for the genext2fs usage.
• http://csurs.csr.uky.edu/cgi-bin/man/man2html?genext2fs
2013/10/22
/ 2219Lab 6
Create Root Filesystem Image (2/2)
•Step2: now, you can copy rootfs.* image to PXA270.• If you choose ext2 format for your root filesystem, you need to change
rootfstype in bootargs environment variable in U-Boot.• u-boot$ setenv bootargs root=/dev/mtdblock3 rw rootfstype=ext2 console=ttyS0,9600n8 mem=64M ip=...
• u-boot$ saveenv
2013/10/22
/ 2220Lab 6
Change Filesystem Image Size (1/2)
•Recall Lab5, if we want to change the size of filesytem, we need to modify creator_pxa270_partitions[] in Linux kernel.
•Also, the corresponding arguments are required to be set in mkfs.jffs2 and genext2fs commands, e.g. a 15M root filesystem.• % ./mkfs.jffs2 -v -e 0x20000 --pad=0xf00000 -r <root filesystem
folder’s path> -o rootfs.jffs2
• % genext2fs -b 15360 -d <root filesystem folder’s path> -e 0 rootfs.ext2
2013/10/22
/ 2221Lab 6
Change Filesystem Image Size (2/2)
•Now, please refer to previous slides to increase the size of your root filesystem to 20M and add tftp client utility.• Please calculate new erased end address for root filesystem.
• It will take about 8 minutes to copy new 20M root filesystem.
• You can use “df -h” command to check the size.
• You can add tftp client utility to BusyBox.
2013/10/22
/ 2222Lab 6
Lab Requirement & Bonus
•Show that you can use tftp on your Linux kernel which has a 20M filesystem.
•Bonus:Answer the question of lab6 on RSWiki CSL course website.Write it in your report.
•Please send your report to both TAs.• [email protected], [email protected]
• Please use this title format: [CSL] G# Lab# Ver#
• E.g., [CSL] G13 Lab6 Ver12013/10/22