pcDuino入门指南——第四章 Bootable microSD with Ubuntu OS

首先,从here (ubuntu_mmc.img) 下载SD-bootable image文件(注意:官方会不断更新新版image下载前最好在pcDuino网站上检查确认下载地址)。

接着将下载的image文件烧入 micro-SD,这里将介绍三种不同操作系统的情况:Windows, Linux和MacOS

Windows:

我们使用的是 Win32DiskImager  (这里下载 )

1

 

Linux:

插入micro-sd后将会自动安装。首先卸载所有分区,例如SD卡有2个分区,用以下命卸载:

1. $ umount /dev/mmcblk0p1

2. $ umount /dev/mmcblk0p2

然后 dd mmc imagemicro-sd:

1. $ dd if=/udisk/ubuntu_mmc.img of=/dev/mmcblk0 bs=1M

2. $ sync

注意:不要使用 “of=/dev/xxx”来指向硬盘,否则将会破坏硬盘里的数据。.

 

MacOS:

MacOS终端也支持“df”和 “dd”命令。

插入micro-sd自动安装,首先还是卸载所有分区,SD卡有2个分区时,用以下命令卸载:

1. $ sudo umount /dev/disk1s1

2. $ sudo umount /dev/disk1s2

如果卸载失败可以使用以下脚本强制卸载:

1. $ sudo diskutil umount force /dev/disk1s1

2. $ sudo diskutil umount force /dev/disk1s2

然后 dd  mmc imagemicro-sd:

1. $ sudo dd if=/udisk/ubuntu_mmc.img of=/dev/disk1 bs=1M

注意:还是不要使用 “of=/dev/xxx” 指向硬盘这将会损坏硬盘中的数据。

将烧好的micro sd插入pcDuino然后上电,pcDuino将会从SD开始启动。

调整SD-boot image的大小,SD扩展到最大容量:

准备以下expand.sh脚本 :2

1. $ sudo bash ./expand_sdcard_rootfs.sh

2. $ sudo reboot

重启之后输入:

1. $ sudo resize2fs /dev/mmcblk0p2

 

引导失败

先确定pcDuino是从SD还是从NAND引导启动,有时无法检测到SD的存在时就会从NAND启动。

输入df命令来检查:

如果从NAND启动,root是 /dev/nandd

如果从SD启动, root是 /dev/mmcblk0p1

如果从NAND启动的话,串口有调试线时,要拔掉调试线,再次安装之前先reset pcDuino。

也有情况发现串口上面插上串口转USB线时有可能会引起HDMI无显示的问题。

 

Advanced Topic:

如何生成SD卡引导的ubuntu image(或者Linux)?

1、下载以下两个程序包:

  • pcduino_hwpack.tar.xz
  • Ubuntu.7z

解压命令:

1.  $ tar xf pcduino_hwpack_20130331.tar.xz

2.  $ 7za -x ubuntu.7z

解压 pcduino_hwpack.tar.xz包后得到以下四个文件

  • uImage
  • script.bin
  • sunxi-spl.bin
  • u-boot.bin

在解压ubuntu.tar.xz包后会得到文件

  • Ubuntu.img                                                                                                                                     

uImage 和 script.bin是内核文件,最好下载最新版本的。

另外,可以输入命令查看两个文件:

1. $ sudo mount /dev/nanda /mnt/nanda

2. $ ls /mnt/nanda

2、插入micro-SD,如果安装了系统需要要先卸载,例如:

1. $ sudo umount /dev/mmcblk0p1

2. $ sudo umount /dev/mmcblk0p2

3、用 fdisk分出两个新的分区

首先是boot分区,filesystem类型是fat,用来装 store uImage 和 script.bin

第二个是留给ubuntu filesystemfilesystem类型是ext3

$ sudo fdisk /dev/mmcblk0

执行以下脚本文件

Command (m for help): d

Selected partition 1

Command (m for help): n

Partition type:

  • p   primary (0 primary, 0 extended, 4 free)
  • e   extended

Select (default p): p

Partition number (1-4, default 1):

Using default value 1

First sector (2048-15122431, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-15122431, default 15122431): +64M

 

Command (m for help): n

Partition type:

  • p   primary (1 primary, 0 extended, 3 free)
  • e   extended

Select (default p): p

Partition number (1-4, default 2): 2

First sector (206848-15122431, default 206848):

Using default value 206848

Last sector, +sectors or +size{K,M,G} (206848-15122431, default 15122431): +1800M

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

[ 5652.370000]  mmcblk0: p1 p2

Syncing disks.

也可以改变boot区和ubuntu区的大小,建议boot区要>= 64Mubuntu区大于1G

执行上面脚本得到64Mboot区和1.8Gubuntu区,也可以再把SD卡所有可用的空间都分给ubuntu区。

4、格式化分区:

1.  $ sudo apt-get install dosfstools

2 .

3.  $ sudo mkdosfs /dev/mmcblk0p1

4 .

5.  $ sudo mke2fs -T ext3 /dev/mmcblk0p2

6 .

7.  $ sudo umount /dev/mmcblk0p1

8 .

9.  $ sudo umount /dev/mmcblk0p2

5、复制内核到第一个分区

1.  $ sudo mount /dev/mmcblk0p1 /boot

2.  $ sudo cp uImage /boot -f

3.  $ sudo cp script.bin /boot -f

4.  $ sync && sudo umount /boot

6、复制ubuntu到第二个分区

1.  $ sudo dd if=ubuntu.img of=/dev/mmcblk0p2 bs=1M

2.  $ sudo sync

7、从sdcard引导

1.  $ sudo umount /dev/mmcblk0p1

2.  $ sudo umount /dev/mmcblk0p2

3.  $ sudo dd if=sunxi-spl.bin of=/dev/mmcblk0 bs=1024 seek=8

4.  $ sudo dd if=u-boot.bin of=/dev/mmcblk0 bs=1024 seek=32

8、 Dump the image (optional)

1.  $ sudo umount /dev/mmcblk0p1

2.  $ sudo umount /dev/mmcblk0p2

3.  $ sudo dd if=/dev/mmcblk0 of=ubuntu_sd.img bs=1M count=1900

9、重启时板子就会从sdcard引导启动了

你可能感兴趣的:(pcDuino入门指南——第四章 Bootable microSD with Ubuntu OS)