ARM Linux使用SD卡根文件系统
ARM Linux使用SD卡根文件系统
因此指导学员在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 |
<*> Ext3 journalling file system support [*] Ext3 extended attributes [*] Ext3 POSIX Access Control Lists [*] Ext3 Security Labels |
--- MMC/SD/SDIO card support [*] MMC debugging [ ] Allow unsafe resume (DANGEROUS) *** MMC/SD/SDIO Card Drivers *** <*> MMC block device driver [*] Use bounce buffer for simple hosts <*> SDIO UART/GPS class support <*> MMC host test driver *** MMC/SD/SDIO Host Controller Drivers *** <*> Secure Digital Host Controller Interface support <*> Samsung S3C SD/MMC Card Interface support |
[root: /]# s3c2440-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz). s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz). s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz). s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz). s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz). s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz). s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz). s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz). s3c2440-sdi s3c2440-sdi: running at 16875kHz (requested: 25000kHz). s3c2440-sdi s3c2440-sdi: running at 16875kHz (requested: 25000kHz). mmc0: new SD card at address 0002 mmcblk0: mmc0:0002 00000 1.90 GiB mmcblk0: p1 p2 FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! |
brw-rw---- 1 root root 179, 0 Sep 22 10:48 /dev/mmcblk0
brw-rw---- 1 root root 179, 2 Sep 22 10:48 /dev/mmcblk0p2 测试ext3分区 mount -t ext3 /dev/mmcblk0p2 /mnt 在/mnt上可以读写文件.表示ext3分区正常. 手动建立第一个分区的结点. mknod /dev/mmcblk0p1 b 179 1 测试vfat 分区 mount -t vfat /dev/mmcblk0p1 /mnt 在/mnt上可以读写文件.表示vfat分区正常.如果想自动创建个设备结点,可以修改/etc/fstat来使用这个分区 3.使用SD卡分区作为根文件 修改LINUX启动参数.我用的是u-boot .因此在u-boot shell用set bootargs命令来设置Linux启动参数. 成功的启动参数是 noinitrd root=179:2 rw console=ttySAC0 其中179和2是sd卡上ext3分区的主设备和从设备号. 用set bootargs "noinitrd root=179:2 rw console=ttySAC0 "设置后.重启内核,即可用ext3分区作为根文件系统
评论暂时关闭