Erstellen eines VMWare-Images
Development
- Allgemein
- Neutrino-HD-Entwicklung
- dbox2 Entwicklung
Inhaltsverzeichnis
Allgemein
Als sehr nützlich für die Erstellung einer Entwicklungsumgebung hat sich das Aufsetzen einer Virtualisierung erwiesen, wenn man nicht unbedingt ein komplettes Linuxsystem einrichten möchte oder kann. Dank gestiegener Hardwareleistung, insbesondere bei Mehrkernsystemen, ist der Umgang mit solch einer Lösung fast gleichwertig und eine sehr gute Alternative zu einem echtem Linuxsystem. Vor allem Neulinge auf diesem Gebiet, bietet diese Alternative einen optimalen Einstieg. Dank vorgefertigter und zum Teil für bestimmte Verwendungszwecke zugeschnittene Images, sind solche Systeme relativ schnell eingerichtet.
Voraussetzungen
Es wird davon ausgegangen, dass eine Windowsinstallation (>=WindowsXP) vorhanden ist und die enstprechende Hardware mit möglichst ordentlicher CPU, am besten Mehrkern-CPU's, vorhanden ist. Natürlich sollte VMware installiert sein. Eine Lösung über andere Virtualisierungs-Plattformen wie sie z.B. von Sun's VirtualBox besteht, ist im wesentlichen auch möglich. Andere sollten auch möglich sein, aber hierfür sind momentan keine weiteren Informationen bekannt.
Debian Squeeze
Installation
Es wird ein fertiges Image benötigt. Dafür diese Datei herunterladen:
http://cdimage.debian.org/debian-cd/6.0.1a/i386/iso-cd/debian-6.0.1a-i386-netinst.iso
VMWare vorbereiten
Einmaliger Prozess zum Erstellen des VMWare-Images:
- Menü File, New, Virtual Machine, Weiter, Typical, Linux - Ubuntu,
- Speicherort auswählen, Use bridged networking, 8GB -
Rest nicht verändern, Fertig stellen
- Menü VM, Settings, CD-ROM - Use ISO Image
obiges ISO auswählen
- Virtuelle Maschine starten
- Install, Enter
- German, Enter
- Deutschland, Enter
- Deutsch, Enter
(evtl. muss das Netzwerk konfiguriert werden)
- Rechnername tuxbox
- Geführt - verwende vollständige Festplatte, Enter
*Enter
- Alle Dateien auf eine Partition, Enter
- Partitionierung beenden und Änderungen übernehmen, Enter
- Änderungen auf die Festplatten schreiben? Ja, Enter
...Grundsystem wird installiert
- Root-Passwort vergeben
- Neuer Benutzer, Name: tuxbox
- Benutzername: tuxbox
Passwort vergeben
- Debian-Archiv-Spiegelserver Deutschland
- Server auswählen
- Paketverwendungserfassung nein, Enter
- Keine Software-Sammlung auswählen
alle Sterne entfernen, Enter
- Grub in Master Boot Record - Ja, Enter
Nach Beendigung der Installation, virtuelle Maschine neustarten!
Squeeze einrichten
Einmaliger Prozess zum Einrichten von Debian und Installieren der notwendigen Pakete:
Innerhalb der virtuellen Maschine anmelden als User root
apt-get update apt-get dist-upgrade apt-get install --no-install-recommends sudo openssh-server echo "tuxbox ALL=(ALL) ALL" >> /etc/sudoers ifconfig (die IP-Adresse von eth0 merken) logout
STRG+ALT, um das VMWare-Fenster wieder zu verlassen
per SSH (auf Windows ist Putty zu empfehlen!) zur virtuellen Maschine unter o.g. IP verbinden als User tuxbox einloggen
sudo apt-get install --no-install-recommends cvs libtool autoconf automake gettext autopoint make g++ flex bison patch bzip2 pkg-config zlib1g-dev python
für die Freunde des Midnight-Commanders:
sudo apt-get install --no-install-recommends mc
danach aufräumen:
sudo apt-get clean
Tuxbox-CDK einrichten
Als Bespiel soll hier eine allgemeine Vorgehensweise gezeigt werden, wie man sofort loslegen könnte. Detailierte Informationen zu Bauvorgang, Optionen usw. findet man unter Images und Yadd's erstellen.
mkdir $HOME/cvs $HOME/archive $HOME/customization
Herunterladen/Aktualisieren des Tuxbox-CVS:
cd $HOME/cvs CVS_RSH=ssh cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -P .
(beim ersten Mal die Frage nach RSA key fingerprint mit yes beantworten)
Kompilieren eines Images, dafür immer ein leeres Verzeichnis nehmen:
cd $HOME rm -rf compile image cp -r cvs compile
wenn Patches eingespielt werden sollen:
cd $HOME/compile patch -p0 -E -i /home/tuxbox/datei.diff
weiter:
cd $HOME/compile/cdk ./autogen.sh
Für eine Übersicht aller Konfigurationsoptionen:
./configure --help
./configure --prefix=$HOME/image --with-cvsdir=$HOME/compile --with-archivedir=$HOME/archive
optional:
--with-rootpartitionsize=0x460000
--with-customizationsdir=$HOME/customization
Nun können Images kompiliert werden:
make flash-neutrino-squashfs-all make flash-enigma-squashfs-all make flash-enigma+neutrino-squashfs-all
Das fertige Image liegt in
tuxbox@tuxbox:~$ ls -la $HOME/image/cdkflash/*img* -rw-r--r-- 1 tuxbox tuxbox 8257536 3. Feb 16:31 /home/tuxbox/image/cdkflash/neutrino-squashfs.img1x -rw-r--r-- 1 tuxbox tuxbox 8257536 3. Feb 16:31 /home/tuxbox/image/cdkflash/neutrino-squashfs.img2x
Yadd-Setup
Allgemeine Infos zum Thema Images und Yadd's erstellen
Hier nun die Setup-Anleitung für das VMWare-Image:
Setup einer Yadd-Umgebung, bestehend aus DHCP/bootp/NFS-Server.
Installieren und Konfigurieren des NFS-Servers:
su - root
Passwort für root eingeben, Enter
apt-get install --no-install-recommends nfs-kernel-server dhcp3-server tftpd apt-get clean sed -i "s/\/srv\/tftp/\/home\/tuxbox\/image\/tftpboot/" /etc/inetd.conf echo "/home/tuxbox/image/cdkroot *(rw,sync,no_root_squash,no_subtree_check)" >> /etc/exports logout
Von der Dbox wird die MAC-Adresse der Netzwerkkarte benötigt, dazu muss bereits ein Linux-Image auf der Box laufen. Per Telnet (geht auch mit Putty) eine Verbindung zur Dbox aufbauen, Username root, dann
ifconfig eth0
eingeben und den Wert hinter HWaddr ermitteln, dieser muss später in die Konfigurationsdatei des DHCP-Servers eingetragen werden, Beispiel:
eth0 Link encap:Ethernet HWaddr 12:34:56:78:9A:BC inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0
In diesem Fall ist die MAC-Adresse 12:34:56:78:9A:BC
Nun beginnt das Setup des DHCP-Servers innerhalb der VMWare-Sitzung.
Dieser wird benötigt, um Yadd zu booten. Wenn im Netzwerk bereits ein DHCP-Server aktiv ist, muss dessen Bootp-Unterstützung für die oben ermittelte MAC-Adresse deaktiviert werden. Da es viele unterschiedliche DHCP-Server gibt, kann ich hier nur ein Beispiel liefern:
host dbox { deny bootp; hardware ethernet 12:34:56:78:9A:BC; fixed-address 192.168.1.4; }
Entscheidend ist hier die Zeile "deny bootp;". Die Dbox hat die IP-Adresse 192.168.1.4, diese IP muss auch im DHCP-Server der VMWare-Sitzung für die Dbox verwendet werden.
Nun wird der DHCP-Server der VMWare-Sitzung konfiguriert, dazu wird der vorhandene Editor Nano genutzt, hier die Tastenübersicht.
Am einfachsten ist es, folgende Konfiguration zu übernehmen und die mit Dollarzeichen ($$$Beschreibung$$$) markierten Einträge zu bearbeiten.
sudo rm /etc/dhcp3/dhcpd.conf sudo nano /etc/dhcp3/dhcpd.conf
Folgenden Text in den Editor kopieren:
ddns-update-style none; allow bootp; option domain-name "$$$Domainname des Netzwerks$$$"; option domain-name-servers $$$IP des DNS-Servers$$$; option routers $$$IP des DNS-Servers$$$; default-lease-time 600; max-lease-time 7200; subnet $$$IP des DNS-Servers, endend auf Null$$$ netmask 255.255.255.0 { } host dbox { fixed-address [b]$$$IP der Dbox$$$[/b]; hardware ethernet [b]$$$MAC-Adresse der Dbox$$$[/b]; server-name "[b]$$$IP der VMWare-Sitzung$$$[/b]"; next-server [b]$$$IP der VMWare-Sitzung$$$[/b]; option root-path "/home/tuxbox/image/cdkroot"; if exists vendor-class-identifier { filename "/home/tuxbox/image/tftpboot/kernel-cdk"; } else { filename "/home/tuxbox/image/tftpboot/u-boot"; } }
STRG+X, J, Enter zum Speichern der Änderungen
sudo invoke-rc.d dhcp3-server restart sudo invoke-rc.d nfs-kernel-server restart sudo invoke-rc.d openbsd-inetd restart
Ein Yadd-Image eignet sich perfekt zum Debuggen.
Zum Kompilieren einer Yadd-Umgebung:
make yadd-neutrino make yadd-enigma
Wenn Neutrino und Enigma gleichzeitig gewünscht sind:
make yadd-neutrino yadd-enigma
Nach dem Kompilieren die Dbox2 in den deep-standby fahren, die o.g. Dienste aktivieren, ein serielles Log öffnen zum Überwachen des Bootprozesses und die Dbox2 einschalten.