Difference between revisions of "DockStar"

From FnordWiki
Jump to navigation Jump to search
 
(16 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  +
= What is a DockStar? =
== Dockstar? ==
 
 
[http://www.seagate.com/ Seagate's] [http://www.seagate.com/www/en-us/products/network_storage/freeagent_dockstar/ Free Agent DockStar] is a very cheap, nifty little Linux machine with the following features:
 
[http://www.seagate.com/ Seagate's] [http://www.seagate.com/www/en-us/products/network_storage/freeagent_dockstar/ Free Agent DockStar] is a very cheap, nifty little Linux machine with the following features:
 
* 1.2 GHz ARM processor
 
* 1.2 GHz ARM processor
* 3 USB 2.0 ports
+
* 4 powered USB 2.0 ports broken out like so:
* 1 USB 2.0 port with a little mini connector allowing the user to just plug in a Seagate FreeAgent Go hard drive
+
** 1 port with a USB mini A connector centered in the drive cradle section of the case allowing the user to just plug in a Seagate FreeAgent Go hard drive
  +
** 3 ports with type A connectors (as you'd find on a mouse, keyboard, or USB flash drive)
 
* 1 Gigabit Ethernet NIC
 
* 1 Gigabit Ethernet NIC
 
* $20 price tag
 
* $20 price tag
  +
* HiFN 795x crypto accelerator
* User replacable firmware (it comes with [http://www.pogoplug.com/ PogoPlug] from the factory -- the device is intended as a NAS)
 
  +
* User replacable firmware (it comes with [http://www.pogoplug.com/ PogoPlug] from the factory — the device is intended as a NAS)
   
 
It does have a few small annoyances:
 
It does have a few small annoyances:
* Only 128 Mbytes of RAM (256 or 512 would be '''SO''' much nicer)
+
* Only 128 Mbytes of RAM (256 or 512 would be '''so''' much nicer)
* No battery backed clock
+
* No battery backed clock (but that's what NTP is for, anyway)
* Serial console is hard to get to (but the bootloader and Linux can use the normal Linux network console setup)
+
* Serial console is (somewhat) hard to get to (but the bootloader and Linux can use the normal Linux network console setup)
  +
* It runs PogoPlug instead of a general purpose OS.
  +
But it costs $20. So these annoyances are overlookable.
   
== Debianizing a DockStar ==
+
= DockStar OS options =
 
There are a number of options for replacing the PogoPlug OS on a DockStar: [http://www.openwrt.org/ OpenWRT] supports them. [http://plugapps.com/index.php5?title=Portal:Plugbox_Linux Plugbox Linux] does, too. But I'm a [http://www.debian.org/ Debian] fan, so that's what I'm running on mine.
 
There are a number of options for replacing the PogoPlug OS on a DockStar: [http://www.openwrt.org/ OpenWRT] supports them. [http://plugapps.com/index.php5?title=Portal:Plugbox_Linux Plugbox Linux] does, too. But I'm a [http://www.debian.org/ Debian] fan, so that's what I'm running on mine.
   
[http://jeff.doozan.com/debian/ Jeff Doozan] has done much of the legwork making Debian an easy option on a Dockstar. He has a procedure for installing a new bootloader, kernel, and root filesystem into the Dockstar's flash and bootstrapping a Debian installation onto a USB mass storage device attached to the Dockstar (thumb drive, jump drive, FreeAgent Go, portable USB hard drive or whatever)
+
[http://jeff.doozan.com/debian/ Jeff Doozan] has done much of the legwork making Debian an easy option on a Dockstar. He has a procedure for installing a new bootloader, kernel, and root filesystem into the Dockstar's flash and bootstrapping a Debian installation onto a USB mass storage device attached to the Dockstar (thumb drive, jump drive, FreeAgent Go, portable USB hard drive or whatever) without breaking open the case and fiddling with a serial console.
  +
  +
= Before Installing Debian =
  +
Here's the procedure I used to used when putting mine together:
  +
# buy a Dockstar (actually used some Amazon credits to buy three of them for $20 each a few months ago)
  +
# get some USB flash drives (found some 4Gbyte Sandisk Cruzers for $8 each at a local office supply store. Wonder why the 8Gbyte USB drives cost 4 times more instead of 2 times more)
  +
# unbox Dockstar, note Ethernet MAC address from sticker on bottom of the case
  +
# pick an IP address to give it (internal home network is 172.16.0.0/24 and I don't want the Pogoplug firmware phoning home before I've replaced it with Debian)
  +
# set it up with a static IP address on the home network (quick edit to /etc/dhcp/dhcpd.conf)
  +
# prevent IP from the dockstar from reaching the internet (<code>sudo iptables -I FORWARD -s 172.16.0.200 -j REJECT</code> on the router)
  +
# attach Dockstar to Ethernet switch, power it on, wait until it is pingable
  +
# Make sure we can log in to it: <code>ssh root@172.16.0.200</code> (password should be <code>stxadmin</code>)
  +
# Kill the Pogoplug proprietary processes running on the machine: <code># killall -9 hbwd; killall -9 hbplug</code>
  +
# Make a backup of the factory firmware (instructions can be found at [http://ahsoftware.de/dockstar/ How to brick your Dockstar and void the warranty]
  +
  +
= Installing Debian =
  +
[http://jeff.doozan.com/debian/ Jeff Doozan] has done me a great service here. At his web site, you'll find instructions on getting Debian installed on a USB mass storage device (a 4Gbyte Sansisk Cruzer in my case). Here are some notes on my installation:
  +
* The Pogoplug OS is used to perform the installation on the Dockstar. It needs to be working first.
  +
* The Pogoplug OS needs internet access to download the Debian bits. But we still don't want Pogoplug phoning home, so be sure the <code>hbwd</code> and <code>hbplug</code> processes aren't running before allowing the device to have internet access.
  +
* Jeff Doozan recommends making the Debian filesystem at least 512Mbytes in size. The base OS installed by debootstrap consumes about 300 Mbytes of space. I made mine 512Mbytes, followed by 512Mbytes of swap partition. Later on, I'll make the swap partition into a backup root partition, turn the remaining free space into an LVM physical volume, and slice that up until I'm happy with it.
  +
* The installation target here is a 4Gbyte Sandisk Cruzer USB flash drive. It has been partitions like so:
  +
# fdisk -lu /dev/sda
  +
  +
Disk /dev/sda: 4000 MB, 4000317440 bytes
  +
64 heads, 32 sectors/track, 3815 cylinders, total 7813120 sectors
  +
Units = sectors of 1 * 512 = 512 bytes
  +
Sector size (logical/physical): 512 bytes / 512 bytes
  +
I/O size (minimum/optimal): 512 bytes / 512 bytes
  +
Disk identifier: 0x00000000
  +
  +
Device Boot Start End Blocks Id System
  +
/dev/sda1 * 2048 1050623 524288 83 Linux
  +
/dev/sda2 1050624 2099199 524288 83 Linux
  +
/dev/sda3 2099200 7813119 2856960 8e Linux LVM
  +
#
  +
(Note that this partition layout does not show the <code>sda2</code> device as being a swap partition. This was changed after the installation was done. Post-installation, <code>sda2</code> was made into a regular filesystem with the backup insatllation on it. This allows me to specify that <code>/dev/sda2</code> should be my kernel's root device (instead of <code>/dev/sda1</code>) and fix whatever brain damage I've inflicted on it.
  +
* Remove the <code>iptables</code> firewall rule that prevents the Dockstar from reaching the internet (Run <code>sudo iptables -D FORWARD -s 172.16.0.200 -j REJECT</code> on the router.)
  +
* After the USB flash drive has been partitioned, it's time to run Jeff Doozan's installer:
  +
cd /tmp
  +
wget http://jeff.doozan.com/debian/dockstar.debian-squeeze.sh
  +
chmod +x dockstar.debian-squeeze.sh
  +
export PATH=$PATH:/usr/sbin:/sbin # The Pogoplug OS doesn't include /usr/sbin or /sbin in root's PATH
  +
./dockstar.debian-squeeze.sh
  +
(The <code>dockstar.debian.squeeze.sh</code> script puts an ext2 filesystem in <code>/dev/sda1</code>, uses debootstrap to put a base Debian installation on it. It also puts an unlocked u-Boot bootloader, a Debian kernel image, and a tiny recovery filesystem into the Dockstar's NAND flash.)
  +
  +
== Installation transcript ==
  +
Here is a transcript of an installation being performed on canopus, a DockStar with Ethernet MAC address 00:10:75:1a:0e:a6:
  +
-bash-3.2# ./dockstar.debian-squeeze.sh
  +
  +
  +
!!!!!! DANGER DANGER DANGER DANGER DANGER DANGER !!!!!!
  +
  +
This script will replace the bootloader on /dev/mtd0.
  +
  +
If you lose power while the bootloader is being flashed,
  +
your device could be left in an unusable state.
  +
  +
  +
This script will configure your Dockstar to boot Debian Squeeze
  +
from a USB device. Before running this script, you should have
  +
used fdisk to create the following partitions:
  +
  +
/dev/sda1 (Linux ext2, at least 400MB)
  +
/dev/sda2 (Linux swap, recommended 256MB)
  +
  +
  +
This script will DESTROY ALL EXISTING DATA on /dev/sda1
  +
Please double check that the device on /dev/sda1 is the correct device.
  +
  +
By typing ok, you agree to assume all liabilities and risks
  +
associated with running this installer.
  +
If everything looks good, type 'ok' to continue: ok
  +
Installing Bootloader
  +
# checking for /usr/sbin/nandwrite...
  +
# checking for /usr/sbin/nanddump...
  +
# checking for /usr/sbin/flash_erase...
  +
# checking for /usr/sbin/fw_printenv...
  +
# checking for /etc/fw_env.config...
  +
  +
# Validating existing uBoot...
  +
Block size 131072, page size 2048, OOB size 64
  +
Dumping data starting at 0x00000000 and ending at 0x00080000...
  +
Connecting to jeff.doozan.com (69.163.187.226:80)
  +
valid-uboot.md5 100% |*************************************************************************************************************| 756 --:--:-- ETA
  +
## Valid uBoot detected: [dockstar jeff-2010-10-23-current ebd566de30c6521e65fb1255415c037f pogov1 jeff-2010-10-23-current]
  +
## The newest uBoot is already installed on mtd0.
  +
  +
# uBoot installation has completed successfully.
  +
# checking for /sbin/mke2fs...
  +
  +
# Installing /sbin/mke2fs...
  +
Connecting to jeff.doozan.com (69.163.187.226:80)
  +
mke2fs.md5 100% |*************************************************************************************************************| 41 --:--:-- ETA
  +
Connecting to jeff.doozan.com (69.163.187.226:80)
  +
mke2fs 100% |*************************************************************************************************************| 393k 00:00:00 ETA
  +
# Successfully installed /sbin/mke2fs.
  +
mke2fs 1.41.12 (17-May-2010)
  +
Filesystem label=
  +
OS type: Linux
  +
Block size=4096 (log=2)
  +
Fragment size=4096 (log=2)
  +
Stride=0 blocks, Stripe width=0 blocks
  +
32768 inodes, 131072 blocks
  +
6553 blocks (5.00%) reserved for the super user
  +
First data block=0
  +
Maximum filesystem blocks=134217728
  +
4 block groups
  +
32768 blocks per group, 32768 fragments per group
  +
8192 inodes per group
  +
Superblock backups stored on blocks:
  +
32768, 98304
  +
  +
Writing inode tables: done
  +
Writing superblocks and filesystem accounting information: done
  +
  +
This filesystem will be automatically checked every 25 mounts or
  +
180 days, whichever comes first. Use tune2fs -c or -i to override.
  +
Setting up swapspace version 1, size = 536866816 bytes
  +
  +
  +
# Starting debootstrap installation
  +
I: Retrieving Release
  +
I: Retrieving Packages
  +
I: Validating Packages
  +
I: Resolving dependencies of required packages...
  +
I: Resolving dependencies of base packages...
  +
I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2
  +
I: Found additional base dependencies: adduser cpio debian-archive-keyring devio gnupg gpgv initramfs-tools klibc-utils libbsd0 libcap2 libedit2 libgssapi-krb5-2 libk5crypto3 libkeyutils1 libklibc libkrb5-3 libkrb5support0 libncursesw5 libreadline6 libssl0.9.8 libudev0 libusb-0.1-4 libuuid-perl libwrap0 linux-base linux-image-2.6.32-5-kirkwood openssh-blacklist openssh-client procps readline-common vim-common
  +
I: Checking component main on http://cdn.debian.net/debian...
  +
I: Retrieving libacl1
  +
I: Validating libacl1
  +
I: Retrieving adduser
  +
I: Validating adduser
  +
I: Retrieving apt
  +
I: Validating apt
  +
I: Retrieving libattr1
  +
I: Validating libattr1
  +
I: Retrieving base-files
  +
I: Validating base-files
  +
I: Retrieving base-passwd
  +
I: Validating base-passwd
  +
I: Retrieving bash
  +
I: Validating bash
  +
I: Retrieving libbz2-1.0
  +
I: Validating libbz2-1.0
  +
I: Retrieving coreutils
  +
I: Validating coreutils
  +
I: Retrieving cpio
  +
I: Validating cpio
  +
I: Retrieving dash
  +
I: Validating dash
  +
I: Retrieving libdb4.8
  +
I: Validating libdb4.8
  +
I: Retrieving debconf-i18n
  +
I: Validating debconf-i18n
  +
I: Retrieving debconf
  +
I: Validating debconf
  +
I: Retrieving debian-archive-keyring
  +
I: Validating debian-archive-keyring
  +
I: Retrieving debianutils
  +
I: Validating debianutils
  +
I: Retrieving devio
  +
I: Validating devio
  +
I: Retrieving dhcpcd
  +
I: Validating dhcpcd
  +
I: Retrieving diffutils
  +
I: Validating diffutils
  +
I: Retrieving dpkg
  +
I: Validating dpkg
  +
I: Retrieving e2fslibs
  +
I: Validating e2fslibs
  +
I: Retrieving e2fsprogs
  +
I: Validating e2fsprogs
  +
I: Retrieving libcomerr2
  +
I: Validating libcomerr2
  +
I: Retrieving libss2
  +
I: Validating libss2
  +
I: Retrieving libc-bin
  +
I: Validating libc-bin
  +
I: Retrieving libc6
  +
I: Validating libc6
  +
I: Retrieving findutils
  +
I: Validating findutils
  +
I: Retrieving flash-kernel
  +
I: Validating flash-kernel
  +
I: Retrieving gcc-4.4-base
  +
I: Validating gcc-4.4-base
  +
I: Retrieving libgcc1
  +
I: Validating libgcc1
  +
I: Retrieving libstdc++6
  +
I: Validating libstdc++6
  +
I: Retrieving gnupg
  +
I: Validating gnupg
  +
I: Retrieving gpgv
  +
I: Validating gpgv
  +
I: Retrieving grep
  +
I: Validating grep
  +
I: Retrieving gzip
  +
I: Validating gzip
  +
I: Retrieving hostname
  +
I: Validating hostname
  +
I: Retrieving ifupdown
  +
I: Validating ifupdown
  +
I: Retrieving initramfs-tools
  +
I: Validating initramfs-tools
  +
I: Retrieving insserv
  +
I: Validating insserv
  +
I: Retrieving iproute
  +
I: Validating iproute
  +
I: Retrieving iputils-ping
  +
I: Validating iputils-ping
  +
I: Retrieving libkeyutils1
  +
I: Validating libkeyutils1
  +
I: Retrieving klibc-utils
  +
I: Validating klibc-utils
  +
I: Retrieving libklibc
  +
I: Validating libklibc
  +
I: Retrieving libgssapi-krb5-2
  +
I: Validating libgssapi-krb5-2
  +
I: Retrieving libk5crypto3
  +
I: Validating libk5crypto3
  +
I: Retrieving libkrb5-3
  +
I: Validating libkrb5-3
  +
I: Retrieving libkrb5support0
  +
I: Validating libkrb5support0
  +
I: Retrieving linux-base
  +
I: Validating linux-base
  +
I: Retrieving linux-image-2.6.32-5-kirkwood
  +
I: Validating linux-image-2.6.32-5-kirkwood
  +
I: Retrieving linux-image-2.6-kirkwood
  +
I: Validating linux-image-2.6-kirkwood
  +
I: Retrieving lsb-base
  +
I: Validating lsb-base
  +
I: Retrieving libbsd0
  +
I: Validating libbsd0
  +
I: Retrieving libcap2
  +
I: Validating libcap2
  +
I: Retrieving libedit2
  +
I: Validating libedit2
  +
I: Retrieving liblocale-gettext-perl
  +
I: Validating liblocale-gettext-perl
  +
I: Retrieving libselinux1
  +
I: Validating libselinux1
  +
I: Retrieving libsepol1
  +
I: Validating libsepol1
  +
I: Retrieving libtext-charwidth-perl
  +
I: Validating libtext-charwidth-perl
  +
I: Retrieving libtext-iconv-perl
  +
I: Validating libtext-iconv-perl
  +
I: Retrieving libtext-wrapi18n-perl
  +
I: Validating libtext-wrapi18n-perl
  +
I: Retrieving libusb-0.1-4
  +
I: Validating libusb-0.1-4
  +
I: Retrieving libuuid-perl
  +
I: Validating libuuid-perl
  +
I: Retrieving mawk
  +
I: Validating mawk
  +
I: Retrieving module-init-tools
  +
I: Validating module-init-tools
  +
I: Retrieving libncurses5
  +
I: Validating libncurses5
  +
I: Retrieving libncursesw5
  +
I: Validating libncursesw5
  +
I: Retrieving ncurses-base
  +
I: Validating ncurses-base
  +
I: Retrieving ncurses-bin
  +
I: Validating ncurses-bin
  +
I: Retrieving net-tools
  +
I: Validating net-tools
  +
I: Retrieving netbase
  +
I: Validating netbase
  +
I: Retrieving ntpdate
  +
I: Validating ntpdate
  +
I: Retrieving openssh-blacklist
  +
I: Validating openssh-blacklist
  +
I: Retrieving openssh-client
  +
I: Validating openssh-client
  +
I: Retrieving openssh-server
  +
I: Validating openssh-server
  +
I: Retrieving libssl0.9.8
  +
I: Validating libssl0.9.8
  +
I: Retrieving libpam-modules
  +
I: Validating libpam-modules
  +
I: Retrieving libpam-runtime
  +
I: Validating libpam-runtime
  +
I: Retrieving libpam0g
  +
I: Validating libpam0g
  +
I: Retrieving perl-base
  +
I: Validating perl-base
  +
I: Retrieving procps
  +
I: Validating procps
  +
I: Retrieving libreadline6
  +
I: Validating libreadline6
  +
I: Retrieving readline-common
  +
I: Validating readline-common
  +
I: Retrieving sed
  +
I: Validating sed
  +
I: Retrieving sensible-utils
  +
I: Validating sensible-utils
  +
I: Retrieving login
  +
I: Validating login
  +
I: Retrieving passwd
  +
I: Validating passwd
  +
I: Retrieving libslang2
  +
I: Validating libslang2
  +
I: Retrieving initscripts
  +
I: Validating initscripts
  +
I: Retrieving sysv-rc
  +
I: Validating sysv-rc
  +
I: Retrieving sysvinit-utils
  +
I: Validating sysvinit-utils
  +
I: Retrieving sysvinit
  +
I: Validating sysvinit
  +
I: Retrieving tar
  +
I: Validating tar
  +
I: Retrieving libwrap0
  +
I: Validating libwrap0
  +
I: Retrieving libudev0
  +
I: Validating libudev0
  +
I: Retrieving bsdutils
  +
I: Validating bsdutils
  +
I: Retrieving libblkid1
  +
I: Validating libblkid1
  +
I: Retrieving libuuid1
  +
I: Validating libuuid1
  +
I: Retrieving mount
  +
I: Validating mount
  +
I: Retrieving liblzma2
  +
I: Validating liblzma2
  +
I: Retrieving tzdata
  +
I: Validating tzdata
  +
I: Retrieving uboot-envtools
  +
I: Validating uboot-envtools
  +
I: Retrieving uboot-mkimage
  +
I: Validating uboot-mkimage
  +
I: Retrieving udev
  +
I: Validating udev
  +
I: Retrieving util-linux
  +
I: Validating util-linux
  +
I: Retrieving vim-common
  +
I: Validating vim-common
  +
I: Retrieving vim-tiny
  +
I: Validating vim-tiny
  +
I: Retrieving wget
  +
I: Validating wget
  +
I: Retrieving xz-utils
  +
I: Validating xz-utils
  +
I: Retrieving zlib1g
  +
I: Validating zlib1g
  +
I: Chosen extractor for .deb packages: ar
  +
I: Extracting libacl1...
  +
I: Extracting libattr1...
  +
I: Extracting base-files...
  +
I: Extracting base-passwd...
  +
I: Extracting bash...
  +
I: Extracting libbz2-1.0...
  +
I: Extracting coreutils...
  +
I: Extracting dash...
  +
I: Extracting libdb4.8...
  +
I: Extracting debconf-i18n...
  +
I: Extracting debconf...
  +
I: Extracting debianutils...
  +
I: Extracting diffutils...
  +
I: Extracting dpkg...
  +
I: Extracting e2fslibs...
  +
I: Extracting e2fsprogs...
  +
I: Extracting libcomerr2...
  +
I: Extracting libss2...
  +
I: Extracting libc-bin...
  +
I: Extracting libc6...
  +
I: Extracting findutils...
  +
I: Extracting gcc-4.4-base...
  +
I: Extracting libgcc1...
  +
I: Extracting libstdc++6...
  +
I: Extracting grep...
  +
I: Extracting gzip...
  +
I: Extracting hostname...
  +
I: Extracting insserv...
  +
I: Extracting lsb-base...
  +
I: Extracting liblocale-gettext-perl...
  +
I: Extracting libselinux1...
  +
I: Extracting libsepol1...
  +
I: Extracting libtext-charwidth-perl...
  +
I: Extracting libtext-iconv-perl...
  +
I: Extracting libtext-wrapi18n-perl...
  +
I: Extracting mawk...
  +
I: Extracting libncurses5...
  +
I: Extracting ncurses-base...
  +
I: Extracting ncurses-bin...
  +
I: Extracting libpam-modules...
  +
I: Extracting libpam-runtime...
  +
I: Extracting libpam0g...
  +
I: Extracting perl-base...
  +
I: Extracting sed...
  +
I: Extracting sensible-utils...
  +
I: Extracting login...
  +
I: Extracting passwd...
  +
I: Extracting libslang2...
  +
I: Extracting initscripts...
  +
I: Extracting sysv-rc...
  +
I: Extracting sysvinit-utils...
  +
I: Extracting sysvinit...
  +
I: Extracting tar...
  +
I: Extracting bsdutils...
  +
I: Extracting libblkid1...
  +
I: Extracting libuuid1...
  +
I: Extracting mount...
  +
I: Extracting liblzma2...
  +
I: Extracting tzdata...
  +
I: Extracting util-linux...
  +
I: Extracting xz-utils...
  +
I: Extracting zlib1g...
  +
I: Installing core packages...
  +
I: Unpacking required packages...
  +
I: Unpacking libacl1...
  +
I: Unpacking libattr1...
  +
I: Unpacking base-files...
  +
I: Unpacking base-passwd...
  +
I: Unpacking bash...
  +
I: Unpacking libbz2-1.0...
  +
I: Unpacking coreutils...
  +
I: Unpacking dash...
  +
I: Unpacking libdb4.8...
  +
I: Unpacking debconf-i18n...
  +
I: Unpacking debconf...
  +
I: Unpacking debianutils...
  +
I: Unpacking diffutils...
  +
I: Unpacking dpkg...
  +
I: Unpacking e2fslibs...
  +
I: Unpacking e2fsprogs...
  +
I: Unpacking libcomerr2...
  +
I: Unpacking libss2...
  +
I: Unpacking libc-bin...
  +
I: Unpacking libc6...
  +
I: Unpacking findutils...
  +
I: Unpacking gcc-4.4-base...
  +
I: Unpacking libgcc1...
  +
I: Unpacking libstdc++6...
  +
I: Unpacking grep...
  +
I: Unpacking gzip...
  +
I: Unpacking hostname...
  +
I: Unpacking insserv...
  +
I: Unpacking lsb-base...
  +
I: Unpacking liblocale-gettext-perl...
  +
I: Unpacking libselinux1...
  +
I: Unpacking libsepol1...
  +
I: Unpacking libtext-charwidth-perl...
  +
I: Unpacking libtext-iconv-perl...
  +
I: Unpacking libtext-wrapi18n-perl...
  +
I: Unpacking mawk...
  +
I: Unpacking libncurses5...
  +
I: Unpacking ncurses-base...
  +
I: Unpacking ncurses-bin...
  +
I: Unpacking libpam-modules...
  +
I: Unpacking libpam-runtime...
  +
I: Unpacking libpam0g...
  +
I: Unpacking perl-base...
  +
I: Unpacking sed...
  +
I: Unpacking sensible-utils...
  +
I: Unpacking login...
  +
I: Unpacking passwd...
  +
I: Unpacking libslang2...
  +
I: Unpacking initscripts...
  +
I: Unpacking sysv-rc...
  +
I: Unpacking sysvinit-utils...
  +
I: Unpacking sysvinit...
  +
I: Unpacking tar...
  +
I: Unpacking bsdutils...
  +
I: Unpacking libblkid1...
  +
I: Unpacking libuuid1...
  +
I: Unpacking mount...
  +
I: Unpacking liblzma2...
  +
I: Unpacking tzdata...
  +
I: Unpacking util-linux...
  +
I: Unpacking xz-utils...
  +
I: Unpacking zlib1g...
  +
I: Configuring required packages...
  +
I: Configuring ncurses-base...
  +
I: Configuring sensible-utils...
  +
I: Configuring libc-bin...
  +
I: Configuring gcc-4.4-base...
  +
I: Configuring libc6...
  +
I: Configuring debianutils...
  +
I: Configuring bsdutils...
  +
I: Configuring libsepol1...
  +
I: Configuring libgcc1...
  +
I: Configuring libncurses5...
  +
I: Configuring libattr1...
  +
I: Configuring e2fslibs...
  +
I: Configuring base-passwd...
  +
I: Configuring libcomerr2...
  +
I: Configuring mawk...
  +
I: Configuring libdb4.8...
  +
I: Configuring hostname...
  +
I: Configuring libacl1...
  +
I: Configuring libslang2...
  +
I: Configuring libss2...
  +
I: Configuring liblzma2...
  +
I: Configuring insserv...
  +
I: Configuring gzip...
  +
I: Configuring libbz2-1.0...
  +
I: Configuring libselinux1...
  +
I: Configuring libstdc++6...
  +
I: Configuring coreutils...
  +
I: Configuring ncurses-bin...
  +
I: Configuring diffutils...
  +
I: Configuring tar...
  +
I: Configuring zlib1g...
  +
I: Configuring base-files...
  +
I: Configuring xz-utils...
  +
I: Configuring dpkg...
  +
I: Configuring sysvinit-utils...
  +
I: Configuring dash...
  +
I: Configuring perl-base...
  +
I: Configuring libtext-iconv-perl...
  +
I: Configuring sed...
  +
I: Configuring grep...
  +
I: Configuring findutils...
  +
I: Configuring liblocale-gettext-perl...
  +
I: Configuring bash...
  +
I: Configuring libtext-charwidth-perl...
  +
I: Configuring libtext-wrapi18n-perl...
  +
I: Configuring lsb-base...
  +
I: Configuring debconf-i18n...
  +
I: Configuring debconf...
  +
I: Configuring libpam0g...
  +
I: Configuring sysv-rc...
  +
I: Configuring libpam-modules...
  +
I: Configuring tzdata...
  +
I: Configuring passwd...
  +
I: Configuring libpam-runtime...
  +
I: Configuring initscripts...
  +
I: Configuring login...
  +
I: Configuring libuuid1...
  +
I: Configuring sysvinit...
  +
I: Configuring libblkid1...
  +
I: Configuring util-linux...
  +
I: Configuring mount...
  +
I: Configuring e2fsprogs...
  +
I: Unpacking the base system...
  +
I: Unpacking adduser...
  +
I: Unpacking apt...
  +
I: Unpacking cpio...
  +
I: Unpacking debian-archive-keyring...
  +
I: Unpacking devio...
  +
I: Unpacking dhcpcd...
  +
I: Unpacking flash-kernel...
  +
I: Unpacking gnupg...
  +
I: Unpacking gpgv...
  +
I: Unpacking ifupdown...
  +
I: Unpacking initramfs-tools...
  +
I: Unpacking iproute...
  +
I: Unpacking iputils-ping...
  +
I: Unpacking libkeyutils1...
  +
I: Unpacking klibc-utils...
  +
I: Unpacking libklibc...
  +
I: Unpacking libgssapi-krb5-2...
  +
I: Unpacking libk5crypto3...
  +
I: Unpacking libkrb5-3...
  +
I: Unpacking libkrb5support0...
  +
I: Unpacking linux-base...
  +
I: Unpacking linux-image-2.6.32-5-kirkwood...
  +
I: Unpacking linux-image-2.6-kirkwood...
  +
I: Unpacking libbsd0...
  +
I: Unpacking libcap2...
  +
I: Unpacking libedit2...
  +
I: Unpacking libusb-0.1-4...
  +
I: Unpacking libuuid-perl...
  +
I: Unpacking module-init-tools...
  +
I: Unpacking libncursesw5...
  +
I: Unpacking net-tools...
  +
I: Unpacking netbase...
  +
I: Unpacking ntpdate...
  +
I: Unpacking openssh-blacklist...
  +
I: Unpacking openssh-client...
  +
I: Unpacking openssh-server...
  +
I: Unpacking libssl0.9.8...
  +
I: Unpacking procps...
  +
I: Unpacking libreadline6...
  +
I: Unpacking readline-common...
  +
I: Unpacking libwrap0...
  +
I: Unpacking libudev0...
  +
I: Unpacking uboot-envtools...
  +
I: Unpacking uboot-mkimage...
  +
I: Unpacking udev...
  +
I: Unpacking vim-common...
  +
I: Unpacking vim-tiny...
  +
I: Unpacking wget...
  +
I: Configuring the base system...
  +
I: Configuring uboot-envtools...
  +
I: Configuring module-init-tools...
  +
I: Configuring libusb-0.1-4...
  +
I: Configuring libssl0.9.8...
  +
I: Configuring vim-common...
  +
I: Configuring netbase...
  +
I: Configuring libudev0...
  +
I: Configuring adduser...
  +
I: Configuring libklibc...
  +
I: Configuring libuuid-perl...
  +
I: Configuring libkeyutils1...
  +
I: Configuring iproute...
  +
I: Configuring devio...
  +
I: Configuring klibc-utils...
  +
I: Configuring libkrb5support0...
  +
I: Configuring wget...
  +
I: Configuring net-tools...
  +
I: Configuring uboot-mkimage...
  +
I: Configuring libbsd0...
  +
I: Configuring linux-base...
  +
I: Configuring libncursesw5...
  +
I: Configuring openssh-blacklist...
  +
I: Configuring iputils-ping...
  +
I: Configuring libedit2...
  +
I: Configuring udev...
  +
I: Configuring cpio...
  +
I: Configuring vim-tiny...
  +
I: Configuring readline-common...
  +
I: Configuring libcap2...
  +
I: Configuring libwrap0...
  +
I: Configuring initramfs-tools...
  +
I: Configuring procps...
  +
I: Configuring dhcpcd...
  +
I: Configuring flash-kernel...
  +
I: Configuring libk5crypto3...
  +
I: Configuring ifupdown...
  +
I: Configuring libreadline6...
  +
I: Configuring linux-image-2.6.32-5-kirkwood...
  +
I: Configuring ntpdate...
  +
I: Configuring libkrb5-3...
  +
I: Configuring gpgv...
  +
I: Configuring linux-image-2.6-kirkwood...
  +
I: Configuring libgssapi-krb5-2...
  +
I: Configuring gnupg...
  +
I: Configuring debian-archive-keyring...
  +
I: Configuring openssh-client...
  +
I: Configuring apt...
  +
I: Configuring openssh-server...
  +
I: Configuring initramfs-tools...
  +
I: Base system installed successfully.
  +
Image Name: Linux-2.6.32-5-kirkwood
  +
Created: Fri Dec 31 17:58:41 2010
  +
Image Type: ARM Linux Kernel Image (uncompressed)
  +
Data Size: 1434156 Bytes = 1400.54 kB = 1.37 MB
  +
Load Address: 0x00008000
  +
Entry Point: 0x00008000
  +
Image Name: initramfs-2.6.32-5-kirkwood
  +
Created: Fri Dec 31 17:58:42 2010
  +
Image Type: ARM Linux RAMDisk Image (gzip compressed)
  +
Data Size: 4736810 Bytes = 4625.79 kB = 4.52 MB
  +
Load Address: 0x00000000
  +
Entry Point: 0x00000000
  +
  +
  +
  +
  +
Installation complete
  +
  +
You can now reboot your device into Debian.
  +
If your device does not start Debian after rebooting,
  +
you may need to restart the device by disconnecting the power.
  +
  +
The new root password is 'root' Please change it immediately after
  +
logging in.
  +
  +
Reboot now? [Y/n]
  +
  +
Tell it to reboot, and Debian will be up and running. After restarting, this machine will have a different SSH host key. You'll have to remove the old one from your ~/.ssh/known_hosts file before connecting to it again. As the installer notes, the password for <code>root</code> is now <code>root</code> and should be changed.
  +
  +
== Installation is done, how do things look now? ==
  +
Disk layout:
  +
root@debian:~# fdisk -l -u
  +
  +
Disk /dev/sda: 4000 MB, 4000317440 bytes
  +
64 heads, 32 sectors/track, 3815 cylinders, total 7813120 sectors
  +
Units = sectors of 1 * 512 = 512 bytes
  +
Sector size (logical/physical): 512 bytes / 512 bytes
  +
I/O size (minimum/optimal): 512 bytes / 512 bytes
  +
Disk identifier: 0x9a198ead
  +
  +
Device Boot Start End Blocks Id System
  +
/dev/sda1 * 2048 1050623 524288 83 Linux
  +
/dev/sda2 1050624 2099199 524288 83 Linux
  +
/dev/sda3 2099200 7813119 2856960 8e Linux LVM
  +
root@debian:~#
  +
  +
Disk usage:
  +
root@debian:~# df
  +
Filesystem 1K-blocks Used Available Use% Mounted on
  +
rootfs 516040 260948 228880 54% /
  +
none 60492 36 60456 1% /dev
  +
/dev/sda1 516040 260948 228880 54% /
  +
tmpfs 62864 0 62864 0% /lib/init/rw
  +
tmpfs 62864 0 62864 0% /dev/shm
  +
tmpfs 62864 0 62864 0% /tmp
  +
root@debian:~#
  +
  +
Installed Packages:
  +
root@debian:~# dpkg -l
  +
Desired=Unknown/Install/Remove/Purge/Hold
  +
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
  +
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
  +
||/ Name Version Description
  +
+++-======================================-===========================-===================================================================
  +
ii adduser 3.112+nmu2 add and remove users and groups
  +
ii apt 0.8.10 Advanced front-end for dpkg
  +
ii base-files 5.10 Debian base system miscellaneous files
  +
ii base-passwd 3.5.22 Debian base system master password and group files
  +
ii bash 4.1-3 The GNU Bourne Again SHell
  +
ii bsdutils 1:2.17.2-5 Basic utilities from 4.4BSD-Lite
  +
ii coreutils 8.5-1 GNU core utilities
  +
ii cpio 2.11-4 GNU cpio -- a program to manage archives of files
  +
ii dash 0.5.5.1-7.4 POSIX-compliant shell
  +
ii debconf 1.5.36 Debian configuration management system
  +
ii debconf-i18n 1.5.36 full internationalization support for debconf
  +
ii debian-archive-keyring 2010.08.28 GnuPG archive keys of the Debian archive
  +
ii debianutils 3.4 Miscellaneous utilities specific to Debian
  +
ii devio 1.2-1+b1 correctly read (or write) a region of a block device
  +
ii dhcpcd 1:3.2.3-5 DHCP client for automatically configuring IPv4 networking
  +
ii diffutils 1:3.0-1 File comparison utilities
  +
ii dpkg 1.15.8.5 Debian package management system
  +
ii e2fslibs 1.41.12-2 ext2/ext3/ext4 file system libraries
  +
ii e2fsprogs 1.41.12-2 ext2/ext3/ext4 file system utilities
  +
ii findutils 4.4.2-1+b1 utilities for finding files--find, xargs
  +
ii flash-kernel 2.37 utility to make certain embedded devices bootable
  +
ii gcc-4.4-base 4.4.5-8 The GNU Compiler Collection (base package)
  +
ii gnupg 1.4.10-4 GNU privacy guard - a free PGP replacement
  +
ii gpgv 1.4.10-4 GNU privacy guard - signature verification tool
  +
ii grep 2.6.3-3 GNU grep, egrep and fgrep
  +
ii gzip 1.3.12-9 GNU compression utilities
  +
ii hostname 3.04 utility to set/show the host name or domain name
  +
ii ifupdown 0.6.10 high level tools to configure network interfaces
  +
ii initramfs-tools 0.98.7 tools for generating an initramfs
  +
ii initscripts 2.88dsf-13 scripts for initializing and shutting down the system
  +
ii insserv 1.14.0-2 Tool to organize boot sequence using LSB init.d script dependencies
  +
ii iproute 20100519-3 networking and traffic control tools
  +
ii iputils-ping 3:20100418-3 Tools to test the reachability of network hosts
  +
ii klibc-utils 1.5.20-1 small utilities built with klibc for early boot
  +
ii libacl1 2.2.49-4 Access control list shared library
  +
ii libattr1 1:2.4.44-2 Extended attribute shared library
  +
ii libblkid1 2.17.2-5 block device id library
  +
ii libbsd0 0.2.0-1 utility functions from BSD systems - shared library
  +
ii libbz2-1.0 1.0.5-6 high-quality block-sorting file compressor library - runtime
  +
ii libc-bin 2.11.2-7 Embedded GNU C Library: Binaries
  +
ii libc6 2.11.2-7 Embedded GNU C Library: Shared libraries
  +
ii libcap2 1:2.19-3 support for getting/setting POSIX.1e capabilities
  +
ii libcomerr2 1.41.12-2 common error description library
  +
ii libdb4.8 4.8.30-2 Berkeley v4.8 Database Libraries [runtime]
  +
ii libedit2 2.11-20080614-2 BSD editline and history libraries
  +
ii libgcc1 1:4.4.5-8 GCC support library
  +
ii libgssapi-krb5-2 1.8.3+dfsg-4 MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
  +
ii libk5crypto3 1.8.3+dfsg-4 MIT Kerberos runtime libraries - Crypto Library
  +
ii libkeyutils1 1.4-1 Linux Key Management Utilities (library)
  +
ii libklibc 1.5.20-1 minimal libc subset for use with initramfs
  +
ii libkrb5-3 1.8.3+dfsg-4 MIT Kerberos runtime libraries
  +
ii libkrb5support0 1.8.3+dfsg-4 MIT Kerberos runtime libraries - Support library
  +
ii liblocale-gettext-perl 1.05-6 Using libc functions for internationalization in Perl
  +
ii liblzma2 5.0.0-2 XZ-format compression library
  +
ii libncurses5 5.7+20100313-4 shared libraries for terminal handling
  +
ii libncursesw5 5.7+20100313-4 shared libraries for terminal handling (wide character support)
  +
ii libpam-modules 1.1.1-6.1 Pluggable Authentication Modules for PAM
  +
ii libpam-runtime 1.1.1-6.1 Runtime support for the PAM library
  +
ii libpam0g 1.1.1-6.1 Pluggable Authentication Modules library
  +
ii libreadline6 6.1-3 GNU readline and history libraries, run-time libraries
  +
ii libselinux1 2.0.96-1 SELinux runtime shared libraries
  +
ii libsepol1 2.0.41-1 SELinux library for manipulating binary security policies
  +
ii libslang2 2.2.2-4 The S-Lang programming library - runtime version
  +
ii libss2 1.41.12-2 command-line interface parsing library
  +
ii libssl0.9.8 0.9.8o-4 SSL shared libraries
  +
ii libstdc++6 4.4.5-8 The GNU Standard C++ Library v3
  +
ii libtext-charwidth-perl 0.04-6 get display widths of characters on the terminal
  +
ii libtext-iconv-perl 1.7-2 converts between character sets in Perl
  +
ii libtext-wrapi18n-perl 0.06-7 internationalized substitute of Text::Wrap
  +
ii libudev0 164-3 libudev shared library
  +
ii libusb-0.1-4 2:0.1.12-16 userspace USB programming library
  +
ii libuuid-perl 0.02-4 Perl extension for using UUID interfaces as defined in e2fsprogs
  +
ii libuuid1 2.17.2-5 Universally Unique ID library
  +
ii libwrap0 7.6.q-19 Wietse Venema's TCP wrappers library
  +
ii linux-base 2.6.32-29 Linux image base package
  +
ii linux-image-2.6-kirkwood 2.6.32+28 Linux 2.6 for Marvell Kirkwood (meta-package)
  +
ii linux-image-2.6.32-5-kirkwood 2.6.32-29 Linux 2.6.32 for Marvell Kirkwood
  +
ii login 1:4.1.4.2+svn3283-2 system login tools
  +
ii lsb-base 3.2-23.1 Linux Standard Base 3.2 init script functionality
  +
ii mawk 1.3.3-15 a pattern scanning and text processing language
  +
ii module-init-tools 3.12-1 tools for managing Linux kernel modules
  +
ii mount 2.17.2-5 Tools for mounting and manipulating filesystems
  +
ii ncurses-base 5.7+20100313-4 basic terminal type definitions
  +
ii ncurses-bin 5.7+20100313-4 terminal-related programs and man pages
  +
ii net-tools 1.60-23 The NET-3 networking toolkit
  +
ii netbase 4.44 Basic TCP/IP networking system
  +
ii ntpdate 1:4.2.6.p2+dfsg-1+b1 client for setting system time from NTP servers
  +
ii openssh-blacklist 0.4.1 list of default blacklisted OpenSSH RSA and DSA keys
  +
ii openssh-client 1:5.5p1-6 secure shell (SSH) client, for secure access to remote machines
  +
ii openssh-server 1:5.5p1-6 secure shell (SSH) server, for secure access from remote machines
  +
ii passwd 1:4.1.4.2+svn3283-2 change and administer password and group data
  +
ii perl-base 5.10.1-16 minimal Perl system
  +
ii procps 1:3.2.8-9 /proc file system utilities
  +
ii readline-common 6.1-3 GNU readline and history libraries, common files
  +
ii sed 4.2.1-7 The GNU sed stream editor
  +
ii sensible-utils 0.0.4 Utilities for sensible alternative selection
  +
ii sysv-rc 2.88dsf-13 System-V-like runlevel change mechanism
  +
ii sysvinit 2.88dsf-13 System-V-like init utilities
  +
ii sysvinit-utils 2.88dsf-13 System-V-like utilities
  +
ii tar 1.23-3 GNU version of the tar archiving utility
  +
ii tzdata 2010o-1 time zone and daylight-saving time data
  +
ii uboot-envtools 20081215-2 read/modify the environment for the bootloader U-Boot
  +
ii uboot-mkimage 0.4 generate kernel image for U-Boot
  +
ii udev 164-3 /dev/ and hotplug management daemon
  +
ii util-linux 2.17.2-5 Miscellaneous system utilities
  +
ii vim-common 2:7.2.445+hg~cb94c42c0e1a-1 Vi IMproved - Common files
  +
ii vim-tiny 2:7.2.445+hg~cb94c42c0e1a-1 Vi IMproved - enhanced vi editor - compact version
  +
ii wget 1.12-2.1 retrieves files from the web
  +
ii xz-utils 5.0.0-2 XZ-format compression utilities
  +
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime
  +
root@debian:~#
  +
  +
Firmware settings:
  +
root@debian:~# fw_printenv
  +
ethact=egiga0
  +
bootdelay=3
  +
baudrate=115200
  +
mainlineLinux=yes
  +
console=ttyS0,115200
  +
led_init=green blinking
  +
led_exit=green off
  +
led_error=orange blinking
  +
mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data)
  +
mtdids=nand0=orion_nand
  +
partition=nand0,2
  +
stdin=serial
  +
stdout=serial
  +
stderr=serial
  +
rescue_installed=0
  +
rescue_set_bootargs=setenv bootargs console=$console ubi.mtd=2 root=ubi0:rootfs ro rootfstype=ubifs $mtdparts $rescue_custom_params
  +
rescue_bootcmd=if test $rescue_installed -eq 1; then run rescue_set_bootargs; nand read.e 0x800000 0x100000 0x400000; bootm 0x800000; else run pogo_bootcmd; fi
  +
pogo_bootcmd=if fsload uboot-original-mtd0.kwb; then go 0x800200; fi
  +
force_rescue=0
  +
force_rescue_bootcmd=if test $force_rescue -eq 1 || ext2load usb 0:1 0x1700000 /rescueme 1 || fatload usb 0:1 0x1700000 /rescueme.txt 1; then run rescue_bootcmd; fi
  +
ubifs_mtd=3
  +
ubifs_set_bootargs=setenv bootargs console=$console ubi.mtd=$ubifs_mtd root=ubi0:rootfs rootfstype=ubifs $mtdparts $ubifs_custom_params
  +
ubifs_bootcmd=run ubifs_set_bootargs; if ubi part data && ubifsmount rootfs && ubifsload 0x800000 /boot/uImage && ubifsload 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; fi
  +
usb_scan=usb_scan_done=0;for scan in $usb_scan_list; do run usb_scan_$scan; if test $usb_scan_done -eq 0 && ext2load usb $usb 0x800000 /boot/uImage 1; then usb_scan_done=1; echo "Found bootable drive on usb $usb"; setenv usb_device $usb; setenv usb_root /dev/$dev; fi; done
  +
usb_scan_list=1 2 3 4
  +
usb_scan_1=usb=0:1 dev=sda1
  +
usb_scan_2=usb=1:1 dev=sdb1
  +
usb_scan_3=usb=2:1 dev=sdc1
  +
usb_scan_4=usb=3:1 dev=sdd1
  +
usb_init=run usb_scan
  +
usb_device=0:1
  +
usb_root=/dev/sda1
  +
usb_rootfstype=ext2
  +
usb_rootdelay=10
  +
usb_set_bootargs=setenv bootargs console=$console root=$usb_root rootdelay=$usb_rootdelay rootfstype=$usb_rootfstype $mtdparts $usb_custom_params
  +
usb_bootcmd=run usb_init; run usb_set_bootargs; run usb_boot
  +
usb_boot=mw 0x800000 0 1; ext2load usb $usb_device 0x800000 /boot/uImage; if ext2load usb $usb_device 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000;
  +
else bootm 0x800000; fi
  +
bootcmd=usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd; run pogo_bootcmd; reset
  +
ethaddr=00:10:75:1A:0E:A6
  +
arcNumber=2097
  +
root@debian:~#
  +
  +
  +
== Further customization ==
  +
These are steps I perform after the base OS is installed:
  +
* Change <code>root</code>'s password.
  +
* Tweak the DHCP client settings in /etc/default/dhcpcd:
  +
** Uncomment the <code>SET_DNS='yes'</code> line to allow the DHCP server's list of DNS servers to be written to your <code>/etc/resolv.conf</code> config file.
  +
** Uncomment the <code>SET_HOSTNAME='yes'</code> line to allow the DHCP server to set your DockStar's host name.
  +
** Uncomment the <code>SET_NTP='yes'</code> line to allow the DHCP server's list of NTP servers to be written to your <code>/etc/ntp.conf</code> config file.
  +
* Install a handful of useful packages: <code>apt-listchanges, debsums, dmsetup, hdparm, less, lvm2, man-db, mtd-utils, ntp, pciutils, perl, python, rsyslog, sudo, ucf</code>
  +
* [[LVMify_the_disk]], moving the system's files to a more flexible storage layout
  +
  +
= network console setup =
  +
The bootloader firmware in the DockStar [http://http://www.denx.de/wiki/U-Boot U-Boot] can interact with a user over the network, saving one from putting together a TTL level serial connection to drive the bootloader. Linux can also use a network console device once it is running.
  +
  +
== configure U-Boot to use a network console ==
  +
Run these commands once Linux is up and running. The "serverip" variable will need to be changed for your environment. Set it to a machine you can run netcat/nc on. The "ipaddr" variable sets the local address for the DockStar's bootloader. For this example, it's set to ten less than what the running OS's IP address will be.
  +
fw_setenv serverip 172.16.0.1
  +
fw_setenv ipaddr 172.16.0.200
  +
fw_setenv if_netconsole 'ping $serverip'
  +
fw_setenv start_netconsole 'setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;'
  +
fw_setenv preboot 'run if_netconsole start_netconsole'
  +
  +
= USB thumb drive filesystem notes =
  +
See the page about [[USB_flash_drive_notes]]

Latest revision as of 20:14, 21 March 2011

What is a DockStar?

Seagate's Free Agent DockStar is a very cheap, nifty little Linux machine with the following features:

  • 1.2 GHz ARM processor
  • 4 powered USB 2.0 ports broken out like so:
    • 1 port with a USB mini A connector centered in the drive cradle section of the case allowing the user to just plug in a Seagate FreeAgent Go hard drive
    • 3 ports with type A connectors (as you'd find on a mouse, keyboard, or USB flash drive)
  • 1 Gigabit Ethernet NIC
  • $20 price tag
  • HiFN 795x crypto accelerator
  • User replacable firmware (it comes with PogoPlug from the factory — the device is intended as a NAS)

It does have a few small annoyances:

  • Only 128 Mbytes of RAM (256 or 512 would be so much nicer)
  • No battery backed clock (but that's what NTP is for, anyway)
  • Serial console is (somewhat) hard to get to (but the bootloader and Linux can use the normal Linux network console setup)
  • It runs PogoPlug instead of a general purpose OS.

But it costs $20. So these annoyances are overlookable.

DockStar OS options

There are a number of options for replacing the PogoPlug OS on a DockStar: OpenWRT supports them. Plugbox Linux does, too. But I'm a Debian fan, so that's what I'm running on mine.

Jeff Doozan has done much of the legwork making Debian an easy option on a Dockstar. He has a procedure for installing a new bootloader, kernel, and root filesystem into the Dockstar's flash and bootstrapping a Debian installation onto a USB mass storage device attached to the Dockstar (thumb drive, jump drive, FreeAgent Go, portable USB hard drive or whatever) without breaking open the case and fiddling with a serial console.

Before Installing Debian

Here's the procedure I used to used when putting mine together:

  1. buy a Dockstar (actually used some Amazon credits to buy three of them for $20 each a few months ago)
  2. get some USB flash drives (found some 4Gbyte Sandisk Cruzers for $8 each at a local office supply store. Wonder why the 8Gbyte USB drives cost 4 times more instead of 2 times more)
  3. unbox Dockstar, note Ethernet MAC address from sticker on bottom of the case
  4. pick an IP address to give it (internal home network is 172.16.0.0/24 and I don't want the Pogoplug firmware phoning home before I've replaced it with Debian)
  5. set it up with a static IP address on the home network (quick edit to /etc/dhcp/dhcpd.conf)
  6. prevent IP from the dockstar from reaching the internet (sudo iptables -I FORWARD -s 172.16.0.200 -j REJECT on the router)
  7. attach Dockstar to Ethernet switch, power it on, wait until it is pingable
  8. Make sure we can log in to it: ssh root@172.16.0.200 (password should be stxadmin)
  9. Kill the Pogoplug proprietary processes running on the machine: # killall -9 hbwd; killall -9 hbplug
  10. Make a backup of the factory firmware (instructions can be found at How to brick your Dockstar and void the warranty

Installing Debian

Jeff Doozan has done me a great service here. At his web site, you'll find instructions on getting Debian installed on a USB mass storage device (a 4Gbyte Sansisk Cruzer in my case). Here are some notes on my installation:

  • The Pogoplug OS is used to perform the installation on the Dockstar. It needs to be working first.
  • The Pogoplug OS needs internet access to download the Debian bits. But we still don't want Pogoplug phoning home, so be sure the hbwd and hbplug processes aren't running before allowing the device to have internet access.
  • Jeff Doozan recommends making the Debian filesystem at least 512Mbytes in size. The base OS installed by debootstrap consumes about 300 Mbytes of space. I made mine 512Mbytes, followed by 512Mbytes of swap partition. Later on, I'll make the swap partition into a backup root partition, turn the remaining free space into an LVM physical volume, and slice that up until I'm happy with it.
  • The installation target here is a 4Gbyte Sandisk Cruzer USB flash drive. It has been partitions like so:
# fdisk -lu /dev/sda

Disk /dev/sda: 4000 MB, 4000317440 bytes
64 heads, 32 sectors/track, 3815 cylinders, total 7813120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
 
  Device Boot      Start         End      Blocks   Id  System 
/dev/sda1   *        2048     1050623      524288   83  Linux
/dev/sda2         1050624     2099199      524288   83  Linux
/dev/sda3         2099200     7813119     2856960   8e  Linux LVM
#

(Note that this partition layout does not show the sda2 device as being a swap partition. This was changed after the installation was done. Post-installation, sda2 was made into a regular filesystem with the backup insatllation on it. This allows me to specify that /dev/sda2 should be my kernel's root device (instead of /dev/sda1) and fix whatever brain damage I've inflicted on it.

  • Remove the iptables firewall rule that prevents the Dockstar from reaching the internet (Run sudo iptables -D FORWARD -s 172.16.0.200 -j REJECT on the router.)
  • After the USB flash drive has been partitioned, it's time to run Jeff Doozan's installer:
cd /tmp
wget http://jeff.doozan.com/debian/dockstar.debian-squeeze.sh
chmod +x dockstar.debian-squeeze.sh
export PATH=$PATH:/usr/sbin:/sbin # The Pogoplug OS doesn't include /usr/sbin or /sbin in root's PATH
./dockstar.debian-squeeze.sh

(The dockstar.debian.squeeze.sh script puts an ext2 filesystem in /dev/sda1, uses debootstrap to put a base Debian installation on it. It also puts an unlocked u-Boot bootloader, a Debian kernel image, and a tiny recovery filesystem into the Dockstar's NAND flash.)

Installation transcript

Here is a transcript of an installation being performed on canopus, a DockStar with Ethernet MAC address 00:10:75:1a:0e:a6:

-bash-3.2# ./dockstar.debian-squeeze.sh


!!!!!!  DANGER DANGER DANGER DANGER DANGER DANGER  !!!!!!

This script will replace the bootloader on /dev/mtd0.

If you lose power while the bootloader is being flashed,
your device could be left in an unusable state.


This script will configure your Dockstar to boot Debian Squeeze
from a USB device.  Before running this script, you should have
used fdisk to create the following partitions:

/dev/sda1 (Linux ext2, at least 400MB)
/dev/sda2 (Linux swap, recommended 256MB)


This script will DESTROY ALL EXISTING DATA on /dev/sda1
Please double check that the device on /dev/sda1 is the correct device.

By typing ok, you agree to assume all liabilities and risks
associated with running this installer.
If everything looks good, type 'ok' to continue: ok
Installing Bootloader
# checking for /usr/sbin/nandwrite...
# checking for /usr/sbin/nanddump...
# checking for /usr/sbin/flash_erase...
# checking for /usr/sbin/fw_printenv...
# checking for /etc/fw_env.config...

# Validating existing uBoot...
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00080000...
Connecting to jeff.doozan.com (69.163.187.226:80)
valid-uboot.md5      100% |*************************************************************************************************************|   756  --:--:-- ETA
## Valid uBoot detected: [dockstar jeff-2010-10-23-current ebd566de30c6521e65fb1255415c037f pogov1 jeff-2010-10-23-current]
## The newest uBoot is already installed on mtd0.

# uBoot installation has completed successfully.
# checking for /sbin/mke2fs...

# Installing /sbin/mke2fs...
Connecting to jeff.doozan.com (69.163.187.226:80)
mke2fs.md5           100% |*************************************************************************************************************|    41  --:--:-- ETA
Connecting to jeff.doozan.com (69.163.187.226:80)
mke2fs               100% |*************************************************************************************************************|   393k 00:00:00 ETA
# Successfully installed /sbin/mke2fs.
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
32768 inodes, 131072 blocks
6553 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=134217728
4 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
Setting up swapspace version 1, size = 536866816 bytes


# Starting debootstrap installation
I: Retrieving Release
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2
I: Found additional base dependencies: adduser cpio debian-archive-keyring devio gnupg gpgv initramfs-tools klibc-utils libbsd0 libcap2 libedit2 libgssapi-krb5-2 libk5crypto3 libkeyutils1 libklibc libkrb5-3 libkrb5support0 libncursesw5 libreadline6 libssl0.9.8 libudev0 libusb-0.1-4 libuuid-perl libwrap0 linux-base linux-image-2.6.32-5-kirkwood openssh-blacklist openssh-client procps readline-common vim-common
I: Checking component main on http://cdn.debian.net/debian...
I: Retrieving libacl1
I: Validating libacl1
I: Retrieving adduser
I: Validating adduser
I: Retrieving apt
I: Validating apt
I: Retrieving libattr1
I: Validating libattr1
I: Retrieving base-files
I: Validating base-files
I: Retrieving base-passwd
I: Validating base-passwd
I: Retrieving bash
I: Validating bash
I: Retrieving libbz2-1.0
I: Validating libbz2-1.0
I: Retrieving coreutils
I: Validating coreutils
I: Retrieving cpio
I: Validating cpio
I: Retrieving dash
I: Validating dash
I: Retrieving libdb4.8
I: Validating libdb4.8
I: Retrieving debconf-i18n
I: Validating debconf-i18n
I: Retrieving debconf
I: Validating debconf
I: Retrieving debian-archive-keyring
I: Validating debian-archive-keyring
I: Retrieving debianutils
I: Validating debianutils
I: Retrieving devio
I: Validating devio
I: Retrieving dhcpcd
I: Validating dhcpcd
I: Retrieving diffutils
I: Validating diffutils
I: Retrieving dpkg
I: Validating dpkg
I: Retrieving e2fslibs
I: Validating e2fslibs
I: Retrieving e2fsprogs
I: Validating e2fsprogs
I: Retrieving libcomerr2
I: Validating libcomerr2
I: Retrieving libss2
I: Validating libss2
I: Retrieving libc-bin
I: Validating libc-bin
I: Retrieving libc6
I: Validating libc6
I: Retrieving findutils
I: Validating findutils
I: Retrieving flash-kernel
I: Validating flash-kernel
I: Retrieving gcc-4.4-base
I: Validating gcc-4.4-base
I: Retrieving libgcc1
I: Validating libgcc1
I: Retrieving libstdc++6
I: Validating libstdc++6
I: Retrieving gnupg
I: Validating gnupg
I: Retrieving gpgv
I: Validating gpgv
I: Retrieving grep
I: Validating grep
I: Retrieving gzip
I: Validating gzip
I: Retrieving hostname
I: Validating hostname
I: Retrieving ifupdown
I: Validating ifupdown
I: Retrieving initramfs-tools
I: Validating initramfs-tools
I: Retrieving insserv
I: Validating insserv
I: Retrieving iproute
I: Validating iproute
I: Retrieving iputils-ping
I: Validating iputils-ping
I: Retrieving libkeyutils1
I: Validating libkeyutils1
I: Retrieving klibc-utils
I: Validating klibc-utils
I: Retrieving libklibc
I: Validating libklibc
I: Retrieving libgssapi-krb5-2
I: Validating libgssapi-krb5-2
I: Retrieving libk5crypto3
I: Validating libk5crypto3
I: Retrieving libkrb5-3
I: Validating libkrb5-3
I: Retrieving libkrb5support0
I: Validating libkrb5support0
I: Retrieving linux-base
I: Validating linux-base
I: Retrieving linux-image-2.6.32-5-kirkwood
I: Validating linux-image-2.6.32-5-kirkwood
I: Retrieving linux-image-2.6-kirkwood
I: Validating linux-image-2.6-kirkwood
I: Retrieving lsb-base
I: Validating lsb-base
I: Retrieving libbsd0
I: Validating libbsd0
I: Retrieving libcap2
I: Validating libcap2
I: Retrieving libedit2
I: Validating libedit2
I: Retrieving liblocale-gettext-perl
I: Validating liblocale-gettext-perl
I: Retrieving libselinux1
I: Validating libselinux1
I: Retrieving libsepol1
I: Validating libsepol1
I: Retrieving libtext-charwidth-perl
I: Validating libtext-charwidth-perl
I: Retrieving libtext-iconv-perl
I: Validating libtext-iconv-perl
I: Retrieving libtext-wrapi18n-perl
I: Validating libtext-wrapi18n-perl
I: Retrieving libusb-0.1-4
I: Validating libusb-0.1-4
I: Retrieving libuuid-perl
I: Validating libuuid-perl
I: Retrieving mawk
I: Validating mawk
I: Retrieving module-init-tools
I: Validating module-init-tools
I: Retrieving libncurses5
I: Validating libncurses5
I: Retrieving libncursesw5
I: Validating libncursesw5
I: Retrieving ncurses-base
I: Validating ncurses-base
I: Retrieving ncurses-bin
I: Validating ncurses-bin
I: Retrieving net-tools
I: Validating net-tools
I: Retrieving netbase
I: Validating netbase
I: Retrieving ntpdate
I: Validating ntpdate
I: Retrieving openssh-blacklist
I: Validating openssh-blacklist
I: Retrieving openssh-client
I: Validating openssh-client
I: Retrieving openssh-server
I: Validating openssh-server
I: Retrieving libssl0.9.8
I: Validating libssl0.9.8
I: Retrieving libpam-modules
I: Validating libpam-modules
I: Retrieving libpam-runtime
I: Validating libpam-runtime
I: Retrieving libpam0g
I: Validating libpam0g
I: Retrieving perl-base
I: Validating perl-base
I: Retrieving procps
I: Validating procps
I: Retrieving libreadline6
I: Validating libreadline6
I: Retrieving readline-common
I: Validating readline-common
I: Retrieving sed
I: Validating sed
I: Retrieving sensible-utils
I: Validating sensible-utils
I: Retrieving login
I: Validating login
I: Retrieving passwd
I: Validating passwd
I: Retrieving libslang2
I: Validating libslang2
I: Retrieving initscripts
I: Validating initscripts
I: Retrieving sysv-rc
I: Validating sysv-rc
I: Retrieving sysvinit-utils
I: Validating sysvinit-utils
I: Retrieving sysvinit
I: Validating sysvinit
I: Retrieving tar
I: Validating tar
I: Retrieving libwrap0
I: Validating libwrap0
I: Retrieving libudev0
I: Validating libudev0
I: Retrieving bsdutils
I: Validating bsdutils
I: Retrieving libblkid1
I: Validating libblkid1
I: Retrieving libuuid1
I: Validating libuuid1
I: Retrieving mount
I: Validating mount
I: Retrieving liblzma2
I: Validating liblzma2
I: Retrieving tzdata
I: Validating tzdata
I: Retrieving uboot-envtools
I: Validating uboot-envtools
I: Retrieving uboot-mkimage
I: Validating uboot-mkimage
I: Retrieving udev
I: Validating udev
I: Retrieving util-linux
I: Validating util-linux
I: Retrieving vim-common
I: Validating vim-common
I: Retrieving vim-tiny
I: Validating vim-tiny
I: Retrieving wget
I: Validating wget
I: Retrieving xz-utils
I: Validating xz-utils
I: Retrieving zlib1g
I: Validating zlib1g
I: Chosen extractor for .deb packages: ar
I: Extracting libacl1...
I: Extracting libattr1...
I: Extracting base-files...
I: Extracting base-passwd...
I: Extracting bash...
I: Extracting libbz2-1.0...
I: Extracting coreutils...
I: Extracting dash...
I: Extracting libdb4.8...
I: Extracting debconf-i18n...
I: Extracting debconf...
I: Extracting debianutils...
I: Extracting diffutils...
I: Extracting dpkg...
I: Extracting e2fslibs...
I: Extracting e2fsprogs...
I: Extracting libcomerr2...
I: Extracting libss2...
I: Extracting libc-bin...
I: Extracting libc6...
I: Extracting findutils...
I: Extracting gcc-4.4-base...
I: Extracting libgcc1...
I: Extracting libstdc++6...
I: Extracting grep...
I: Extracting gzip...
I: Extracting hostname...
I: Extracting insserv...
I: Extracting lsb-base...
I: Extracting liblocale-gettext-perl...
I: Extracting libselinux1...
I: Extracting libsepol1...
I: Extracting libtext-charwidth-perl...
I: Extracting libtext-iconv-perl...
I: Extracting libtext-wrapi18n-perl...
I: Extracting mawk...
I: Extracting libncurses5...
I: Extracting ncurses-base...
I: Extracting ncurses-bin...
I: Extracting libpam-modules...
I: Extracting libpam-runtime...
I: Extracting libpam0g...
I: Extracting perl-base...
I: Extracting sed...
I: Extracting sensible-utils...
I: Extracting login...
I: Extracting passwd...
I: Extracting libslang2...
I: Extracting initscripts...
I: Extracting sysv-rc...
I: Extracting sysvinit-utils...
I: Extracting sysvinit...
I: Extracting tar...
I: Extracting bsdutils...
I: Extracting libblkid1...
I: Extracting libuuid1...
I: Extracting mount...
I: Extracting liblzma2...
I: Extracting tzdata...
I: Extracting util-linux...
I: Extracting xz-utils...
I: Extracting zlib1g...
I: Installing core packages...
I: Unpacking required packages...
I: Unpacking libacl1...
I: Unpacking libattr1...
I: Unpacking base-files...
I: Unpacking base-passwd...
I: Unpacking bash...
I: Unpacking libbz2-1.0...
I: Unpacking coreutils...
I: Unpacking dash...
I: Unpacking libdb4.8...
I: Unpacking debconf-i18n...
I: Unpacking debconf...
I: Unpacking debianutils...
I: Unpacking diffutils...
I: Unpacking dpkg...
I: Unpacking e2fslibs...
I: Unpacking e2fsprogs...
I: Unpacking libcomerr2...
I: Unpacking libss2...
I: Unpacking libc-bin...
I: Unpacking libc6...
I: Unpacking findutils...
I: Unpacking gcc-4.4-base...
I: Unpacking libgcc1...
I: Unpacking libstdc++6...
I: Unpacking grep...
I: Unpacking gzip...
I: Unpacking hostname...
I: Unpacking insserv...
I: Unpacking lsb-base...
I: Unpacking liblocale-gettext-perl...
I: Unpacking libselinux1...
I: Unpacking libsepol1...
I: Unpacking libtext-charwidth-perl...
I: Unpacking libtext-iconv-perl...
I: Unpacking libtext-wrapi18n-perl...
I: Unpacking mawk...
I: Unpacking libncurses5...
I: Unpacking ncurses-base...
I: Unpacking ncurses-bin...
I: Unpacking libpam-modules...
I: Unpacking libpam-runtime...
I: Unpacking libpam0g...
I: Unpacking perl-base...
I: Unpacking sed...
I: Unpacking sensible-utils...
I: Unpacking login...
I: Unpacking passwd...
I: Unpacking libslang2...
I: Unpacking initscripts...
I: Unpacking sysv-rc...
I: Unpacking sysvinit-utils...
I: Unpacking sysvinit...
I: Unpacking tar...
I: Unpacking bsdutils...
I: Unpacking libblkid1...
I: Unpacking libuuid1...
I: Unpacking mount...
I: Unpacking liblzma2...
I: Unpacking tzdata...
I: Unpacking util-linux...
I: Unpacking xz-utils...
I: Unpacking zlib1g...
I: Configuring required packages...
I: Configuring ncurses-base...
I: Configuring sensible-utils...
I: Configuring libc-bin...
I: Configuring gcc-4.4-base...
I: Configuring libc6...
I: Configuring debianutils...
I: Configuring bsdutils...
I: Configuring libsepol1...
I: Configuring libgcc1...
I: Configuring libncurses5...
I: Configuring libattr1...
I: Configuring e2fslibs...
I: Configuring base-passwd...
I: Configuring libcomerr2...
I: Configuring mawk...
I: Configuring libdb4.8...
I: Configuring hostname...
I: Configuring libacl1...
I: Configuring libslang2...
I: Configuring libss2...
I: Configuring liblzma2...
I: Configuring insserv...
I: Configuring gzip...
I: Configuring libbz2-1.0...
I: Configuring libselinux1...
I: Configuring libstdc++6...
I: Configuring coreutils...
I: Configuring ncurses-bin...
I: Configuring diffutils...
I: Configuring tar...
I: Configuring zlib1g...
I: Configuring base-files...
I: Configuring xz-utils...
I: Configuring dpkg...
I: Configuring sysvinit-utils...
I: Configuring dash...
I: Configuring perl-base...
I: Configuring libtext-iconv-perl...
I: Configuring sed...
I: Configuring grep...
I: Configuring findutils...
I: Configuring liblocale-gettext-perl...
I: Configuring bash...
I: Configuring libtext-charwidth-perl...
I: Configuring libtext-wrapi18n-perl...
I: Configuring lsb-base...
I: Configuring debconf-i18n...
I: Configuring debconf...
I: Configuring libpam0g...
I: Configuring sysv-rc...
I: Configuring libpam-modules...
I: Configuring tzdata...
I: Configuring passwd...
I: Configuring libpam-runtime...
I: Configuring initscripts...
I: Configuring login...
I: Configuring libuuid1...
I: Configuring sysvinit...
I: Configuring libblkid1...
I: Configuring util-linux...
I: Configuring mount...
I: Configuring e2fsprogs...
I: Unpacking the base system...
I: Unpacking adduser...
I: Unpacking apt...
I: Unpacking cpio...
I: Unpacking debian-archive-keyring...
I: Unpacking devio...
I: Unpacking dhcpcd...
I: Unpacking flash-kernel...
I: Unpacking gnupg...
I: Unpacking gpgv...
I: Unpacking ifupdown...
I: Unpacking initramfs-tools...
I: Unpacking iproute...
I: Unpacking iputils-ping...
I: Unpacking libkeyutils1...
I: Unpacking klibc-utils...
I: Unpacking libklibc...
I: Unpacking libgssapi-krb5-2...
I: Unpacking libk5crypto3...
I: Unpacking libkrb5-3...
I: Unpacking libkrb5support0...
I: Unpacking linux-base...
I: Unpacking linux-image-2.6.32-5-kirkwood...
I: Unpacking linux-image-2.6-kirkwood...
I: Unpacking libbsd0...
I: Unpacking libcap2...
I: Unpacking libedit2...
I: Unpacking libusb-0.1-4...
I: Unpacking libuuid-perl...
I: Unpacking module-init-tools...
I: Unpacking libncursesw5...
I: Unpacking net-tools...
I: Unpacking netbase...
I: Unpacking ntpdate...
I: Unpacking openssh-blacklist...
I: Unpacking openssh-client...
I: Unpacking openssh-server...
I: Unpacking libssl0.9.8...
I: Unpacking procps...
I: Unpacking libreadline6...
I: Unpacking readline-common...
I: Unpacking libwrap0...
I: Unpacking libudev0...
I: Unpacking uboot-envtools...
I: Unpacking uboot-mkimage...
I: Unpacking udev...
I: Unpacking vim-common...
I: Unpacking vim-tiny...
I: Unpacking wget...
I: Configuring the base system...
I: Configuring uboot-envtools...
I: Configuring module-init-tools...
I: Configuring libusb-0.1-4...
I: Configuring libssl0.9.8...
I: Configuring vim-common...
I: Configuring netbase...
I: Configuring libudev0...
I: Configuring adduser...
I: Configuring libklibc...
I: Configuring libuuid-perl...
I: Configuring libkeyutils1...
I: Configuring iproute...
I: Configuring devio...
I: Configuring klibc-utils...
I: Configuring libkrb5support0...
I: Configuring wget...
I: Configuring net-tools...
I: Configuring uboot-mkimage...
I: Configuring libbsd0...
I: Configuring linux-base...
I: Configuring libncursesw5...
I: Configuring openssh-blacklist...
I: Configuring iputils-ping...
I: Configuring libedit2...
I: Configuring udev...
I: Configuring cpio...
I: Configuring vim-tiny...
I: Configuring readline-common...
I: Configuring libcap2...
I: Configuring libwrap0...
I: Configuring initramfs-tools...
I: Configuring procps...
I: Configuring dhcpcd...
I: Configuring flash-kernel...
I: Configuring libk5crypto3...
I: Configuring ifupdown...
I: Configuring libreadline6...
I: Configuring linux-image-2.6.32-5-kirkwood...
I: Configuring ntpdate...
I: Configuring libkrb5-3...  
I: Configuring gpgv...
I: Configuring linux-image-2.6-kirkwood...
I: Configuring libgssapi-krb5-2...
I: Configuring gnupg...
I: Configuring debian-archive-keyring...
I: Configuring openssh-client...
I: Configuring apt...
I: Configuring openssh-server...
I: Configuring initramfs-tools...
I: Base system installed successfully.
Image Name:   Linux-2.6.32-5-kirkwood
Created:      Fri Dec 31 17:58:41 2010
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1434156 Bytes = 1400.54 kB = 1.37 MB
Load Address: 0x00008000
Entry Point:  0x00008000
Image Name:   initramfs-2.6.32-5-kirkwood
Created:      Fri Dec 31 17:58:42 2010
Image Type:   ARM Linux RAMDisk Image (gzip compressed)
Data Size:    4736810 Bytes = 4625.79 kB = 4.52 MB
Load Address: 0x00000000
Entry Point:  0x00000000




Installation complete

You can now reboot your device into Debian.
If your device does not start Debian after rebooting,
you may need to restart the device by disconnecting the power.

The new root password is 'root'  Please change it immediately after
logging in.

Reboot now? [Y/n]

Tell it to reboot, and Debian will be up and running. After restarting, this machine will have a different SSH host key. You'll have to remove the old one from your ~/.ssh/known_hosts file before connecting to it again. As the installer notes, the password for root is now root and should be changed.

Installation is done, how do things look now?

Disk layout:

root@debian:~# fdisk -l -u

Disk /dev/sda: 4000 MB, 4000317440 bytes
64 heads, 32 sectors/track, 3815 cylinders, total 7813120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x9a198ead

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1050623      524288   83  Linux
/dev/sda2         1050624     2099199      524288   83  Linux
/dev/sda3         2099200     7813119     2856960   8e  Linux LVM
root@debian:~# 

Disk usage:

root@debian:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                  516040    260948    228880  54% /
none                     60492        36     60456   1% /dev
/dev/sda1               516040    260948    228880  54% /
tmpfs                    62864         0     62864   0% /lib/init/rw
tmpfs                    62864         0     62864   0% /dev/shm
tmpfs                    62864         0     62864   0% /tmp
root@debian:~# 

Installed Packages:

root@debian:~# dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                   Version                     Description
+++-======================================-===========================-===================================================================
ii  adduser                                3.112+nmu2                  add and remove users and groups
ii  apt                                    0.8.10                      Advanced front-end for dpkg
ii  base-files                             5.10                        Debian base system miscellaneous files
ii  base-passwd                            3.5.22                      Debian base system master password and group files
ii  bash                                   4.1-3                       The GNU Bourne Again SHell
ii  bsdutils                               1:2.17.2-5                  Basic utilities from 4.4BSD-Lite
ii  coreutils                              8.5-1                       GNU core utilities
ii  cpio                                   2.11-4                      GNU cpio -- a program to manage archives of files
ii  dash                                   0.5.5.1-7.4                 POSIX-compliant shell
ii  debconf                                1.5.36                      Debian configuration management system
ii  debconf-i18n                           1.5.36                      full internationalization support for debconf
ii  debian-archive-keyring                 2010.08.28                  GnuPG archive keys of the Debian archive
ii  debianutils                            3.4                         Miscellaneous utilities specific to Debian
ii  devio                                  1.2-1+b1                    correctly read (or write) a region of a block device
ii  dhcpcd                                 1:3.2.3-5                   DHCP client for automatically configuring IPv4 networking
ii  diffutils                              1:3.0-1                     File comparison utilities
ii  dpkg                                   1.15.8.5                    Debian package management system
ii  e2fslibs                               1.41.12-2                   ext2/ext3/ext4 file system libraries
ii  e2fsprogs                              1.41.12-2                   ext2/ext3/ext4 file system utilities
ii  findutils                              4.4.2-1+b1                  utilities for finding files--find, xargs
ii  flash-kernel                           2.37                        utility to make certain embedded devices bootable
ii  gcc-4.4-base                           4.4.5-8                     The GNU Compiler Collection (base package)
ii  gnupg                                  1.4.10-4                    GNU privacy guard - a free PGP replacement
ii  gpgv                                   1.4.10-4                    GNU privacy guard - signature verification tool
ii  grep                                   2.6.3-3                     GNU grep, egrep and fgrep
ii  gzip                                   1.3.12-9                    GNU compression utilities
ii  hostname                               3.04                        utility to set/show the host name or domain name
ii  ifupdown                               0.6.10                      high level tools to configure network interfaces
ii  initramfs-tools                        0.98.7                      tools for generating an initramfs
ii  initscripts                            2.88dsf-13                  scripts for initializing and shutting down the system
ii  insserv                                1.14.0-2                    Tool to organize boot sequence using LSB init.d script dependencies
ii  iproute                                20100519-3                  networking and traffic control tools
ii  iputils-ping                           3:20100418-3                Tools to test the reachability of network hosts
ii  klibc-utils                            1.5.20-1                    small utilities built with klibc for early boot
ii  libacl1                                2.2.49-4                    Access control list shared library
ii  libattr1                               1:2.4.44-2                  Extended attribute shared library
ii  libblkid1                              2.17.2-5                    block device id library
ii  libbsd0                                0.2.0-1                     utility functions from BSD systems - shared library
ii  libbz2-1.0                             1.0.5-6                     high-quality block-sorting file compressor library - runtime
ii  libc-bin                               2.11.2-7                    Embedded GNU C Library: Binaries
ii  libc6                                  2.11.2-7                    Embedded GNU C Library: Shared libraries
ii  libcap2                                1:2.19-3                    support for getting/setting POSIX.1e capabilities
ii  libcomerr2                             1.41.12-2                   common error description library
ii  libdb4.8                               4.8.30-2                    Berkeley v4.8 Database Libraries [runtime]
ii  libedit2                               2.11-20080614-2             BSD editline and history libraries
ii  libgcc1                                1:4.4.5-8                   GCC support library
ii  libgssapi-krb5-2                       1.8.3+dfsg-4                MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
ii  libk5crypto3                           1.8.3+dfsg-4                MIT Kerberos runtime libraries - Crypto Library
ii  libkeyutils1                           1.4-1                       Linux Key Management Utilities (library)
ii  libklibc                               1.5.20-1                    minimal libc subset for use with initramfs
ii  libkrb5-3                              1.8.3+dfsg-4                MIT Kerberos runtime libraries
ii  libkrb5support0                        1.8.3+dfsg-4                MIT Kerberos runtime libraries - Support library
ii  liblocale-gettext-perl                 1.05-6                      Using libc functions for internationalization in Perl
ii  liblzma2                               5.0.0-2                     XZ-format compression library
ii  libncurses5                            5.7+20100313-4              shared libraries for terminal handling
ii  libncursesw5                           5.7+20100313-4              shared libraries for terminal handling (wide character support)
ii  libpam-modules                         1.1.1-6.1                   Pluggable Authentication Modules for PAM
ii  libpam-runtime                         1.1.1-6.1                   Runtime support for the PAM library
ii  libpam0g                               1.1.1-6.1                   Pluggable Authentication Modules library
ii  libreadline6                           6.1-3                       GNU readline and history libraries, run-time libraries
ii  libselinux1                            2.0.96-1                    SELinux runtime shared libraries
ii  libsepol1                              2.0.41-1                    SELinux library for manipulating binary security policies
ii  libslang2                              2.2.2-4                     The S-Lang programming library - runtime version
ii  libss2                                 1.41.12-2                   command-line interface parsing library
ii  libssl0.9.8                            0.9.8o-4                    SSL shared libraries
ii  libstdc++6                             4.4.5-8                     The GNU Standard C++ Library v3
ii  libtext-charwidth-perl                 0.04-6                      get display widths of characters on the terminal
ii  libtext-iconv-perl                     1.7-2                       converts between character sets in Perl
ii  libtext-wrapi18n-perl                  0.06-7                      internationalized substitute of Text::Wrap
ii  libudev0                               164-3                       libudev shared library
ii  libusb-0.1-4                           2:0.1.12-16                 userspace USB programming library
ii  libuuid-perl                           0.02-4                      Perl extension for using UUID interfaces as defined in e2fsprogs
ii  libuuid1                               2.17.2-5                    Universally Unique ID library
ii  libwrap0                               7.6.q-19                    Wietse Venema's TCP wrappers library
ii  linux-base                             2.6.32-29                   Linux image base package
ii  linux-image-2.6-kirkwood               2.6.32+28                   Linux 2.6 for Marvell Kirkwood (meta-package)
ii  linux-image-2.6.32-5-kirkwood          2.6.32-29                   Linux 2.6.32 for Marvell Kirkwood
ii  login                                  1:4.1.4.2+svn3283-2         system login tools
ii  lsb-base                               3.2-23.1                    Linux Standard Base 3.2 init script functionality
ii  mawk                                   1.3.3-15                    a pattern scanning and text processing language
ii  module-init-tools                      3.12-1                      tools for managing Linux kernel modules
ii  mount                                  2.17.2-5                    Tools for mounting and manipulating filesystems
ii  ncurses-base                           5.7+20100313-4              basic terminal type definitions
ii  ncurses-bin                            5.7+20100313-4              terminal-related programs and man pages
ii  net-tools                              1.60-23                     The NET-3 networking toolkit
ii  netbase                                4.44                        Basic TCP/IP networking system
ii  ntpdate                                1:4.2.6.p2+dfsg-1+b1        client for setting system time from NTP servers
ii  openssh-blacklist                      0.4.1                       list of default blacklisted OpenSSH RSA and DSA keys
ii  openssh-client                         1:5.5p1-6                   secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                         1:5.5p1-6                   secure shell (SSH) server, for secure access from remote machines
ii  passwd                                 1:4.1.4.2+svn3283-2         change and administer password and group data
ii  perl-base                              5.10.1-16                   minimal Perl system
ii  procps                                 1:3.2.8-9                   /proc file system utilities
ii  readline-common                        6.1-3                       GNU readline and history libraries, common files
ii  sed                                    4.2.1-7                     The GNU sed stream editor
ii  sensible-utils                         0.0.4                       Utilities for sensible alternative selection
ii  sysv-rc                                2.88dsf-13                  System-V-like runlevel change mechanism
ii  sysvinit                               2.88dsf-13                  System-V-like init utilities
ii  sysvinit-utils                         2.88dsf-13                  System-V-like utilities
ii  tar                                    1.23-3                      GNU version of the tar archiving utility
ii  tzdata                                 2010o-1                     time zone and daylight-saving time data
ii  uboot-envtools                         20081215-2                  read/modify the environment for the bootloader U-Boot
ii  uboot-mkimage                          0.4                         generate kernel image for U-Boot
ii  udev                                   164-3                       /dev/ and hotplug management daemon
ii  util-linux                             2.17.2-5                    Miscellaneous system utilities
ii  vim-common                             2:7.2.445+hg~cb94c42c0e1a-1 Vi IMproved - Common files
ii  vim-tiny                               2:7.2.445+hg~cb94c42c0e1a-1 Vi IMproved - enhanced vi editor - compact version
ii  wget                                   1.12-2.1                    retrieves files from the web
ii  xz-utils                               5.0.0-2                     XZ-format compression utilities
ii  zlib1g                                 1:1.2.3.4.dfsg-3            compression library - runtime
root@debian:~# 

Firmware settings:

root@debian:~# fw_printenv
ethact=egiga0
bootdelay=3
baudrate=115200
mainlineLinux=yes
console=ttyS0,115200
led_init=green blinking
led_exit=green off
led_error=orange blinking
mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data)
mtdids=nand0=orion_nand
partition=nand0,2
stdin=serial
stdout=serial
stderr=serial
rescue_installed=0
rescue_set_bootargs=setenv bootargs console=$console ubi.mtd=2 root=ubi0:rootfs ro rootfstype=ubifs $mtdparts $rescue_custom_params
rescue_bootcmd=if test $rescue_installed -eq 1; then run rescue_set_bootargs; nand read.e 0x800000 0x100000 0x400000; bootm 0x800000; else run pogo_bootcmd; fi
pogo_bootcmd=if fsload uboot-original-mtd0.kwb; then go 0x800200; fi
force_rescue=0
force_rescue_bootcmd=if test $force_rescue -eq 1 || ext2load usb 0:1 0x1700000 /rescueme 1 || fatload usb 0:1 0x1700000 /rescueme.txt 1; then run rescue_bootcmd; fi
ubifs_mtd=3
ubifs_set_bootargs=setenv bootargs console=$console ubi.mtd=$ubifs_mtd root=ubi0:rootfs rootfstype=ubifs $mtdparts $ubifs_custom_params
ubifs_bootcmd=run ubifs_set_bootargs; if ubi part data && ubifsmount rootfs && ubifsload 0x800000 /boot/uImage && ubifsload 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; fi
usb_scan=usb_scan_done=0;for scan in $usb_scan_list; do run usb_scan_$scan; if test $usb_scan_done -eq 0 && ext2load usb $usb 0x800000 /boot/uImage 1; then usb_scan_done=1; echo "Found bootable drive on usb $usb"; setenv usb_device $usb; setenv usb_root /dev/$dev; fi; done
usb_scan_list=1 2 3 4
usb_scan_1=usb=0:1 dev=sda1
usb_scan_2=usb=1:1 dev=sdb1
usb_scan_3=usb=2:1 dev=sdc1
usb_scan_4=usb=3:1 dev=sdd1
usb_init=run usb_scan
usb_device=0:1
usb_root=/dev/sda1
usb_rootfstype=ext2
usb_rootdelay=10
usb_set_bootargs=setenv bootargs console=$console root=$usb_root rootdelay=$usb_rootdelay rootfstype=$usb_rootfstype $mtdparts $usb_custom_params
usb_bootcmd=run usb_init; run usb_set_bootargs; run usb_boot
usb_boot=mw 0x800000 0 1; ext2load usb $usb_device 0x800000 /boot/uImage; if ext2load usb $usb_device 0x1100000 /boot/uInitrd; then bootm 0x800000 0x1100000; 
else bootm 0x800000; fi
bootcmd=usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run rescue_bootcmd; run pogo_bootcmd; reset
ethaddr=00:10:75:1A:0E:A6
arcNumber=2097
root@debian:~# 


Further customization

These are steps I perform after the base OS is installed:

  • Change root's password.
  • Tweak the DHCP client settings in /etc/default/dhcpcd:
    • Uncomment the SET_DNS='yes' line to allow the DHCP server's list of DNS servers to be written to your /etc/resolv.conf config file.
    • Uncomment the SET_HOSTNAME='yes' line to allow the DHCP server to set your DockStar's host name.
    • Uncomment the SET_NTP='yes' line to allow the DHCP server's list of NTP servers to be written to your /etc/ntp.conf config file.
  • Install a handful of useful packages: apt-listchanges, debsums, dmsetup, hdparm, less, lvm2, man-db, mtd-utils, ntp, pciutils, perl, python, rsyslog, sudo, ucf
  • LVMify_the_disk, moving the system's files to a more flexible storage layout

network console setup

The bootloader firmware in the DockStar U-Boot can interact with a user over the network, saving one from putting together a TTL level serial connection to drive the bootloader. Linux can also use a network console device once it is running.

configure U-Boot to use a network console

Run these commands once Linux is up and running. The "serverip" variable will need to be changed for your environment. Set it to a machine you can run netcat/nc on. The "ipaddr" variable sets the local address for the DockStar's bootloader. For this example, it's set to ten less than what the running OS's IP address will be.

fw_setenv serverip 172.16.0.1
fw_setenv ipaddr 172.16.0.200
fw_setenv if_netconsole 'ping $serverip'
fw_setenv start_netconsole 'setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;'
fw_setenv preboot 'run if_netconsole start_netconsole'

USB thumb drive filesystem notes

See the page about USB_flash_drive_notes