Difference between revisions of "Efika"

From C4 Wiki
Jump to: navigation, search
(NFS: Further Preparations)
m (Reverted edits by Oxudocopaj (talk) to last revision by Tobias)
 
(10 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
The [http://www.efika.info EFIKA] is an embedded PowerPC board with a 400MHz 32-bit freescale MPC5200 (603e/e300), 128MB RAM, 100MBit/s NIC, 2xUSB 1.1, Soundchip, 2.5" harddisk connector, PCI and AGP (with riser-card) and serial out.
 
The [http://www.efika.info EFIKA] is an embedded PowerPC board with a 400MHz 32-bit freescale MPC5200 (603e/e300), 128MB RAM, 100MBit/s NIC, 2xUSB 1.1, Soundchip, 2.5" harddisk connector, PCI and AGP (with riser-card) and serial out.
  
[[User:Pylon|Pylon]] received a board for development work on it.  I will leave it in the C4, so that we can attach additional hardware on it.
+
[[User:Pylon|Pylon]] received a board for development work on it.  I will leave it in the [[C4]], so that we can attach additional hardware on it.
  
 
== Ideas for development tasks ==
 
== Ideas for development tasks ==
  
# mpd-server as in-replacement for the already existing one
+
# [http://www.musicpd.org mpd]-server as in-replacement for the already existing one
# connection to the [[Fnordlicht]]
+
# connection to the [http://www.fnordlicht.de Fnordlicht] (built at C4's [[U23 2005]])
# using jack for disco-lights
+
# using [http://jackaudio.org JACK] for disco-lights
  
 
== Booting ==
 
== Booting ==
Line 23: Line 23:
 
I will use Gentoo/Linux on that machine.  Yes, it might be slow, but it can be changed to your needs.  Also it's possible to build on another PowerPC or with cross-dev.
 
I will use Gentoo/Linux on that machine.  Yes, it might be slow, but it can be changed to your needs.  Also it's possible to build on another PowerPC or with cross-dev.
  
'''Setup'''
+
==== Setup ====
* Server: 10.10.1.1
+
;Server: 10.10.1.1
* Client: 10.10.1.2
+
;Client: 10.10.1.2
  
'''Preparations'''
+
==== Preparations ====
# Download a stage3-tar-ball and unpack it to e.g. <code>/nfsroot</code>.
+
# Download a stage3-tar-ball and unpack it to e.g. <tt>/nfsroot</tt>.
# Change <code>/nfsroot//etc/fstab</code>, so that the root-filesystem will be mounted via NFS: <code>10.10.1.1:/nfsroot              /              nfs            noatime        0 1</code>
+
# Change <tt>/nfsroot//etc/fstab</tt>, so that the root-filesystem will be mounted via NFS: <code>10.10.1.1:/nfsroot              /              nfs            noatime        0 1</code>
# Change <code>/nfsroot/etc/securetty</code> and add a line for logging in later via serial-line: <code> echo ttyPSC0 >> /nfsroot/etc/securetty</code>
+
# Change <tt>/nfsroot/etc/securetty</tt> and add a line for logging in later via serial-line: <code> echo ttyPSC0 >> /nfsroot/etc/securetty</code>
# Also add that serial-line to <code>/nfsroot/etc/inittab</code>: <code>echo "s0:12345:respawn:/sbin/agetty 115200 ttyPSC0 vt100" >> /nfsroot/etc/inittab</code> (you can use ''linux'' instead of ''vt100'' for a coloured term, but then you should have a good serial communicotian program)
+
# Also add that serial-line to <tt>/nfsroot/etc/inittab</tt>: <code>echo "s0:12345:respawn:/sbin/agetty 115200 ttyPSC0 vt100" >> /nfsroot/etc/inittab</code> (you can use ''linux'' instead of ''vt100'' for a coloured term, but then you should have a good serial communicotian program)
# Add a password-hash for the root-password into <code>/nfsroot/etc/shadow</code>.  I used htpasswd2 from apache for it.  Call it with <code>htpasswd -nb root secret</code>.  This will create the hash for the root-user with the password ''secret''.  Replace the <code>*</code> after <code>root:</code> in the shadow-file with that hash.
+
# Add a password-hash for the root-password into <tt>/nfsroot/etc/shadow</tt>.  I used htpasswd2 from apache for it.  Call it with <code>htpasswd -nb root secret</code>.  This will create the hash for the root-user with the password ''secret''.  Replace the <code>*</code> after <code>root:</code> in the shadow-file with that hash.
# Give your system a hostname in <code>/nfsroot/etc/hostname</code> and add that hostname after the localhost-entry in <code>/nfsroot/etc/hosts</code>
+
# Give your system a hostname in <tt>/nfsroot/etc/hostname</tt> and add that hostname after the localhost-entry in <tt>/nfsroot/etc/hosts</tt>
# Unfortunately mounting another nfs-share for the portage-tree later will not work, as nfs-utils are not installed yet (I'm working on a special nfsroot-efika-stage4).  Bind-mounting  a portage-tree on a Gentoo-system will not work either (nfs just ignores that).  So we have to download and unpack a current portage-snapshot into <code>/nfsroot/usr/portage</code>. Alternatively you can rsync your local portage-tree into <code>/nfsroot</code>: <code>rsync --archive --progress --exclude=packages/ --exclude=distfiles/ /usr/portage/ /nfsroot/usr/portage/</code>.
+
# Unfortunately mounting another nfs-share for the portage-tree later will not work, as nfs-utils are not installed yet (I'm working on a special nfsroot-efika-stage4).  Bind-mounting  a portage-tree on a Gentoo-system will not work either (nfs just ignores that).  So we have to download and unpack a current portage-snapshot into <tt>/nfsroot/usr/portage</tt>. Alternatively you can rsync your local portage-tree into <tt>/nfsroot</tt>: <code>rsync --archive --progress --exclude=packages/ --exclude=distfiles/ /usr/portage/ /nfsroot/usr/portage/</code>.
# Finally unpack the [http://www.efika.de/download/modules_efika.tgz precompiled modules] into <code>/nfsroot</code> (<code>tar xvzf modules_efika.tgz -C /nfsroot/</code>.
+
# Finally unpack the [http://www.efika.de/download/modules_efika.tgz precompiled modules] into <tt>/nfsroot</tt> (<code>tar xvzf modules_efika.tgz -C /nfsroot/</code>.
  
 
The nfsroot is now prepared for a first and simple boot.  Let us now set up the dhcp-/tftp-/nfs-server-voodoo.
 
The nfsroot is now prepared for a first and simple boot.  Let us now set up the dhcp-/tftp-/nfs-server-voodoo.
 +
 +
==== DHCP-Server ====
 +
I use dnsmasq for the dhcp-server, as it provides the possibilty to add tftp-dhcp-boot-options.  Basically you only need to set two lines in your <tt>dnsmasq.conf</tt>:
 +
<pre>
 +
dhcp-range=10.10.1.2,10.10.1.2,5m
 +
dhcp-host=00:0b:2f:e7:e7:20,10.10.1.2
 +
</pre>
 +
 +
;dhcp-range: <code><first-IP-address>,<last-IP-address>,<lease-time></code>
 +
;dhcp-host: <code><MAC-address>,<IP-address></code> (the MAC-address is printed on the sticker above the Ethernet-port)
 +
 +
Probably you might also want to set some more settings for the interface on the server, routing etc.  After that start the daemon.
 +
 +
==== TFTP-Server ====
 +
This time I use atftp as TFTP-Server.  This server expects <tt>/tftproot</tt> as the path for tftp-files.  But it's possible to change it in the config.
 +
 +
Now place [http://www.efika.de/download/kernel_efika the kernel] into <tt>/tftproot</tt> and start the daemon.
 +
 +
==== NFS-Server ====
 +
Add <code>/nfsroot        10.10.1.2(rw,sync,no_root_squash)</code> to your <tt>/etc/exports</tt> and start the daemon.  Make sure, that a firewall is not blocking nfs-requests.  Also make sure, that <tt>/etc/hosts.{allow,deny}</tt> are set properly.
 +
 +
==== Serial console ====
 +
Attach a null modem serial cable between the EFIKA and a PC with serial port.  I use <tt>screen</tt> as serial terminal program: <code>screen -m -c /dev/null /dev/ttyS0 115200 8n1</code>.
 +
 +
==== Booting ====
 +
Now, let's boot!  Switch on the EFIKA.  You should see some lines with RAM-checking etc.  After that you see a prompt:
 +
<pre>
 +
ok #
 +
</pre>
 +
 +
On that prompt type in <code>boot eth kernel_efika linux console=ttyPSC0 ip=dhcp panic=10 root=/dev/nfs nfsroot=10.10.1.1:/nfsroot</code>.
 +
 +
The EFIKA should download the kernel, boot up and will provide a login-prompt.  Log in with your root-password you set previously.  Welcome to your EFIKA!
 +
 +
==== Troubleshooting ====
 +
 +
* Check your serial and network cable
 +
* Check your daemon-log-files
 +
* Check your firewall if it allows DHCP, TFTP and NFS
 +
* Check the permissions of <tt>/tftproot</tt> and <tt>/nfsroot</tt>

Latest revision as of 17:37, 24 November 2010

The EFIKA is an embedded PowerPC board with a 400MHz 32-bit freescale MPC5200 (603e/e300), 128MB RAM, 100MBit/s NIC, 2xUSB 1.1, Soundchip, 2.5" harddisk connector, PCI and AGP (with riser-card) and serial out.

Pylon received a board for development work on it. I will leave it in the C4, so that we can attach additional hardware on it.

Ideas for development tasks

  1. mpd-server as in-replacement for the already existing one
  2. connection to the Fnordlicht (built at C4's U23 2005)
  3. using JACK for disco-lights

Booting

Harddisk

Currently I don't have any harddisk available, so this could not be tested. But it would be nice to create a complete stand-alone machine out of it.

USB

It's also possible to boot via USB. But it's only USB 1.1, so very slow.

NFS

I will use Gentoo/Linux on that machine. Yes, it might be slow, but it can be changed to your needs. Also it's possible to build on another PowerPC or with cross-dev.

Setup

Server
10.10.1.1
Client
10.10.1.2

Preparations

  1. Download a stage3-tar-ball and unpack it to e.g. /nfsroot.
  2. Change /nfsroot//etc/fstab, so that the root-filesystem will be mounted via NFS: 10.10.1.1:/nfsroot / nfs noatime 0 1
  3. Change /nfsroot/etc/securetty and add a line for logging in later via serial-line: echo ttyPSC0 >> /nfsroot/etc/securetty
  4. Also add that serial-line to /nfsroot/etc/inittab: echo "s0:12345:respawn:/sbin/agetty 115200 ttyPSC0 vt100" >> /nfsroot/etc/inittab (you can use linux instead of vt100 for a coloured term, but then you should have a good serial communicotian program)
  5. Add a password-hash for the root-password into /nfsroot/etc/shadow. I used htpasswd2 from apache for it. Call it with htpasswd -nb root secret. This will create the hash for the root-user with the password secret. Replace the * after root: in the shadow-file with that hash.
  6. Give your system a hostname in /nfsroot/etc/hostname and add that hostname after the localhost-entry in /nfsroot/etc/hosts
  7. Unfortunately mounting another nfs-share for the portage-tree later will not work, as nfs-utils are not installed yet (I'm working on a special nfsroot-efika-stage4). Bind-mounting a portage-tree on a Gentoo-system will not work either (nfs just ignores that). So we have to download and unpack a current portage-snapshot into /nfsroot/usr/portage. Alternatively you can rsync your local portage-tree into /nfsroot: rsync --archive --progress --exclude=packages/ --exclude=distfiles/ /usr/portage/ /nfsroot/usr/portage/.
  8. Finally unpack the precompiled modules into /nfsroot (tar xvzf modules_efika.tgz -C /nfsroot/.

The nfsroot is now prepared for a first and simple boot. Let us now set up the dhcp-/tftp-/nfs-server-voodoo.

DHCP-Server

I use dnsmasq for the dhcp-server, as it provides the possibilty to add tftp-dhcp-boot-options. Basically you only need to set two lines in your dnsmasq.conf:

dhcp-range=10.10.1.2,10.10.1.2,5m
dhcp-host=00:0b:2f:e7:e7:20,10.10.1.2
dhcp-range
<first-IP-address>,<last-IP-address>,<lease-time>
dhcp-host
<MAC-address>,<IP-address> (the MAC-address is printed on the sticker above the Ethernet-port)

Probably you might also want to set some more settings for the interface on the server, routing etc. After that start the daemon.

TFTP-Server

This time I use atftp as TFTP-Server. This server expects /tftproot as the path for tftp-files. But it's possible to change it in the config.

Now place the kernel into /tftproot and start the daemon.

NFS-Server

Add /nfsroot 10.10.1.2(rw,sync,no_root_squash) to your /etc/exports and start the daemon. Make sure, that a firewall is not blocking nfs-requests. Also make sure, that /etc/hosts.{allow,deny} are set properly.

Serial console

Attach a null modem serial cable between the EFIKA and a PC with serial port. I use screen as serial terminal program: screen -m -c /dev/null /dev/ttyS0 115200 8n1.

Booting

Now, let's boot! Switch on the EFIKA. You should see some lines with RAM-checking etc. After that you see a prompt:

ok #

On that prompt type in boot eth kernel_efika linux console=ttyPSC0 ip=dhcp panic=10 root=/dev/nfs nfsroot=10.10.1.1:/nfsroot.

The EFIKA should download the kernel, boot up and will provide a login-prompt. Log in with your root-password you set previously. Welcome to your EFIKA!

Troubleshooting

  • Check your serial and network cable
  • Check your daemon-log-files
  • Check your firewall if it allows DHCP, TFTP and NFS
  • Check the permissions of /tftproot and /nfsroot