Presentation is loading. Please wait.

Presentation is loading. Please wait.

COMPUTER SYSTEM LABORATORY Lab6 - Root Filesystem.

Similar presentations


Presentation on theme: "COMPUTER SYSTEM LABORATORY Lab6 - Root Filesystem."— Presentation transcript:

1 COMPUTER SYSTEM LABORATORY Lab6 - Root Filesystem

2 Lab 6 Experimental Goal Learn how to build your own root filesystem for PXA270. 2013/10/22/ 222

3 Lab 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 SoftwareRSWiki CSL Course Software 2013/10/22/ 223

4 Lab 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/ 224 reference: linfo: root filesystem, http://www.linfo.org/root_filesystem.htmlhttp://www.linfo.org/root_filesystem.html

5 Lab 6 Memory Layout of PXA270 32MB Flash ROM Addressing from 0x00000000 64MB SDRAM Addressing from 0xa0000000 2013/10/22/ 225

6 Lab 6 Basic Root Filesystem Structure Root filesystem follows FHS (Filesystem Hierarchy Standard). FHS has the guideline of your filesystem. 2013/10/22/ 226

7 Lab 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/ 227

8 Lab 6 Create Root Filesystem Skeleton Step1: create a folder for placing root filesystem content. % mkdir $HOME/ Step2: create the essential directories. % cd % mkdir etc lib var proc mnt dev tmp 2013/10/22/ 228

9 Lab 6 Compiled Toolchain Installation To compile BusyBox, we need to install another cross-compiler. Step1: download cross-compiler (cross-2.95.3.tar.bz2).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/ 229

10 Lab 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).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 /pxa270/linux/include/linux include 2013/10/22/ 2210

11 Lab 6 Build BusyBox (2/3) Step3: download Linux verison.h. % wget http://eraser.csie.ntu.edu.tw/courses/csl/10201/lab6/software/versi on.h % cp version.h include/linux Step4: configure BusyBox. % make menuconfig Build Options  Networking Utilities  2013/10/22/ 2211

12 Lab 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).slide8 % mv _install/* 2013/10/22/ 2212

13 Lab 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/ 2213

14 Lab 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/ 2214

15 Lab 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 /dev % cd /dev % sudo sh mknod.sh % rm mknod.sh 2013/10/22/ 2215

16 Lab 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/initt ab % cp inittab /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/ 2216

17 Lab 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 /etc Step3: change permission. % cd /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/ 2217

18 Lab 6 Create Root Filesystem Image (1/2) Step1: make a JFFS2 file system image. (Download mkfs.jffs2)mkfs.jffs2 % chmod +x mkfs.jffs2 %./mkfs.jffs2 -v -e 0x20000 --pad=0xf00000 -r -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 -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/ 2218

19 Lab 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/ 2219

20 Lab 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 -o rootfs.jffs2 % genext2fs -b 15360 -d -e 0 rootfs.ext2 2013/10/22/ 2220

21 Lab 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/ 2221

22 Lab 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.RSWiki CSL course website Please send your report to both TAs. csiedatou@gmail.com, meenchen79@gmail.com csiedatou@gmail.commeenchen79@gmail.com Please use this title format: [CSL] G# Lab# Ver# E.g., [CSL] G13 Lab6 Ver1 2013/10/22/ 2222


Download ppt "COMPUTER SYSTEM LABORATORY Lab6 - Root Filesystem."

Similar presentations


Ads by Google