Let’s hookup our GuruPlug JTAG board as described in GuruPlug serial connection post.
Latest debian testing images for GuruPlug may be found here.
Boot up the device:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
=> usb start
starting USB...
USB0: USB EHCI 1.00
scanning bus 0 for devices... 4 USB Device(s) found
scanning usb for storage devices... Device NOT ready
Request Sense returned 02 3A 00
3 Storage Device(s) found
=> usb part
## Unknown partition table type 0
Partition Map for USB device 1 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
Partition Map for USB device 2 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 2048 7852032 77e6cfe3-01 0b
## Unknown partition table type 0
## Unknown partition table type 0
## Unknown partition table type 0
## Unknown partition table type
|
Load images to a NAND temporary location
1
2
3
4
5
6
|
=> fatload usb 2:1 0xa000000 uImage
reading uImage
2058146 bytes read in 98 ms (20 MiB/s)
=> fatload usb 2:1 0xa200000 uInitrd
reading uInitrd
10713133 bytes read in 411 ms (24.9 MiB/s
|
0xa000000 is the same temp location as I used for u-boot, and the 0xa200000 location is the location after uImage (uImage 2058146 bytes in hex is 0x1F67A2, so we added 0x200000 to the uImage location). Exact address doesn’t matter, but You shouldn’t choose address that is going to overwrite uImage.
Set the bootargs for the install, and boot the images from the temporary locations:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
=> setenv bootargs console=ttyS0,115200 base-installer/initramfs-tools/driver-policy=most
=> bootm 0xa000000 0xa200000
## Booting kernel from Legacy Image at 0a000000 ...
Image Name: Debian kernel
Created: 2017-01-27 22:23:37 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2058082 Bytes = 2 MiB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 0a200000 ...
Image Name: debian-installer ramdisk
Created: 2017-01-27 22:23:37 UTC
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 10713069 Bytes = 10.2 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Loading Kernel Image ... OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0x0
[...
|
After output we get this:

So we got the install working!
The whole Debian install process is the standard one, so I won’t get into details there. Install as You would do on a normal PC.
Or You may take a peak at the sceenshot’s in Debian install to SD card post pictures.
When install is finished, reboot the device and hit any key to stop autobot.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
U-Boot 2016.11+dfsg1-3 (Dec 22 2016 - 04:44:44 +0000)
Marvell-GuruPlug
SoC: Kirkwood 88F6281_A1
DRAM: 512 MiB
WARNING: Caches not enabled
NAND: 512 MiB
In: serial
Out: serial
Err: serial
Net: egiga0, egiga1
88E1121 Initialized on egiga0
88E1121 Initialized on egiga1
IDE: ide_preinit failed
Hit any key to stop autoboot: 0
=
|
Using the ‘usb part’ command we may identify the device number where our boot images are installed.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
=> usb part
## Unknown partition table type 0
Partition Map for USB device 1 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 63 449757 85aefcda-01 83 Boot
2 449820 6490260 85aefcda-02 83
3 6940080 1012095 85aefcda-03 05 Extd
5 6940143 1012032 85aefcda-05 82
Partition Map for USB device 2 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 2048 7852032 77e6cfe3-01 0b
## Unknown partition table type 0
## Unknown partition table type 0
## Unknown partition table type 0
## Unknown partition table type
|
So it’s the first device, and the boot images are located on the first ‘boot’ partition (1:1).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
=> ext2ls usb 1:1
<DIR> 1024 .
<DIR> 1024 ..
<DIR> 12288 lost+found
158068 config-4.9.0-1-marvell
2044480 vmlinuz-4.9.0-1-marvell
<SYM> 26 initrd.img.old
<SYM> 23 vmlinuz.old
<DIR> 1024 dtbs
1756842 System.map-4.9.0-1-marvell
<SYM> 26 initrd.img
<SYM> 23 vmlinuz
<SYM> 54 dtb-4.9.0-1-marvell
10522 dtb
12176783 initrd.img-4.9.0-1-marvell
2055066 uImage
12176847 uInitrd
<SYM> 54 dtb.bak
2055066 uImage.bak
12175156 uInitrd.bak
|
We need uImage and uInitrd files
Let’s set boot environment variables, and reset the device
1
2
3
4
5
6
7
8
|
=> setenv bootargs_console 'setenv bootargs console=ttyS0,115200 root=/dev/sdb2'
=> setenv boot_usb 'usb start; ext2load usb 1:1 0xa000000 /uInitrd; ext2load usb 1:1 0xb000000 /uImage'
=> set bootcmd 'run bootargs_console; run boot_usb; bootm 0xa000000 0xb000000'
=> saveenv
Saving Environment to NAND...
Erasing NAND...
Erasing at 0xe0000 -- 100% complete.
Writing to NAND... O
|
This should be self explanatory. Root partition describes where the / partition is.
Second line starts the usb support and loads uInitrd and uImage to their temporary locations on the NAND flash.
The third line is to basically execute everything.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
U-Boot 2016.11+dfsg1-3 (Dec 22 2016 - 04:44:44 +0000)
Marvell-GuruPlug
SoC: Kirkwood 88F6281_A1
DRAM: 512 MiB
WARNING: Caches not enabled
NAND: 512 MiB
In: serial
Out: serial
Err: serial
Net: egiga0, egiga1
88E1121 Initialized on egiga0
88E1121 Initialized on egiga1
IDE: ide_preinit failed
Hit any key to stop autoboot: 0
starting USB...
USB0: USB EHCI 1.00
scanning bus 0 for devices... 3 USB Device(s) found
scanning usb for storage devices... Device NOT ready
Request Sense returned 02 3A 00
2 Storage Device(s) found
2055066 bytes read in 386 ms (5.1 MiB/s)
12176847 bytes read in 1226 ms (9.5 MiB/s)
## Booting kernel from Legacy Image at 0a000000 ...
Image Name: kernel 4.9.0-1-marvell
Created: 2017-02-13 18:56:35 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2055002 Bytes = 2 MiB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 0b000000 ...
Image Name: ramdisk 4.9.0-1-marvell
Created: 2017-02-13 18:56:36 UTC
Image Type: ARM Linux RAMDisk Image (uncompressed)
Data Size: 12176783 Bytes = 11.6 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Loading Kernel Image ... OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.9.0-1-marvell (debian-kernel@lists.debian.org) (gcc ver)
[ 0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=0005397f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt:Machine model: Globalscale Technologies Guruplug Server Plus
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 138
[...
|
Everything seems to be booting fine.