HOWTO: SheevaPlug Fedora SD Card
This howto will cover installing Fedora (12) on a SheevaPlug running on a SD Ram card.
Prep the SD Card
Add the SD Card to your linux box you are building this on and run:
[root@wigeon ~]# dmesg | tail
scsi 8:0:0:0: Direct-Access HP v100w 4096 PQ: 0 ANSI: 0 CCS
sd 8:0:0:0: Attached scsi generic sg2 type 0
sd 8:0:0:0: [sdb] 7831552 512-byte hardware sectors: (4.00 GB/3.73 GiB)
sd 8:0:0:0: [sdb] Write Protect is off
sd 8:0:0:0: [sdb] Mode Sense: 43 00 00 00
sd 8:0:0:0: [sdb] Assuming drive cache: write through
sd 8:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1
sd 8:0:0:0: [sdb] Attached SCSI removable disk
[root@wigeon ~]#
Next run fdisk to create the partition table. I created one large partition skipping swap, no need to swap on to an SD card.
[root@wigeon ~]# fdisk /dev/sdb
The number of cylinders for this disk is set to 1125.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):
Value out of range.
Partition number (1-4): 1
First cylinder (1-1125, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1125, default 1125):
Using default value 1125
Command (m for help): a
Partition number (1-4): 1
Command (m for help): t
Selected partition 1
be Solaris boot ff BBT
Hex code (type L to list codes): 83
Command (m for help): p
Disk /dev/sdb: 4009 MB, 4009754624 bytes
145 heads, 48 sectors/track, 1125 cylinders
Units = cylinders of 6960 * 512 = 3563520 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 1125 3914976 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Create the filesystem:
[root@wigeon ~]# mkfs.ext2 /dev/sdb1
mke2fs 1.41.4 (27-Jan-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
244800 inodes, 978744 blocks
48937 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1002438656
30 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Install Fedora on the SD Card
Download the distro and kernel
[root@wigeon tmp]# cd /tmp
[root@wigeon tmp]# wget http://ftp.linux.org.uk/pub/linux/arm/fedora/platforms/sheevaplug/uImage-2.6.30-sheevaplug
[root@wigeon tmp]# wget http://ftp.linux.org.uk/pub/linux/arm/fedora/rootfs/rootfs-f12.tar.bz2
Create a mount point for the SD card and mount.
[root@wigeon tmp]# mkdir /media/flash
[root@wigeon tmp]# mount /dev/sdb1 /media/flash/
Copy the distro over.
[root@wigeon tmp]# tar -jxf rootfs-f12.tar.bz2
[root@wigeon tmp]# cp -r rootfs-f12/* /media/flash/
[root@wigeon tmp]# cp uImage-2.6.30-sheevaplug /media/flash/boot/
Customize the OS.
Edit the fstab, change / partition to /dev/mmcblk0p1:
[root@wigeon tmp]# vi /media/flash/etc/fstab
....
/dev/mmcblk0p1 / ext2 relatime 1 0
....
Roots PW is fedoraarm, I didn't know this and editted /etc/shadow, you don't need to...
Edit the ethernet configuration:
[root@wigeon tmp]# vi /media/flash/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=YourHostnameHere
[root@wigeon tmp]# vi /media/flash/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=10.0.0.2
GATEWAY=10.0.0.1
DNS1=10.0.0.1
TYPE=Ethernet
USERCTL=no
PEERDNS=no
IPV6INIT=no
NM_CONTROLLED=no
Now you can umount the sd card and put it in the sheevaplug.
Prep your linux box to update the kernel
The SheevaPlug ships with a firmware that can't boot off of SD cards. So you need to update it over TFTP
Install a tftp server
[root@wigeon tmp]# yum install tftp-server
Get the u-boot image and make it available to the sheevaplug.
[root@wigeon tmp]# cd /var/lib/tftpboot/
[root@wigeon tmp]# wget http://www.cyrius.com/tmp/u-boot.bin-3.4.19
[root@wigeon tmp]# mv u-boot.bin-3.4.19 uboot.bin
[root@wigeon tmp]#vi /etc/xinetd.d/tftp
Change
"disable = yes " to "disable = no "
Set up the linux box for serial over usb support - FTDI
*Originally found here: http://fedoraproject.org/wiki/Architectures/ARM/SheevaplugUSB
[root@wigeon tftpboot]# vi /etc/udev/rules.d/85-sheevaplug.rules
# if no driver has claimed the interface yet, load ftdi_sio
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", \
ATTRS{idVendor}=="9e88", ATTRS{idProduct}=="9e8f", \
DRIVER=="", \
RUN+="/sbin/modprobe -b ftdi_sio"
# add the sheevaplug VID and PID to the list of devices supported by ftdi_sio
ACTION=="add", SUBSYSTEM=="drivers", \
ENV{DEVPATH}=="/bus/usb-serial/drivers/ftdi_sio", \
ATTR{new_id}="9e88 9e8f"
# optionally create a convenience symlink for the console device
ACTION=="add", KERNEL=="ttyUSB*", \
ATTRS{interface}=="SheevaPlug JTAGKey FT2232D B", \
ATTRS{bInterfaceNumber}=="01", \
SYMLINK+="sheevaplug"