OpenBSD ISO erzeugen

sebbo

aka noganex
Auf den Wunsch von Grunix hier ein kleines Perlscript, das automatisch die benoetigten Quellen fuer OpenBSD herunterlaedt und daraus eine ISO baut.

Im PATH sollte der Pfad zu wget eingetragen sein.
~ 350 MB werden dafuer gebraucht.

Ihr solltet $mirror in den gewuenschten Mirror umaendern.
$release ist das Releaseverzeichnis auf dem Mirror.
$workdir sollte passende Rechte haben.

#!/usr/bin/perl
use strict;

# Mirror hier eintragen. Kein Slash am Ende.
my $mirror = "ftp://ftp.calyx.nl/pub/OpenBSD";

# Die Releasenummer
my $release = "3.5";

# Das Arbeitsverzeichnis. Kein Slash am Ende.
my $workdir = "/home/euphoric/openbsd";

if(-d $workdir && -W $workdir){
chdir $workdir || die "Falsche Rechte fuer das Arbeitsverzeichnis.\n";
} else {
mkdir $workdir || die "Schreibrechte fuer das Arbeitsverzeichnis fehlen.\n";
chdir $workdir || die "Falsche Rechte fuer das Arbeitsverzeichnis.\n";
}
system "wget -c -N -P $workdir/$release/doc $mirror/doc/obsd-faq-de.pdf";
system "wget -c -N -P $workdir/$release/doc $mirror/doc/obsd-faq.txt";
system "wget -c -N -P $workdir/$release/doc $mirror/doc/pf-faq.txt";
system "wget -c -N -P $workdir/$release/doc $mirror/doc/pf-faq.pdf";

my $ver = $release;
$ver =~ s/\.//;
system "wget -c -N -P $workdir/$release $mirror/songs/song$ver.mp3";

system "wget -c -N -r -nd -P $workdir/$release/i386 $mirror/$release/i386";

system "mkisofs -q -l -J -r -o $workdir/openbsd-$release.iso -c boot.catalog -b i386/cdrom$ver.fs -V \"OpenBSD-$release\" $workdir/$release";
print "\n$workdir/openbsd-$release.iso wurde erstellt.\n\n";

Viel Spaß damit.
Sebastian
 
wie schon im anderen thread erwaehnt: benutz lieber mkhybrid statt mkisofs.

auf bald
oenone
 
oenone schrieb:
wie schon im anderen thread erwaehnt: benutz lieber mkhybrid statt mkisofs.
Kennst du den tollen Vorteil von OpenSource?
Wenn einem etwas nicht passt kann man es auf seine Beduerfnisse zuschneiden.
Jeder wird wahrscheinlich daran etwas zu bemaengeln haben.
Ich hab' da mkisofs gewaehlt weil es im Gegensatz zu mkhybrid auch unter vielen anderen Betriebssystemen der Standard ist. ;)
 
sebbo schrieb:
Auf den Wunsch von Grunix hier ein kleines Perlscript, das automatisch die benoetigten Quellen fuer OpenBSD herunterlaedt und daraus eine ISO baut.

Vielleicht kann man das noch soweit erweitern, das gleich ein ISO aus dem -STABLE-Zweig gebaut wird.


Zusätzlich nötige Zwischenschritte / Änderungen:

- source checkout ( -rOPENBSD_3_5 )
- release bauen nach release(8)
- anstatt FTP-Download die tarbälle aus $RELEASEDIR nehmen


Das wäre eine feine Sache!

Am besten per Wahlmöglichkeit - ob ftp oder cvs-build, bzw /usr/src neu auschecken, updaten oder einfach mit vorhandenem losbauen.
 
Mhja.. Wenn ich mal wieder Zeit fuer sowas habe werd' ich mir das mal genauer anschauen.

Ich dachte immer die Sachen im AnonCVS waeren die selben wie auf dem FTP Mirror?
 
sebbo schrieb:
Ich dachte immer die Sachen im AnonCVS waeren die selben wie auf dem FTP Mirror?

naja, nicht ganz..

" The OPENBSD_3_5 tag contains the release sources and errata already applied." (Aus http://openbsd.org/anoncvs.html )


Um die errata-fixes gehts ( http://openbsd.org/errata.html ) teilweise bis zu 20+ bugfixe pro release, da lohnt es sich schon, eine CD / tarballs mit aktuellster Version zu basteln (z.b. auch um leistungsschwächere rechner upzudaten (dann mit 'tar xzfp base35.tgz' ) oder frisch zu installieren).


Exakt der offiziellen FTP-release-version entsprechend ist das cvs-tag OPENBSD_3_5_BASE.




HTH


PS: Wenn du dann schon am Coden bist, dann gleich noch -CURRENT (cvs und ftp-version) berücksichtigen ;-) Macht wohl kaum Mehraufwand, nur leicht andere Quellen wie für das release. Und mehrere release zur Wahl stellen, da ja manche ihre Firewall o.ä. mit älteren Versionen betreiben.
 
Hier eine leicht abgeänderte Version, die zusätzlich noch folgendes herunterlädt:
  • Release Bild von der OpenBSD Homepage (puffyXX.jpg)
  • Den Release Song zusätzlich im .ogg Format
  • ports.tgz
  • PKGs für $arch (Bsp.: i386) (sie befinden sich im Verzeichnis $release/packages/$arch/ )

Vorteile:
  • Wesentlich mehr PKGs als auf den von OpenBSD angebotenen CDs
  • Nur einmaliges Downloaden der Pakete nötig - anschließend beliebig oft nutzbar

Es werden 3435 MB für den Download gebraucht, die .iso Datei ist 3406 MB groß (Stand 3.9er Release).
Das Ganze ist also ein Image für DVD-+R(W)'s.
Ich habe das fertige ISO Image mit growisofs -dvd-compat -Z /dev/rcd0d=openbsd-3.9.iso auf DVD gebrannt.

ACHTUNG: Während der Installation als "Sets Verzeichnis" bitte $arch (Bsp.: i386) (und nicht $release/i386) angeben.

Code:
#!/usr/pkg/bin/perl
use strict;

# Mirror hier eintragen. Kein Slash am Ende.
my $mirror = "ftp://ftp.de.openbsd.org/pub/OpenBSD";

# Die Releasenummer
my $release = "3.9";
my $ver = "39";

# Die Architektur
my $arch="i386";

# Das Arbeitsverzeichnis. Kein Slash am Ende.
my $workdir = "/mnt/usb/o/openbsd";

if(-d $workdir && -W $workdir){
chdir $workdir || die "Falsche Rechte fuer das Arbeitsverzeichnis.\n";
} else {
mkdir $workdir || die "Schreibrechte fuer das Arbeitsverzeichnis fehlen.\n";
chdir $workdir || die "Falsche Rechte fuer das Arbeitsverzeichnis.\n";
}
system "wget -c -N -P $workdir/$release/doc $mirror/doc/obsd-faq-de.pdf";
system "wget -c -N -P $workdir/$release/doc $mirror/doc/obsd-faq.txt";
system "wget -c -N -P $workdir/$release/doc $mirror/doc/pf-faq.txt";
system "wget -c -N -P $workdir/$release/doc $mirror/doc/pf-faq.pdf";

system "wget -c -N -P $workdir/$release $mirror/$release/ports.tar.gz";
system "wget -c -N -P $workdir/$release http://www.openbsd.org/images/puffy$ver.jpg";

system "wget -c -N -r -nd -P $workdir/$release/packages/$arch $mirror/$release/packages/$arch";

my $ver = $release;
$ver =~ s/\.//;
system "wget -c -N -P $workdir/$release $mirror/songs/song$ver.mp3";
system "wget -c -N -P $workdir/$release $mirror/songs/song$ver.ogg";

system "wget -c -N -r -nd -P $workdir/$release/$arch $mirror/$release/$arch";


#Kompatibilität der Verzeichnisse mit OpenBSD Standard
system "cd $workdir/$release && mkdir $release && cd $release  && ln -s ../$arch $arch && ln -s ../packages packages && cd ../..";

system "mkisofs -q -l -J -r -o $workdir/openbsd-$release.iso -c boot.catalog -b $arch/cdrom$ver.fs -V \"OpenBSD-$release\" $workdir/$release";
print "\n$workdir/openbsd-$release.iso wurde erstellt.\n\n";
 
Zuletzt bearbeitet:
Selbstverständlich steht es jedem frei
- dem Projekt etwas zu spenden...
- ein T-Shirt zu kaufen...
- ein Poster zu kaufen...
- trotzdem eine CD zu kaufen...

;)

Das ganze soll nicht als Ersatz sondern als Erweiterung gesehen werden.
 
d4mi4n schrieb:
wie war das mit obsd lebt vom verkauf der scheiben?

Hast schon recht. Aber ob der BSDForen User sie jetzt von Hand runter laedt und dann auf eine DVD brennt oder das durch ein Script machen lässt ist ja eigentlich egal. Wer die CDs/DVDs nicht kaufen will wird sie auch nicht kaufen.
Der Downloadservice sollte eigentlich für die jenigen sein welche immernoch eine 'dünne' Leitung haben.

Möglichkeit wäre auch, das man die Packages einfach als Dreingabe zur CD Bestellung gibt. Das überlege ich mir aber fürs nächste mal (falls ich die Sammelbestellung nochmal organisiere)

@mo_no & sebbo: Warum fehlt eigentlich immernoch das Lied als .ogg? ;)
 
Vorschlag:

Das Skript anpassen und noch die Architektur als Variable festlegen.

Zum Bespiel:
Code:
my $arch="amd64";

Und den Rest auch noch anpassen.

Ich passe das mal im Wiki an.
 
bossk schrieb:
Vorschlag:

Das Skript anpassen und noch die Architektur als Variable festlegen.

Zum Bespiel:
Code:
my $arch="amd64";

Und den Rest auch noch anpassen.

Ich passe das mal im Wiki an.

Macht das Sinn? Die Variable arch kann man auch so ändern und Sun funkt das Script sowieso nicht
 
Zurück
Oben