| 			  ========================= | 
 | 			  BOOTING FR-V LINUX KERNEL | 
 | 			  ========================= | 
 |  | 
 | ====================== | 
 | PROVIDING A FILESYSTEM | 
 | ====================== | 
 |  | 
 | First of all, a root filesystem must be made available. This can be done in | 
 | one of two ways: | 
 |  | 
 |   (1) NFS Export | 
 |  | 
 |       A filesystem should be constructed in a directory on an NFS server that | 
 |       the target board can reach. This directory should then be NFS exported | 
 |       such that the target board can read and write into it as root. | 
 |  | 
 |   (2) Flash Filesystem (JFFS2 Recommended) | 
 |  | 
 |       In this case, the image must be stored or built up on flash before it | 
 |       can be used. A complete image can be built using the mkfs.jffs2 or | 
 |       similar program and then downloaded and stored into flash by RedBoot. | 
 |  | 
 |  | 
 | ======================== | 
 | LOADING THE KERNEL IMAGE | 
 | ======================== | 
 |  | 
 | The kernel will need to be loaded into RAM by RedBoot (or by some alternative | 
 | boot loader) before it can be run. The kernel image (arch/frv/boot/Image) may | 
 | be loaded in one of three ways: | 
 |  | 
 |   (1) Load from Flash | 
 |  | 
 |       This is the simplest. RedBoot can store an image in the flash (see the | 
 |       RedBoot documentation) and then load it back into RAM. RedBoot keeps | 
 |       track of the load address, entry point and size, so the command to do | 
 |       this is simply: | 
 |  | 
 | 	fis load linux | 
 |  | 
 |       The image is then ready to be executed. | 
 |  | 
 |   (2) Load by TFTP | 
 |  | 
 |       The following command will download a raw binary kernel image from the | 
 |       default server (as negotiated by BOOTP) and store it into RAM: | 
 |  | 
 | 	load -b 0x00100000 -r /tftpboot/image.bin | 
 |  | 
 |       The image is then ready to be executed. | 
 |  | 
 |   (3) Load by Y-Modem | 
 |  | 
 |       The following command will download a raw binary kernel image across the | 
 |       serial port that RedBoot is currently using: | 
 |  | 
 | 	load -m ymodem -b 0x00100000 -r zImage | 
 |  | 
 |       The serial client (such as minicom) must then be told to transmit the | 
 |       program by Y-Modem. | 
 |  | 
 |       When finished, the image will then be ready to be executed. | 
 |  | 
 |  | 
 | ================== | 
 | BOOTING THE KERNEL | 
 | ================== | 
 |  | 
 | Boot the image with the following RedBoot command: | 
 |  | 
 | 	exec -c "<CMDLINE>" 0x00100000 | 
 |  | 
 | For example: | 
 |  | 
 | 	exec -c "console=ttySM0,115200 ip=:::::dhcp root=/dev/mtdblock2 rw" | 
 |  | 
 | This will start the kernel running. Note that if the GDB-stub is compiled in, | 
 | then the kernel will immediately wait for GDB to connect over serial before | 
 | doing anything else. See the section on kernel debugging with GDB. | 
 |  | 
 | The kernel command line <CMDLINE> tells the kernel where its console is and | 
 | how to find its root filesystem. This is made up of the following components, | 
 | separated by spaces: | 
 |  | 
 |   (*) console=ttyS<x>[,<baud>[<parity>[<bits>[<flow>]]]] | 
 |  | 
 |       This specifies that the system console should output through on-chip | 
 |       serial port <x> (which can be "0" or "1"). | 
 |  | 
 |       <baud> is a standard baud rate between 1200 and 115200 (default 9600). | 
 |  | 
 |       <parity> is a parity setting of "N", "O", "E", "M" or "S" for None, Odd, | 
 |       Even, Mark or Space. "None" is the default. | 
 |  | 
 |       <stop> is "7" or "8" for the number of bits per character. "8" is the | 
 |       default. | 
 |  | 
 |       <flow> is "r" to use flow control (XCTS on serial port 2 only). The | 
 |       default is to not use flow control. | 
 |  | 
 |       For example: | 
 |  | 
 | 	console=ttyS0,115200 | 
 |  | 
 |       To use the first on-chip serial port at baud rate 115200, no parity, 8 | 
 |       bits, and no flow control. | 
 |  | 
 |   (*) root=<xxxx> | 
 |  | 
 |       This specifies the device upon which the root filesystem resides. It | 
 |       may be specified by major and minor number, device path, or even | 
 |       partition uuid, if supported.  For example: | 
 |  | 
 | 	/dev/nfs	NFS root filesystem | 
 | 	/dev/mtdblock3	Fourth RedBoot partition on the System Flash | 
 | 	PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF/PARTNROFF=1 | 
 | 		first partition after the partition with the given UUID | 
 | 	253:0		Device with major 253 and minor 0 | 
 |  | 
 |       Authoritative information can be found in | 
 |       "Documentation/kernel-parameters.txt". | 
 |  | 
 |   (*) rw | 
 |  | 
 |       Start with the root filesystem mounted Read/Write. | 
 |  | 
 |   The remaining components are all optional: | 
 |  | 
 |   (*) ip=<ip>::::<host>:<iface>:<cfg> | 
 |  | 
 |       Configure the network interface. If <cfg> is "off" then <ip> should | 
 |       specify the IP address for the network device <iface>. <host> provide | 
 |       the hostname for the device. | 
 |  | 
 |       If <cfg> is "bootp" or "dhcp", then all of these parameters will be | 
 |       discovered by consulting a BOOTP or DHCP server. | 
 |  | 
 |       For example, the following might be used: | 
 |  | 
 | 	ip=192.168.73.12::::frv:eth0:off | 
 |  | 
 |       This sets the IP address on the VDK motherboard RTL8029 ethernet chipset | 
 |       (eth0) to be 192.168.73.12, and sets the board's hostname to be "frv". | 
 |  | 
 |   (*) nfsroot=<server>:<dir>[,v<vers>] | 
 |  | 
 |       This is mandatory if "root=/dev/nfs" is given as an option. It tells the | 
 |       kernel the IP address of the NFS server providing its root filesystem, | 
 |       and the pathname on that server of the filesystem. | 
 |  | 
 |       The NFS version to use can also be specified. v2 and v3 are supported by | 
 |       Linux. | 
 |  | 
 |       For example: | 
 |  | 
 | 	nfsroot=192.168.73.1:/nfsroot-frv | 
 |  | 
 |   (*) profile=1 | 
 |  | 
 |       Turns on the kernel profiler (accessible through /proc/profile). | 
 |  | 
 |   (*) console=gdb0 | 
 |  | 
 |       This can be used as an alternative to the "console=ttyS..." listed | 
 |       above. I tells the kernel to pass the console output to GDB if the | 
 |       gdbstub is compiled in to the kernel. | 
 |  | 
 |       If this is used, then the gdbstub passes the text to GDB, which then | 
 |       simply dumps it to its standard output. | 
 |  | 
 |   (*) mem=<xxx>M | 
 |  | 
 |       Normally the kernel will work out how much SDRAM it has by reading the | 
 |       SDRAM controller registers. That can be overridden with this | 
 |       option. This allows the kernel to be told that it has <xxx> megabytes of | 
 |       memory available. | 
 |  | 
 |   (*) init=<prog> [<arg> [<arg> [<arg> ...]]] | 
 |  | 
 |       This tells the kernel what program to run initially. By default this is | 
 |       /sbin/init, but /sbin/sash or /bin/sh are common alternatives. |