170 lines
		
	
	
	
		
			4.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			170 lines
		
	
	
	
		
			4.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * File:         Documentation/blackfin/Filesystems
							 | 
						||
| 
								 | 
							
								 * Based on:
							 | 
						||
| 
								 | 
							
								 * Author:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Created:
							 | 
						||
| 
								 | 
							
								 * Description:  This file contains the simple DMA Implementation for Blackfin
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Rev:          $Id: Filesystems 2384 2006-11-01 04:12:43Z magicyang $
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Modified:
							 | 
						||
| 
								 | 
							
								 *               Copyright 2004-2006 Analog Devices Inc.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Bugs:         Enter bugs at http://blackfin.uclinux.org/
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										How to mount the root file system in uClinux/Blackfin
							 | 
						||
| 
								 | 
							
										-----------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1	Mounting EXT3 File system.
							 | 
						||
| 
								 | 
							
									------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									Creating an EXT3 File system for uClinux/Blackfin:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Please follow the steps to form the EXT3 File system and mount the same as root
							 | 
						||
| 
								 | 
							
								file system.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								a	Make an ext3 file system as large as you want the final root file
							 | 
						||
| 
								 | 
							
									system.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										mkfs.ext3  /dev/ram0 <your-rootfs-size-in-1k-blocks>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								b	Mount this Empty file system on a free directory as:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										mount -t ext3 /dev/ram0  ./test
							 | 
						||
| 
								 | 
							
											where ./test is the empty directory.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								c	Copy your root fs directory that you have so carefully made over.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										cp -af  /tmp/my_final_rootfs_files/* ./test
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										(For ex: cp -af uClinux-dist/romfs/* ./test)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								d	If you have done everything right till now you should be able to see
							 | 
						||
| 
								 | 
							
									the required "root" dir's (that's etc, root, bin, lib, sbin...)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								e	Now unmount the file system
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										umount  ./test
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								f	Create the root file system image.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										dd if=/dev/ram0 bs=1k count=<your-rootfs-size-in-1k-blocks> \
							 | 
						||
| 
								 | 
							
										> ext3fs.img
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Now you have to tell the kernel that will be mounting this file system as
							 | 
						||
| 
								 | 
							
								rootfs.
							 | 
						||
| 
								 | 
							
								So do a make menuconfig under kernel and select the Ext3 journaling file system
							 | 
						||
| 
								 | 
							
								support under File system --> submenu.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								2.	Mounting EXT2 File system.
							 | 
						||
| 
								 | 
							
									-------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								By default the ext2 file system image will be created if you invoke make from
							 | 
						||
| 
								 | 
							
								the top uClinux-dist directory.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								3.	Mounting CRAMFS File System
							 | 
						||
| 
								 | 
							
									----------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To create a CRAMFS file system image execute the command
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									mkfs.cramfs ./test cramfs.img
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									where ./test is the target directory.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								4.	Mounting ROMFS File System
							 | 
						||
| 
								 | 
							
									--------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To create a ROMFS file system image execute the command
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									genromfs -v -V "ROMdisk" -f romfs.img -d ./test
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									where ./test is the target directory
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								5.	Mounting the JFFS2 Filesystem
							 | 
						||
| 
								 | 
							
									-----------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To create a compressed JFFS filesystem (JFFS2), please execute the command
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									mkfs.jffs2 -d ./test -o jffs2.img
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									where ./test is the target directory.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								However, please make sure the following is in your kernel config.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * RAM/ROM/Flash chip drivers
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define CONFIG_MTD_CFI 1
							 | 
						||
| 
								 | 
							
								#define CONFIG_MTD_ROM 1
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Mapping drivers for chip access
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define CONFIG_MTD_COMPLEX_MAPPINGS 1
							 | 
						||
| 
								 | 
							
								#define CONFIG_MTD_BF533 1
							 | 
						||
| 
								 | 
							
								#undef CONFIG_MTD_UCLINUX
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Through the u-boot boot loader, use the jffs2.img in the corresponding
							 | 
						||
| 
								 | 
							
								partition made in linux-2.6.x/drivers/mtd/maps/bf533_flash.c.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NOTE - 	Currently the Flash driver is available only for EZKIT. Watch out for a
							 | 
						||
| 
								 | 
							
									STAMP driver soon.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								6. 	Mounting the NFS File system
							 | 
						||
| 
								 | 
							
									-----------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									For mounting the NFS please do the following in the kernel config.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									In Networking Support --> Networking options --> TCP/IP networking -->
							 | 
						||
| 
								 | 
							
										IP: kernel level autoconfiguration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									Enable BOOTP Support.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									In Kernel hacking --> Compiled-in kernel boot parameter add the following
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										root=/dev/nfs rw ip=bootp
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									In File system --> Network File system, Enable
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										NFS file system support --> NFSv3 client support
							 | 
						||
| 
								 | 
							
										Root File system on NFS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									in uClibc menuconfig, do the following
							 | 
						||
| 
								 | 
							
									In Networking Support
							 | 
						||
| 
								 | 
							
										enable Remote Procedure Call (RPC) support
							 | 
						||
| 
								 | 
							
											Full RPC Support
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									On the Host side, ensure that /etc/dhcpd.conf looks something like this
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										ddns-update-style ad-hoc;
							 | 
						||
| 
								 | 
							
										allow bootp;
							 | 
						||
| 
								 | 
							
										subnet 10.100.4.0 netmask 255.255.255.0 {
							 | 
						||
| 
								 | 
							
										default-lease-time 122209600;
							 | 
						||
| 
								 | 
							
										max-lease-time 31557600;
							 | 
						||
| 
								 | 
							
										group {
							 | 
						||
| 
								 | 
							
											host bf533 {
							 | 
						||
| 
								 | 
							
												hardware ethernet 00:CF:52:49:C3:01;
							 | 
						||
| 
								 | 
							
												fixed-address 10.100.4.50;
							 | 
						||
| 
								 | 
							
												option root-path "/home/nfsmount";
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									ensure that /etc/exports looks something like this
							 | 
						||
| 
								 | 
							
										/home/nfsmount *(rw,no_root_squash,no_all_squash)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									 run the following commands as root (may differ depending on your
							 | 
						||
| 
								 | 
							
									 distribution) :
							 | 
						||
| 
								 | 
							
										-  service nfs start
							 | 
						||
| 
								 | 
							
										-  service portmap start
							 | 
						||
| 
								 | 
							
										-  service dhcpd start
							 | 
						||
| 
								 | 
							
										-  /usr/sbin/exportfs
							 |