Installing an OS on the pcDuino is different than with a Raspberry Pi. It uses onboard flash for storage, 2G for the V1, and it uses a kernel flashed onto the board, as well.
To get going, you need to do two things
- flash a new kernel image
- install the operating system
You also also need:
- a 4G MicroSD card
- a 4G USB flash drive
- serial USB adapter
I used a Pololu USB AVR Programmer but you could use an FTDI breakout or similar.
Power Supply
Avoid pain and anguish: use a good power supply.
With a random, crappy 800mA wall wart, I experienced unreliable booting, hangs with USB devices installed, and even system freezes trying to set the password to my account!
Using a better power supply solved these problems. After wasting an hour or more...
Updating Kernel Image
Download
I used the 6/20/2014 Kernel image found here: pcduino_a10_kernel_dd_20140620.img(you might check for an updated version on the pcDuino download page)
Download the image and, while you're waiting, continue below.
What Disk Device?
You need to find out what device your microSD card mounts as. find the device of the microSD. Before you insert the card, look at the disk devices on the system:$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb1 227924576 13868168 202646548 7% /
udev 3530296 4 3530292 1% /dev
tmpfs 714416 1268 713148 1% /run
none 5120 4 5116 1% /run/lock
none 3572060 66292 3505768 2% /run/shm
/dev/sda4 267349012 234311888 19455152 93% /home
/dev/sda1 185939524 106053344 70577568 61% /mnt
$
Now, insert the card in your card reader and after it mounts, run df again:
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb1 227924576 13868168 202646548 7% /
udev 3530296 4 3530292 1% /dev
tmpfs 714416 1268 713148 1% /run
none 5120 4 5116 1% /run/lock
none 3572060 66292 3505768 2% /run/shm
/dev/sda4 267349012 234311888 19455152 93% /home
/dev/sda1 185939524 106053344 70577568 61% /mnt
/dev/sdd1 1926848 28768 1898080 2% /media/4BAB-4D27
$
You can see that /dev/sdd1, in my case, is the disk partition that was just mounted. It's partition #1 on disk /dev/sdd. In your case, it may be a different device path.
You're interested in writing the kernel image to the disk, not the partition. So remove the partition number to get the disk device path. (For example: if /dev/sdx1 is the partition, /dev/sdx is the disk). In my case, that's /dev/sdd
NOTE: Make absolutely certain you are using the disk corresponding to your microSD card.
If you use the wrong device, you could lose data, or overwrite your OS. That's bad.
However, it's easy to avoid making that mistake. Just be careful and pay attention.
Use df to make absolutely certain you have the correct device. Then double-check your command line before you hit return.
Is your kernel image done downloading? Ok, cd into wherever it's saved.
When you run dd, you'll specify the input file, the image, with if=filename and you'll specify the output device, your microSD card device (not partition), with of=device-path. And you'll specify a 4M block size with bs=4M. (Did you doublecheck the device?)
It takes a few minutes. Once it's done:
In my case, I saw the TX light blink green, very slowly, while the kernel was updating. If nothing blinks, something is wrong.
When the blinking stops, it's done updating.
Unplug your pcDuino from power. Remove the microSD card.
Now you can install the operating system.
You're interested in writing the kernel image to the disk, not the partition. So remove the partition number to get the disk device path. (For example: if /dev/sdx1 is the partition, /dev/sdx is the disk). In my case, that's /dev/sdd
Writing the Image
You'll use dd to write the image to your disk.NOTE: Make absolutely certain you are using the disk corresponding to your microSD card.
If you use the wrong device, you could lose data, or overwrite your OS. That's bad.
However, it's easy to avoid making that mistake. Just be careful and pay attention.
Use df to make absolutely certain you have the correct device. Then double-check your command line before you hit return.
Is your kernel image done downloading? Ok, cd into wherever it's saved.
When you run dd, you'll specify the input file, the image, with if=filename and you'll specify the output device, your microSD card device (not partition), with of=device-path. And you'll specify a 4M block size with bs=4M. (Did you doublecheck the device?)
sudo dd if=pcduino_a10_kernel_dd_20140620.img bs=4M of=/dev/sdx
25+0 records in
25+0 records out
104857600 bytes (105 MB) copied, 40.7738 s, 2.6 MB/s
- Remove power from your pcDuino,
- unmount your microSD from the Linux workstation,
- insert the microSD card into the pcDuino's slot, and
- power up the pcDuino.
In my case, I saw the TX light blink green, very slowly, while the kernel was updating. If nothing blinks, something is wrong.
When the blinking stops, it's done updating.
Unplug your pcDuino from power. Remove the microSD card.
Now you can install the operating system.
Installing Ubuntu
Next it's time to install Ubuntu operating system. This is where that USB flash drive comes in.
(you might check for an updated version on the pcDuino download page)
Extract files out of the 7z file you downloaded, which will create an ubuntu folder. The two files inside that folder are update.sh and pcduino_ubuntu_20131126.img (20131126 is the date; there may be a different date on whatever file you grabbed)or whatever the date is on the filename).
Move those files onto the root folder of your USB drive. It doesn't matter if there are other files on your USB drive.
Unmount the flash drive and remove it from your machine.
The debug port is a 3-pin header, next to the Menu button on the USB connector side.
Data going into the pcDuino is closest to the USB connector (FTDI: TXO). The middle is ground. The pin closest to the A10 is for data coming out of the pcDuino (FTDI: RXI). Connect your serial USB adapter so that TX coming from the pcDuino goes into the RX pin of your adapter and TX coming out of your adapter is going into RX on the pcDuino.
You previously removed power from your pcDuino and removed the microSD. We're about to power it up. Open your favorite terminal program (for example, minicom), connect to the USB serial adapter. Set the baud rate to 115,200, 8N1.
Insert the USB flash drive.
Download Image
You'll need to download the Ubuntu image: pcduino_ubuntu_20131126.7z(you might check for an updated version on the pcDuino download page)
Prepare USB Drive
Format your USB drive as FAT32 if it isn't already.Extract files out of the 7z file you downloaded, which will create an ubuntu folder. The two files inside that folder are update.sh and pcduino_ubuntu_20131126.img (20131126 is the date; there may be a different date on whatever file you grabbed)or whatever the date is on the filename).
Move those files onto the root folder of your USB drive. It doesn't matter if there are other files on your USB drive.
Unmount the flash drive and remove it from your machine.
Serial Debug Monitor
While you wait for the download, let's connect your Serial USB adapter to the debug port on the pcDuino so we can see what is going on. when you install the operating system.The debug port is a 3-pin header, next to the Menu button on the USB connector side.
pcDuino debug port |
You previously removed power from your pcDuino and removed the microSD. We're about to power it up. Open your favorite terminal program (for example, minicom), connect to the USB serial adapter. Set the baud rate to 115,200, 8N1.
Begin the Install
Plug in power to your pcDuino and you should see it outputting a long string of text. Eventually it indicates that it is searching for update.sh (remember that file?).Insert the USB flash drive.
mount udisk succeed
update.sh found, updating rootfs from udisk, please wait...
writing pcduino_ubuntu_20131126.img to nand flash
it will take about 10 minutes to finish...
update finished
update finished
After some time, the update will complete. Remove the USB flash drive, and reset the board (or power cycle it).
You should see a long string of text fly by. At the end of it you'll see something like this:
...
[ 6.350000] Warning: this sunxi disp driver will see significant redesign.
[ 6.360000] Applications using /dev/disp directly will break.
[ 6.370000] For more information visit: http://linux-sunxi.org/Sunxi_disp_driver
[ 6.670000] kjournald starting. Commit interval 5 seconds
[ 6.670000] EXT3-fs (nandd): using internal journal
[ 6.680000] EXT3-fs (nandd): mounted filesystem with ordered data mode
[ 7.070000] init: plymouth main process (68) terminated with status 127
[ 7.120000] init: ureadahead main process (70) terminated with status 5
Welcome to Linaro 12.07 (GNU/Linux 3.4.29+ armv7l)
* Documentation: https://wiki.linaro.org/
root@ubuntu:~#
And that's it. You're done.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.