ARM9开发系统Linux启动过程详解

需积分: 10 11 下载量 31 浏览量 更新于2024-07-30 1 收藏 337KB PDF 举报
"该文档主要解析了在ARMer9开发系统上Linux的启动过程,包括启动脚本的分析,以及加载MMC/SD卡设备驱动模块和USB设备驱动的相关步骤。" 在ARMer9开发系统上运行Linux的过程中,启动流程包含了多个关键阶段。首先,我们从启动脚本开始分析。启动脚本一般位于`/linuxrc`,它的主要任务是初始化系统环境,设置必要的文件系统,并加载必需的驱动程序。在给出的脚本中,可以看到以下步骤: 1. **挂载/etc as ramfs**: `/bin/mount -n -t ramfs ramfs /etc` 这行命令将/etc目录挂载为ramfs类型的文件系统。ramfs是一种内存文件系统,它将所有数据存储在RAM中,提供快速的读写速度,但数据会在系统重启后丢失。 2. **复制mnt/etc到/etc**: `/bin/cp -a /mnt/etc/* /etc` 这个命令将/mnt/etc目录下的所有内容复制到/etc,这可能是为了在启动时恢复或设置默认配置。 3. **重新创建/etc/mtab条目**: `/bin/mount -f -t cramfs -o remount,ro /dev/block/2` 这行命令将/etc重新挂载为只读的cramfs文件系统,以保护系统配置文件不被修改。 4. **再次挂载/etc as ramfs**: `/bin/mount -f -t ramfs ramfs /etc` 这一步可能是为了临时使用ramfs,便于执行后续的初始化操作。 5. **启动init进程**: `/sbin/init` 是系统的初始化程序,通常会启动系统的服务和守护进程。在这个系统中,/sbin/init是一个指向`/bin/busybox`的符号链接, BusyBox是一个轻量级的工具集合,包含了许多常用的Linux命令和工具,适用于资源有限的嵌入式系统。 BusyBox的使用极大地减小了系统的体积,因为它将许多常用工具如ls、cp、cat等集成在一起,提供了与完整Linux系统类似的命令功能。这对于ARMer9这样的嵌入式开发系统来说非常重要,因为它需要在有限的硬件资源下实现功能。 接下来的启动过程会涉及驱动模块的编译和加载,如MMC/SD卡设备驱动模块、USB Host、USB硬盘和U盘驱动。这些驱动是操作系统与硬件交互的关键,它们负责识别和管理对应的硬件设备,使得系统能够正确地读写数据。 在加载驱动模块时,通常会使用`insmod`或`modprobe`命令将模块插入内核。例如,对于MMC/SD卡驱动,可能需要先编译驱动源代码,然后通过insmod加载到内核中。对于USB设备,系统可能需要识别并加载相应的USB类驱动来支持USB Host功能,以及处理USB硬盘和U盘的数据传输。 ARMer9开发系统上的Linux启动过程是一个复杂的过程,涉及到文件系统的挂载、驱动程序的加载和初始化脚本的执行。这个过程确保了系统能够正确识别和管理硬件资源,为用户提供了一个完整的运行环境。