Gentoo on Soekris

lspci udskrift

Fra net4801:

 00:00.0 Host bridge: Cyrix Corporation PCI Master
 00:06.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet  Controller
 00:07.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
 00:08.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
 00:12.0 ISA bridge: National Semiconductor Corporation SC1100 Bridge
 00:12.1 Bridge: National Semiconductor Corporation SC1100 SMI
 00:12.2 IDE interface: National Semiconductor Corporation SCx200 IDE (rev 01)
 00:12.5 Bridge: National Semiconductor Corporation SC1100 XBus
 00:13.0 USB Controller: Compaq Computer Corporation ZFMicro Chipset USB (rev 08)

Fra net5501:

00:01.0 Host bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] Host Bridge (rev 30)
00:01.2 Entertainment encryption device: Advanced Micro Devices [AMD] Geode LX AES Security Block
00:06.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96)
00:07.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96)
00:08.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96)
00:09.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96)
00:14.0 ISA bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA (rev 03)
00:14.2 IDE interface: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE (rev 01)
00:15.0 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC (rev 02)
00:15.1 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC (rev 02)

Bootstrapping Gentoo på en Soekris boks

Noter til installation af Gentoo på Soekris net5501 og net4801. Følgende er lavet med udgang i en gammel guide til net4801 af Lars Bisballe Jensen hvortil der er tilføjet noter angående net5501 og opdateringer, samt lokale konfigurationer (mimo usb display and usb serial adapter).

Partitionering

Se loopdevices for noter til hvordan en image fil kan partitioneres.

Installation

Som udgang følg Gentoo installation handbook med følgende ændringer:

Tilføj følgende linier til filen /mnt/gentoo/etc/make.conf:

 MAKEOPTS="-j2"
 GENTOO_MIRRORS="ftp://ftp.tu-clausthal.de/pub/linux/gentoo http://mirror.uni-c.dk/pub/gentoo ftp://ftp.du.se/pub/os/gentoo"
 SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

Nu skal kernel sourcen installeres. Skriv:

 # USE="-doc symlink" emerge -va gentoo-sources

Følgende indstillinger er essentielle:

Linux 2.6

 --> Processor type and features
     --> [ ]Symmetric multi-processing support
     --> Processor family
         -->(x) GeodeGX1 (for net4801)
         -->(x) Geode GX/LX (for net5501)

 --> Device Drivers
     --> ATA/ATAPI/MFM/RLL support
         --> <x> National SCx200 chipset support (for net4801)

     --> Serial ATA (prod) and Parallel ATA (experimental) drivers
         --> <x> SC1200 PATA support
     --> Network device support
             --> Ethernet (10 or 100Mbit)
                 --> [x] National Semiconductor DP8381x series PCI Ethernet support (net4801)
     --> Sound
         --> < > Sound card support

Linux 3.x:

 --> Processor type and features
     --> [ ]Symmetric multi-processing support
     --> Processor family
         -->(x) GeodeGX1

 --> Device Drivers
     --> Serial ATA and Parallel ATA drivers
         --> <x> SC1200 PATA support (for net4801)
         --> <x> CS5536 PATA support (for net5501)
     --> Network device support
             --> Ethernet (10 or 100Mbit)
                 --> [x] National Semiconductor DP8381x series PCI Ethernet support (for net4801)
                 --> [x] VIA Rhine support (for net5501)
     --> Sound
         --> < > Sound card support
     --> [x] USB support
         --> <M> USB Serial Converter support
             --> [x] USB Generic Serial Driver
             --> [x] USB Prolific 2303 Single Port Serial Driver
     --> Graphics support
         --> <*> Support for frame buffer devices
             --> <M> Displaylink USB Framebuffer support (for mimo display)
         --> Console display driver support 
             --> <x> Framebuffer Console support
     --> Input device support
         --> [x] Touchscreens 
             --> <M> USB Touchscreen Driver (for mimo display)
             --> [*] e2i Touchscreen controller (e.g. from Mimo 740) (NEW) (for mimo display)

Du kan naturligvis slå langt flere ting fra hvis du ønsker det, men ovenstående er vigtige for at systemet fungerer som det skal.

Herefter skal vi sørge for at vi kan logge ind gennem vores serial console kabel. Dette kræver en enkelt ændring i /etc/inittab filen. Find linierne der minder om nedenstående, og ret dem til så den ser således ud:

 # SERIAL CONSOLES
 s1:12345:respawn:/sbin/agetty 19200 ttyS0 vt100

Inittab filen sørger for at du kan logge på Soekris systemet gennem serial konsollen via et null modem kabel.

Opsæt nu maskinens ønskede hostname:

 # nano -w /etc/conf.d/hostname

Tilføj dansk som keyboard layout, hvis du ønsker det(skift “us” til “dk”):

 # nano -w /etc/conf.d/keymaps

Husk at ændre tiden til local time, hvis du kører lokal tid i hardware klokken(skift “UTC” til “local”):

 # nano -w /etc/conf.d/clock

Installer nu Grub boot loader:

 # emerge -va grub

Vi skal nu have optimeret /boot/grub/grub.conf til Soekris systemet. Vi skal sørge for at vi kan få output fra serial konsollen, så vi kan se hvad der foregår. Start med at fjerne en eventuel eksisterende grub.conf:

 # rm /boot/grub/grub.conf

Lav nu en ny:

 # nano -w /boot/grub/grub.conf

Lav første sektion, så den ser ud som følger:

 default 0
 timeout 5
 serial --unit=0 --speed=19200 --word=8 --parity=no --stop=1
 terminal serial

Tilføj nu din Gentoo kernel og tilhørende options. Indsæt følgende sektion, og ret den til, så det passer med dit eget kernel image.

 title=Gentoo Linux 2.6.19-r5
 root (hd0,1)
 kernel /boot/kernel-2.6.19-gentoo-r5 root=/dev/hda2 console=ttyS0,19200n8
 # kernel /boot/kernel-3.1.6-gentoo root=/dev/sda2 console=ttyS0,19200n8

Installer nu Grub i flash kortets MBR. Det er meget vigtigt at du definerer de korrekte hd værdier her. Grub tæller fra 0 og ikke fra 1 som Linux device nodes gør det. Hvis Sda er din første harddisk ville den altså hedde hd0 og partition nummer 1 på sda ville hedde hd0,0 og så fremdeles. Brug tab completion inde i grub programmet til hjælp. Start først grub:

 # grub

Definer nu root partitionen på flash kortet. Hvis flash kortet er sdb, er disk nummer 2 og har root partitionen som partition nummer 2, ville det se ud som følger:

 > root (hd1,1)

Grub installeres nu i MBR med kommandoen:

 > setup (hd1) <-- husk at det skal være flash kortets MBR
 > quit

Systemet er nu færdigbygget, og du kan hoppe ud af chrooten:

 # exit
 # umount /mnt/gentoo/proc
 # umount /mnt/gentoo/dev
 # umount /mnt/gentoo

Hvis alt gik vel er systemet er nu klar til boot. Får du problemer følger herunder lidt noter der måske kan afhjælpe nogle af tingene:

Du kan bruge programmet gtkterm fra X til at kommunikere med Soekris Net4801 via et null modem kabel. Tilslut kablet og sæt hastigheden til 19200, bits=8, stopbits=1, flowcontrol=none, parity=none. Du kan nu følge med i boot processen.

Bliver grub ikke loaded, har du installeret grub på en forkert disk. sæt kortet tilbage i flash reader maskinen, chroot ind i maskinen, eftertjek /boot/grub/grub.conf og kør grub igen.

Kan grub ikke finde dit root dir, skal du muligvis ændre hda2 til hdb2 i Grub opstarten. Dette skal i så fald også ændres i /etc/fstab(dette er afhængigt af hvordan din Soekris box ser flash kortet).

Husk at dit root drev skal mountes med options noatime is /etc/fstab for ikke at nedslide kortet:

#/dev/BOOT              /boot           ext2            noauto,noatime  1 2
/dev/sda1               /               ext3            noatime         0 1
/dev/sda2               none            swap            sw              0 0
#/dev/cdrom             /mnt/cdrom      auto            noauto,ro       0 0
#/dev/fd0               /mnt/floppy     auto            noauto          0 0

Optimering af portage tree

For at optimere portage tree'et på et embedded system, kan vi ekskludere de programmer vi ikke får brug for. Vi antager eksempelvist at der ikke skal være hverken X eller KDE/Gnome på systemet, så der er ingen grund til at have dem liggende i vores portage tree. Denne optimering foretages også af hensyn til “emerge –sync”, der vil blive langt hurtigere efter optimeringen. Ekskludering af “pakker” kan gøres på følgende måde:

Lav en fil der indeholder dine excludes(/etc/portage/rsync_excludes). Følgende kan copy/pastes og antages at være passende for et embedded system som Net4801. Mange flere ting kan pilles væk, så der kan frit tilføjes flere, hvis det ønskes:

 - app-accessibility/
 - metadata/cache/app-accessibility/
 - app-emulation/
 - metadata/cache/app-emulation/
 - app-laptop/
 - metadata/cache/app-laptop/
 - app-office/
 - metadata/cache/app-office/
 - app-pda/
 - metadata/cache/app-pda/
 - dev-games/
 - metadata/cache/dev-games/
 - games-*/
 - metadata/cache/games-*/
 - gnome-*/
 - metadata/cache/gnome-*/
 - kde-*/
 - metadata/cache/kde-*/
 - rox-*/
 - metadata/cache/rox-*/
 - media-gfx/
 - metadata/cache/media-gfx/
 - media-tv/
 - metadata/cache/media-tv/
 - media-video/
 - metadata/cache/media-video/
 - sci-*/
 - metadata/cache/sci-*/
 - x11-*/
 - metadata/cache/x11-*/
 - xfce-*/
 - metadata/cache/xfce-*/

Tilføj nu disse exludes permanent til /etc/make.conf:

 ...
 PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"
 ...

Fjern nu de tiloverblevne filer fra portage tree'et:

 cd /usr/portage
 rm -r `gawk '{ printf("%s ",$2) }' /etc/portage/rsync_excludes`

Optimeringen er nu udført.

Hardreset

Der kan op stå problemer med visse cf-kort ( se her).

For at undgå at soekrisboksen hænger efter soft-reboot kan man tvinge en hardreset under nedlukning (bemærk! dette ødelægger en “normal” nedlukning af boksen).

 # nano -w /etc/conf.d/local.stop
 #  /bin/umount /home
 #  /bin/echo 1 > /proc/sys/kernel/sysrq
 #  /bin/echo b > /proc/sysrq-trigger

Diskless

Server

 # mkdir /diskless
 # mkdir /diskless/home

Opret et directory for hver diskless klient:

 # mkdir /diskless/<HOSTNAME>

NFS

Eksporter /diskless read-only og /diskless/home read-write:

 # nano -w /etc/export
 # 
 #  /diskless/rootfs  *(sync,ro,no_root_squash,no_all_squash)
 #  /diskless/rootfs/home *(sync,rw,no_root_squash)
 #
 # /etc/init.d/nfs restart

DHCP og DNS

Indsæt følgende afsnit for hver diskless klient:

 #
 # TODO
 #

Indsæt foelgende i DNS-konfigurationen for hver diskless klient:

 #
 # TODO
 #

TFTP

Opsætning af tftp:

 # emerge tftp
 # rc-update add in.tftpd default
 # nano -w /etc/conf.d/in.tftpd
 #   INTFTPD_PATH="/diskless/" (Indsaet sti til tftp roden)
 #   INTFTPD_OPTS="-l -v -s ${INTFTPD_PATH}"

Opsætning af PXELINUX:

 # emerge syslinux
 # cp /usr/share/syslinux/pxelinux.0 /diskless # indsaet sti til tftp roden
 # mkdir /diskless/pxelinux.cfg
 # nano -w /diskless/pxelinux.cfg/default
 #   DEFAULT /bzImage
 #   APPEND ip=dhcp root=/dev/nfs nfsroot=10.3.20.30:/diskless/rootfs ro console=ttyS0,19200 udev init=/mount_tmpfs.sh

Root FS

Lav en normal stage-3 gentoo installation i /diskless/rootfs

Installer bind-tools (for host kommandoen), som bruges til at finde et hostname ud fra en ip-adresse.

 
 # emerge bind-tools

Kernel

 # Code maturity level options  --->
 #  [*] Prompt for development and/or incomplete code/drivers

 # Device Drivers --->
 #  [*] Networking support
 #  Networking options --->
 #   <*> Packet socket
 #   <*> Unix domain sockets
 #   [*] TCP/IP networking
 #   [*]   IP: multicasting
 #   [*]   IP: kernel level autoconfiguration
 #   [*]     IP: DHCP support (NEW)

 # File systems --->
 #  Network File Systems  --->
 #   <*> file system support
 #   [*]   Provide NFSv3 client support
 #   [*]   Root file system on NFS

Kompiler kernen og kopier den til /diskless/bzImage

Init

Undgå at overskrive netværkskonfiguration

 # nano -w /etc/conf.d/net
 #  config_eth0=( "noop" )

Konsoloutput

Tilføj følgende linie til /etc/inittab:

 # nano -w /etc/inittab
 #  # SERIAL CONSOLES
 #  s1:2345:respawn:/sbin/agetty -L 19200 ttyS0 vt100

Ram partition

Opret følgende shell script som /diskless/rootfs/mount_tmpfs.sh, som bliver kaldt umiddelbart inden services startes.

 # nano -w /diskless/rootfs/mount_tmpfs.sh
 #  #!/bin/bash
 #
 #  ### create ramdisks ###
 #  echo "creating ramdisk for /tmp"
 #  mount -n -t tmpfs tmpfs /tmp
 # 
 #  echo "creating ramdisk for /var/lib/init.d"
 #  mount -n -t tmpfs tmpfs /var/lib/init.d
 #
 #  echo "creating ramdisk for /var/log"
 #  mount -n -t tmpfs tmpfs /var/log
 #
 #  echo "creating ramdisk for /var/run"
 #  mount -n -t tmpfs tmpfs /var/run 
 # 
 #  echo "creating ramdisk for /var/lock"
 #  mount -n -t tmpfs tmpfs /var/lock
 #
 #  # TODO: Is this necessary?
 #  echo "creating ramdisk for /var/lib/nfs"
 #  mount -n -t tmpfs tmpfs /var/lib/nfs
 #
 #  echo "creating ramdisk for /root"
 #  mount -n -t tmpfs tmpfs /root
 #
 #  ### / ###
 #
 #  ### create ramdisk for /etc ###
 #  echo "saving /etc from NFS-Mount"
 #  cd /etc && tar cfj /tmp/etc.tar.bz2 *
 #
 #  echo "creating ramdisk for /etc"
 #  mount -n -t tmpfs tmpfs /etc
 #
 #  echo "populating /etc"
 #  tar xfj /tmp/etc.tar.bz2 -C /etc
 #  rm /tmp/etc.tar.bz2
 #  ### / ###
 #
 #  exec /sbin/init </dev/console >/dev/console 2>&1

Gør scriptet eksekverbart:

 # chmod +x /diskless/mount_tmpfs.sh

Skrivbart home

For at mounte et read-write home fra serveren (baseret paa hostname) kan følgende tilføjes /etc/conf.d/local.start:

 
 # nano -w /etc/conf.d/local.start
 #   MYIP=`/sbin/ifconfig eth0 | grep -o -m 1 "inet addr:[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"`
 #   MYHOSTNAME=`host $MYIP | grep -o "domain name pointer [^\.]*" | grep -o "[^ ]*$"`
 #   echo "HOSTNAME=\"$MYHOSTNAME\"" > /etc/conf.d/hostname
 #   /bin/hostname $MYHOSTNAME
 #
 #   /sbin/mount.nfs <SERVER_IP>:/diskless/rootfs/home/$MYHOSTNAME /home -w

Tilfoej local til default runlevel:

 # rc-update add local default
 
soekris/gentoo.txt · Last modified: 2012/02/23 12:27 by jsc
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki