root@localhost.localdomain) (gcc version 4.3
.2 (Sourcery G++ Lite 2008q3-72) ) #3 Fri Apr 9 23:13:36 CST 2010
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: FriendlyARM Mini2440 development board
Memory policy: ECC disabled, Data cache writeback
……中间过长的内容在此省略了……
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem) on device 1:0.
Freeing init memory: 136K
eth0: link down
Processing /etc/profile... Done
# eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
至此系统启动成功。
----------------------------------------------------------------------------------
后记:由于友善之臂mini2440默认的配置文件是将驱动等直接编译到内核里去了,并没有使用内核模块。所以上述第6步制作根文件系统中的d)编译和e)安装内核模块的步骤可以不做。我就没有编译内核模块。因为参照友善之臂的root_qtopia根文件系统发现/lib/modules/`uname -r`里根本没有东西。而且以前用友善之臂的config_mini2440_t35默认配置编译内核模块的时候。发现友善只做了个hello_modules的内核模块示例。在此我们不需要使用这个hello_modules,所以这两步就略过去了。
说明:由于最小系统里的etc配置文件没有写自动启动网卡的脚本,所以我做的ramdisk开始时并不能自动启动网卡。后来参照友善之臂的root_qtopia根文件系统里的脚本做如下修改,即可自动启动脚本。
修改如下:
修改要制作的ramdisk根文件系统的rootfs下的/etc/init.d/rcS文件
在最下边添加如下两行命令即可自动启动网卡:
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.31.230 netmask 255.255.255.0 up
这个方法是通过分析友善之臂的root_qtopia根文件系统的启动流程时发现的。
通过分析友善之臂的root_qtopia根文件系统,我们还能发现更多的内容。在此不在详述。
锻炼一下自己分析解决问题的能力吧。呵呵。
.2 (Sourcery G++ Lite 2008q3-72) ) #3 Fri Apr 9 23:13:36 CST 2010
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: FriendlyARM Mini2440 development board
Memory policy: ECC disabled, Data cache writeback
……中间过长的内容在此省略了……
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem) on device 1:0.
Freeing init memory: 136K
eth0: link down
Processing /etc/profile... Done
# eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
至此系统启动成功。
----------------------------------------------------------------------------------
后记:由于友善之臂mini2440默认的配置文件是将驱动等直接编译到内核里去了,并没有使用内核模块。所以上述第6步制作根文件系统中的d)编译和e)安装内核模块的步骤可以不做。我就没有编译内核模块。因为参照友善之臂的root_qtopia根文件系统发现/lib/modules/`uname -r`里根本没有东西。而且以前用友善之臂的config_mini2440_t35默认配置编译内核模块的时候。发现友善只做了个hello_modules的内核模块示例。在此我们不需要使用这个hello_modules,所以这两步就略过去了。
说明:由于最小系统里的etc配置文件没有写自动启动网卡的脚本,所以我做的ramdisk开始时并不能自动启动网卡。后来参照友善之臂的root_qtopia根文件系统里的脚本做如下修改,即可自动启动脚本。
修改如下:
修改要制作的ramdisk根文件系统的rootfs下的/etc/init.d/rcS文件
在最下边添加如下两行命令即可自动启动网卡:
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.31.230 netmask 255.255.255.0 up
这个方法是通过分析友善之臂的root_qtopia根文件系统的启动流程时发现的。
通过分析友善之臂的root_qtopia根文件系统,我们还能发现更多的内容。在此不在详述。
锻炼一下自己分析解决问题的能力吧。呵呵。
附加:
另外可以使用以下方法把kernel和ramdisk都烧写到nand flash中,修改bootcmd,这样u-boot就可以自动启动该系统了。以下仅仅是方法,没有具体说明。大家可以自己做一下。
方法如下:
u-boot# tftp 0x32000000 zImage
u-boot# nand erase 0x00200000 0x200000
u-boot# nand write 0x32000000 0x00200000 0x00200000
u-boot# setenv bootcmd nand read 0x32000000 0x00200000 0x00200000\;go 0x30008000
u-boot# boot
注意 0x200000 是2M之内的内核 若你的内核大于2M则把 0x200000 换成 0x300000 (比如说内核大小在3M内)
其实就是uboot中的活用 go 命令,启动 zImage 格式的内核的方法。
####################################################################
u-boot# tftp 0x32000000 uImage
u-boot# nand erase 0x00200000 0x200000
u-boot# nand write 0x32000000 0x00200000 0x00200000
u-boot# setenv bootcmd nand read 0x32000000 0x00200000 0x00200000\;bootm 0x30008000
u-boot# boot
注意 0x200000 是2M之内的内核 若你的内核大于2M则把 0x200000 换成 0x300000 (比如说内核大小在3M内)
其实就是uboot中使用 bootm 命令启动 uImage 格式的内核的方法。
====================================================================
注:nand erase 要擦除的起始地址 要擦除的字节数
nand write 要写入的起始地址 要写入的字节数
另外要擦除/写入的起始地址和要擦除/写入的字节数都必须是你的u-boot擦除和写入的最小块大小的整数倍。例如tekkaman大侠的u-boot-2009.11_tekkaman的Erase和Write的最小块大小都是128KB,所以以上的四个数(要擦除/写入的起始地址、要擦除/写入的字节数)都必须是128KB的整数倍。
方法如下:
u-boot# tftp 0x32000000 zImage
u-boot# nand erase 0x00200000 0x200000
u-boot# nand write 0x32000000 0x00200000 0x00200000
u-boot# setenv bootcmd nand read 0x32000000 0x00200000 0x00200000\;go 0x30008000
u-boot# boot
注意 0x200000 是2M之内的内核 若你的内核大于2M则把 0x200000 换成 0x300000 (比如说内核大小在3M内)
其实就是uboot中的活用 go 命令,启动 zImage 格式的内核的方法。
####################################################################
u-boot# tftp 0x32000000 uImage
u-boot# nand erase 0x00200000 0x200000
u-boot# nand write 0x32000000 0x00200000 0x00200000
u-boot# setenv bootcmd nand read 0x32000000 0x00200000 0x00200000\;bootm 0x30008000
u-boot# boot
注意 0x200000 是2M之内的内核 若你的内核大于2M则把 0x200000 换成 0x300000 (比如说内核大小在3M内)
其实就是uboot中使用 bootm 命令启动 uImage 格式的内核的方法。
====================================================================
注:nand erase 要擦除的起始地址 要擦除的字节数
nand write 要写入的起始地址 要写入的字节数
另外要擦除/写入的起始地址和要擦除/写入的字节数都必须是你的u-boot擦除和写入的最小块大小的整数倍。例如tekkaman大侠的u-boot-2009.11_tekkaman的Erase和Write的最小块大小都是128KB,所以以上的四个数(要擦除/写入的起始地址、要擦除/写入的字节数)都必须是128KB的整数倍。
说明:本博客转载自http://www.arm9home.net/read.php?tid-5610.html 技术论坛,感觉博主,文章写的很不错,具有很强的实践意义,最近在看ramdisk,发现了这篇文章,与大家分享。