Hallo zusammen,
ich versuche ein Minimales Debian zu bekommen.
Dazu habe Emdebian gefunden.
Ich würde halt gerne wirklich alles unnütze entfernen da es nur einen einzigen Dienst bereitstellen soll.
Ob es nun 100mb oder 80mb sind, ist mir dabei relativ egal. Aber eine Minial-Installation hat nun doch einiges mehr und braucht auch mehr Ram.
Dieses Image soll dann in einer VM laufen (KVM).
Ich habe ein fertiges Image gefunden, wo jedoch anscheinend die Sourcen oder Einstellungen nicht stimmen und Updates nicht laufen. Zudem würde ich es gerne selbst machen.
Ich finde leider keine gute Anleitung. Die Homepage des Projektes ist nicht sehr aufschlussreich und bezieht sich in Teilen auf ältere Versionen. Darum scheitern meine Versuche oft.
Aus dem fertigen Verzeichnisbaum der entsteht würde ich dann gerne ein Image basteln welches ich unter KVM mounten und starten kann. Dazu finde ich leider rein gar nichts im Netz.
Ich hoffe ihr könnt mir auf meinem Weg etwas weiterhelfen.
Vielen Dank
Stefan
Emdebian Anleitung
Re: Emdebian Anleitung
Ich hab' dazu keine weiterfuehrenden Links (vielleicht gibt's die auch nicht), sondern etwas mit deboostrap herum gespielt. Das Standard-"Image" ohne Kernel und Grub von Wheezy belegt 233 MB. Wenn ich da noch Kram rausschmeisse, der nicht unbedingt essentiell ist, kann ich das Ergebnis auf 156 MB druecken. Dabei ist /usr/share/{i10n,doc} mit "ueberfluessigen" 20 MB beteiligt, wobei in /lib Paketlisten/Caches von apt bald 70 MB belegen.
Links sind die Pakete, die nur im originalen chroot existierten, eingerueckt sind die neu installierten:localepurge spart ungefaehr 40 MB Lokalisierungen, wobei das eher rm -rf als sauberes Deinstallieren ist und mit Vorsicht genossen werden sollte. Allerdings hatte ich bisher keine Probleme deswegen.
Um in den Zielbereich von 100 MB zu kommen, muss man wohl apt rausschmeissen und ipkg/opkg oder sowas nehmen.
Gruss Cae
Links sind die Pakete, die nur im originalen chroot existierten, eingerueckt sind die neu installierten:
Code: Alles auswählen
# comm -3 <(chroot full dpkg -l | awk '{print$2}' | sort) <(chroot own dpkg -l | awk '{print$2}' | sort)
aptitude
aptitude-common
bsdmainutils
cron
dmidecode
groff-base
ifupdown
info
iproute
iptables
isc-dhcp-client
libept1.4.12
libxapian22
localepurge
locales
logrotate
man-db
manpages
nano
netcat-traditional
net-tools
rsyslog
tasksel
tasksel-data
traceroute
ucf
vim-common
vim-tiny
wget
whiptail
xz-utils
Um in den Zielbereich von 100 MB zu kommen, muss man wohl apt rausschmeissen und ipkg/opkg oder sowas nehmen.
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
-
- Beiträge: 41
- Registriert: 29.06.2007 16:56:47
Re: Emdebian Anleitung
Hi, klingt schon mal gut
apt soll drin bleiben, iptables brauche ich jedoch nicht (wird nur in einem internen Netz verwendet)
Aber wie genau gehe ich da vor?
Ein chroot erstellen und dann daraus ein bootbares Image erstellen? Hast du da was für mich?
150mb sind auch mehr als gut!
Möchte halt kein altes DSL nutzen welches nicht mehr gepflegt wird und brauche Debian-Basis. Daher der Aufwand
danke
apt soll drin bleiben, iptables brauche ich jedoch nicht (wird nur in einem internen Netz verwendet)
Aber wie genau gehe ich da vor?
Ein chroot erstellen und dann daraus ein bootbares Image erstellen? Hast du da was für mich?
150mb sind auch mehr als gut!
Möchte halt kein altes DSL nutzen welches nicht mehr gepflegt wird und brauche Debian-Basis. Daher der Aufwand
danke
Re: Emdebian Anleitung
So ungefaehrWenn ich nix vergessen hab', kann man den USB-Stick, oder was auch immer man da gerade als /dev/sdc bespielt hat, an 'nen anderen Rechner stekcen und booten koennen. Fuer bestimmte Netzwerkkarten braucht man Firmware, damit sie laufen, ggf. noch im chroot installieren, sofern noetig.
Was bei der Methode passieren kann, dass update-grub 'ne verkehrte Konfig zusammen baut, welche das "root"-Device aus GRUB-Sicht (real also /boot) auf /dev/sdc(1) baut, was es im Zielsystem gar nicht gibt. Dann wirst du beim Booten vermutlich 'ne GRUB-Error-Zeile bekommen und eine Mini-Shell. An der Stelle muss man etwas herumprobieren: Mit ls bekommt man eine Liste wie (hd0,msdos1) (hd0,msdos2) angezeigt. Das ist als (Platte,Partition) zu lesen, mit ls (hd0,msdos1)/ (Slash am Ende!) sollte man in das Dateisystem schauen koennen, sofern's lesbar ist. Sofern da etwas von config-... und System.map-... steht, ist's ziemlich wahrscheinlich /boot. Also setzen wir das als "root"-Device:. Anschliessend laden wir den Kernel und die initrd:Dann sollte das System erstmal booten (nicht erschrecken, der Kernel startet ohne quiet-Flag und schmeisst 'ne Menge Meldungen). Anmelden, update-grub fahren, rebooten, gucken, ob's durchlaeuft.
Mit Kernel und allem duerften da so 200 MB herum rausfallen.
Gruss Cae
Code: Alles auswählen
host# fdisk /dev/sdc # Partition(en?) anlegen
host# mkfs.ext3 /dev/sdc1
host# mount /dev/sdc1 /mnt
host# debootstrap stable /mnt http://ftp.de.debian.org/debian # oder lokaler apt-cacher-ng/sonstiger Proxy/Mirror
host# mount -t proc none /mnt/proc
host# mount -t sysfs none /mnt/sys
host# mount --bind /dev /mnt/dev
host# chroot /mnt
# anpassen: /etc/apt/sources.list, ggf. /etc/hostname, /etc/hosts, /etc/fstab (mit Hostsystem vergleichen)
chroot# apt-get install grub linux-image-686 # oder -amd64 bzw. -484 fuer steinalte Hardware
chroot# apt-get install locales localepurge # ... siehe Liste oben
chroot# apt-get purge aptitude # ... siehe Liste oben
chroot# grub-install /dev/sdc # sofern nicht bei der Kernelinstallation schon geschehen
chroot# exit
host# umount /mnt{/proc,/sys,/dev,}
Was bei der Methode passieren kann, dass update-grub 'ne verkehrte Konfig zusammen baut, welche das "root"-Device aus GRUB-Sicht (real also /boot) auf /dev/sdc(1) baut, was es im Zielsystem gar nicht gibt. Dann wirst du beim Booten vermutlich 'ne GRUB-Error-Zeile bekommen und eine Mini-Shell. An der Stelle muss man etwas herumprobieren: Mit ls bekommt man eine Liste wie (hd0,msdos1) (hd0,msdos2) angezeigt. Das ist als (Platte,Partition) zu lesen, mit ls (hd0,msdos1)/ (Slash am Ende!) sollte man in das Dateisystem schauen koennen, sofern's lesbar ist. Sofern da etwas von config-... und System.map-... steht, ist's ziemlich wahrscheinlich /boot. Also setzen wir das als "root"-Device:
Code: Alles auswählen
set root='(hd0,msdos1)'
Code: Alles auswählen
insmod linux # vermutlich notwendig
linux /vmlinuz... # genauer Name steht im ls-Output oben
initrd /initrd.img... # ebenso
Mit Kernel und allem duerften da so 200 MB herum rausfallen.
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier