Booting from SD/zh cn

From Openmoko

Jump to: navigation, search


运作原理

Openmoko GTA02 支持双系统开机。除了将映像档刻录到您的NAND外,你也可以利用将其它套件放在SD卡的方法,使用SD卡开机,加载另一个套件系统。

在Neo中,我们使用 u-boot 做为bootloader。U-boot 负责硬件装置的功能运作,直到 Openmoko被启动加载装置为止。首先,它会将kernel image加载内存中,接着再传送一串参数到kernel。这些参数的工作是用来指定root filesystem的位置。

在加载kernel 后,它会启动硬件,并且挂载root filesystem。之后 kernel 会执行 "/sbin/init",它会处理其它的开机程序( 如显示屏幕)。

不论是是使用内建的Flash开机,或者是使用SD Card开机,你所执行的开机顺序将会相同。唯一不同的地方是加载 kernel 的方法,及哪个装置被视为root filesystem,挂载到系统上。


U-boot 历史版本

  • 20080226 初版
  • 20080305 修复DFU,并且移除NOR版本,使用NAND功能
  • 20080312 修复自SD记忆卡启动功能 (从使用uImage 改为使用uImage.bin)
  • 20080320 修复u-boot direct drawing 500mA 、智慧充电、量产版本。

而Neo FreeRunner在硬件设计上,提供了自NAND开机及自SD卡开机,不论您要使用哪种方式开机,开机程序都必须使用U-boot进行管理。

而在Neo FreeRunner上,若您希望由SD卡中开机,您可以透过以下的步骤,达到这个目地。

1. 制作可开机的SD卡。
2. 在FreeRunner中置入SD卡。
3. 选择自SD卡开机,即可完成此项工作。

制作可开机的SD Card (GTA02)

取得压缩的 rootfs

取得压缩的rootfs image 有二种方法,你可以使用OpenEmbedded 建立它,或者自Openmoko downloads下载它。


方法 1: 自Openmoko buildhost上下载rootfs/kernel 压缩文件

你可以自最近的图像文件选择及找到一组 rootfs/kernel 组合

方法 2: 使用OpenEmbedded建立tarfile

另一个取得 tar 压缩文件的方法就是,你可以从OpenEmbedded 环境下建立此档案。

如要制作OM-2007.2 ,你必须在 local.conf下加入"tar" 字样:

IMAGE_FSTYPES = "jffs2 tar"

之后,使用下列指令建立新的image:

bitbake openmoko-devel-image

或者,你可以使用MokoMakefile:

make openmoko-devel-image

在完成了以上程序后,在配置的目录下会有一个名为 Openmoko-....tar 的档案,即为你所完成的rootfs

方法 3 : 转换 jff2 image为 tarfile

你可以参考Userspace root image 取如何存取 jffs2 image的详细信息。

制作可开机的SD 卡

以下为自SD中启动系统的操作步骤指引。它使用ubuntu 及一张干净的512 MB Sandisk microSD 卡:

  • Step 1, 缷载磁盘:
  sudo umount /media/disk-1
NOTE: 你可以使用fdisk -l 取得相关磁盘信息



接着将磁盘分为二个分割区,第一个分割区使用vfat,预留 8MB空间给 uImage.bin,第二个扇区 (其余的磁盘空间) 使用ext2 格式,提供给rootfs 档案及目录使用。二个分割区都使用primary partition 类型。

  • Step 2, fdisk:
  sudo fdisk /dev/mmcblk0
  Command (m for help): d
  Selected partition 1
  Command (m for help): n
  Command action
     e   extended
     p   primary partition (1-4)
  p
  Partition number (1-4): 1
  First cylinder (1-983, default 1):
  Using default value 1
  Last cylinder or +size or +sizeM or +sizeK (1-983, default 983): +8M
  Command (m for help): n
  Command action
     e   extended
     p   primary partition (1-4)
  p
  Partition number (1-4): 2
  First cylinder (18-983, default 18):
  Using default value 18
  Last cylinder or +size or +sizeM or +sizeK (18-983, default 983):
  Using default value 983
  Command (m for help): w
  The partition table has been altered!
  Calling ioctl() to re-read partition table.
  Syncing disks.
NOTE: 由于个人使用的作业环境之不同, 所使用的代号将有所不同,建议您使用df指令查看您的磁盘代号


  • Step 3 格式化SD卡:

请将二个分割区分别格式化为 vfat (放置uImage.bin)及 ext2 (放置 rootfs files)

  mkfs -t vfat /dev/mmcblk0p1
  mkfs -t ext2 /dev/mmcblk0p2


  • Step 4 将kernel及rootfs 档案放置到二个分割区中:

你必须使用以下指令解压缩

mount /dev/mmcblk0p2 /mnt/moko
tar -C /mnt/moko/ -xzvf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar.gz
  sudo cp -r /home/tony/Desktop/kernel/uImage.bin /media/disk-1
  sudo cp -r /home/tony/Desktop/root_files/. /media/disk-2
  sync
  • Step 5 自Neo的选单中,选择 boot from SD


自NOR (GTA02)下开机

如果你想要自NOR下开机,并且从SD卡中使用NOR,请使用下列的操作步骤。

  • 按下AUX key
  • 再按住Power,启动GTA02
  • 约一秒后放开AUX

接着,你可以进入预设的NOR开机选单,你可以:

  • 使用NOR开机,使用DFU
  • 使用NOR开机画面自SD卡开机
Personal tools