因此指导学员在arm-Linux使用JPT-7模块来跑GPS应用.Nand Flash 空间太小,而且所用的板经常烧不了根文件系统.所以决定用SD卡来跑根文件系统.
1.PC机上格式化SD卡
在桌面的PC机上用SD读卡器操作SD卡:
一般情况下PC机上第一个U盘整体设备结点是/dev/sda,第二个是 /dev/sdb,在RHEL5下它会被自动mount到/media/disk和 /media/disk_1 目录.
U盘/dev/sdb上第一个分区是 /dev/sdb1,第二是/dev/sdb2 依此类推.
根文件系统采用符号链接等特性,用FAT32是不行的,这里直接采用标准的ext3的文件系统.在实测时,把U盘整个做一个分区做ext3根文件系统.总是出不少问题(可能步骤也不对),因此按网上推荐的,做二个分区,第一个分区采用vfat格式,第二个分区才采用ext3的格式.
1.1 用fdisk分区
执行fdisk /dev/sdb
fdisk有如下常用选项
1. 输入 m 显示所有命令列示。
2. 输入 p 显示硬盘分割情形。
3. 输入 a 设定硬盘启动区。
4. 输入 n 设定新的硬盘分割区。
4.1. 输入 e 硬盘为[扩展]分割区(extend)。
4.2. 输入 p 硬盘为[首要]分割区(primary)。
5. 输入 t 改变硬盘分割区属性。
6. 输入 d 删除硬盘分割区属性。
7. 输入 q 结束不存入硬盘分割区属性。
8. 输入 w 结束并写入硬盘分割区属性
如果以前U盘有分区,需要输入d命令来依次删除分区,以下执行两次n命令创建一个 400M的FAT分区,以及把剩下的分区设为ext3,最后用w命令把结果保存下来.
Command (m for help): n Command action Command (m for help): n Command (m for help): p Disk /dev/sdb: 2041 MB, 2041577472 bytes Device Boot Start End Blocks Id System Command (m for help): w Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: 设备或资源忙. WARNING: If you have created or modified any DOS 6.x
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1020, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1020, default 1020): +400M
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (202-1020, default 202):
Using default value 202
Last cylinder or +size or +sizeM or +sizeK (202-1020, default 1020):
Using default value 1020
63 heads, 62 sectors/track, 1020 cylinders
Units = cylinders of 3906 * 512 = 1999872 bytes
/dev/sdb1 1 201 392522 b W95 FAT32
/dev/sdb2 202 1020 1599507 83 Linux
The partition table has been altered!
The kernel still uses the old table.
The new table will be used at the next reboot.
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
1.2 格式化分区
mkfs.vfat /dev/sda1 #第一个分区格式化成fat32
mkfs.ext3 /dev/sda2 #第二个分区格式化成fat32
可以用
tune2fs -l /dev/sda2 来检验分区类型
1.3 拷贝根文件系统
mount /dev/sda2 /mnt/sdcard #挂载SD卡
cp -ra /home/hxy/rootfs/* /mnt/sdcard #把根文件系统拷到SD卡
2.编译ARM Linux内核
2.1 修改内核配置
确保ext3的文件系统支持,和SD卡驱动都被静态编译到内核,我使用的是Linux 2.6.29.
在内核源码目录执行 make menuconfig
其中ext3在File system下.成功的配置如下.
<*> Ext3 journalling file system support
[*] Ext3 extended attributes
[*] Ext3 POSIX Access Control Lists
[*] Ext3 Security Labels
SD卡驱动支持在Device Drivers ->MMC/SD/SDIO card support 下,成功的配置如下