SDB:KIWI Kochbuch Startbildschirm
Getestet mit openSUSE | Empfohlene Artikel | Verwandte Artikel | |||
|
Inhaltsverzeichnis
Ein individuelles Bild für GRUB und den Startbildschirm
Dieses Beispiel zeigt auf, wie man den Startbildschirm während des Bootens einer SUSE-Distribution, die Grafik des Bootsplash Projekts verwenden (alle gegenwärtigen Distributionen) individuell anpasst.
Einführungen
Standardmäßig wird das Markenzeichen von SUSE-Distributionen von den Paketen bootsplash-branding* und gfxboot-branding- gesteuert. Das Paket gfxboot-branding- enthält die Informationen über das Bild, das hinter dem GRUB Menü angezeigt wird, das Menü, in dem Sie Ihren kernel aussuchen. Das Paket bootsplash-branding* enthält die Informationen über das Bild, das während des aktuellen Boot-Prozesses angezeigt wird.
Die individuelle Anpassung des Hintergrundbildes für den Startbildschirm und das GRUB-Menü erfordert die Vervielfältigung der Verzeichnisstrukturen der Pakete bootsplash-branding* und gfxboot-branding-. Um die Strukturen sehen zu können, geben Sie die folgenden Kommandos ein:
Das erstellt eine Liste von Paketen. In dieser Liste können Sie die exakte Bezeichnung des Paketes finden, an dem wir interessiert sind. Dann geben Sie ein:
um die Liste der Verzeichnisse und Dateien zu sehen, die vom Paket unterstützt werden. Ja, die Liste für beide Pakete ist ziemlich lang. Aber keine Angst, wir werden ein Script verwenden, um das Bild zu generieren, das für den Boot-Bildschirm benötigt wird. Für das GRUB-Menü wird nur ein Bild benötigt.
Bevor wir mit der Bildererstellung beginnen, lassen Sie uns ein Arbeitsverzeichnis erstellen.
Individuelle Gestaltung der Boot-Startbildschirm-Bilder
Bilder für den Boot-Startbildschirm
Das Script, das wir später verwenden wollen, um einen geeigneten Verzeichnis-Baum für das Boot-Hintergrund-Bild zu erstellen, erwartet PNG-Bilder für den Hintergrund und SVG-Bilder für das Logo, mit speziellen Bezeichnungen, um das Ausführungsverzeichnis zu repräsentieren. Die erwarteten Datei-Bezeichnungen sind wie folgt:
- background.png - Der Bildhintergrund, der während des stillen Starts angezeigt wird.
- background-verbose.png - Der Bildhintergrund, der angezeigt wird, während des ausführlichen Starts.
- logo.svg - Das Logo, das während des stillen Starts verwendet wird.
- logov.svg - Das Logo, das während des ausführlichen Starts gezeigt wird.
Sie können das Script verändern, um diese Bezeichnungen zu ändern, wenn Sie wollen. In diesem Fall werden wir die Namen die wir oben vorgestellt haben beibehalten.
Im Arbeitsverzeichnis starten Sie Ihr bevorzugtes Grafikwerkzeug und erstellen die Bilder für den Hintergrund und das Logo Ihrer Wahl. Behalten Sie die Erklärung am Beginn des Rezepts im Kopf. So können Sie nicht zu verrückt dabei werden. Wenn Sie bereits Bilder haben, brauchen Sie diese nur in das Arbeitsverzeichnis mit den geeigneten Bezeichnungen zu kopieren. Wenn Sie dieses Rezept nur ausprobieren wollen, ohne ein Bild erstellen zu müssen, mögen Sie die Bilder unten verwenden.
Wie Sie sehen können, benötigen Sie dafür kein künstlerisches Können.
Erstellung einer Struktur für das Bootsplash-Verzeichnis
Erstellen Sie ein Script (bootsplash.php) mit dem folgenden Inhalt im Arbeitsverzeichnis.
#!/usr/bin/php <?php //depends on graphicsmagic and rsvg $distro = "openSUSE 11.2"; $themename = "myTheme"; $themepath = "./bootsplash/$themename"; $imagepath = "/etc/bootsplash/themes/$themename/images"; //resolution, jpeg export quality pairs $resolutions = array("640x480"=>"95", "800x600"=>"95", "1024x600"=>"94", "1024x768"=>"94", "1152x768"=>"94", "1152x864"=>"93", "1280x768"=>"93", "1366x768"=>"93", "1280x800"=>"93", "1280x854"=>"93", "1280x960"=>"92", "1280x1024"=>"92", "1400x1050"=>"91", "1440x900"=>"91", "1600x1024"=>"90", "1600x1200"=>"89", "1680x1050"=>"89", "1920x1200"=>"80", "3200x1200"=>"70"); /* $resolutions = array("800x600"=>"95"); */ //create dirs if (!is_dir($themepath)) { //print "removing old theme $themename\n\n"; //exec("rm -rf ./theme/$themename"); mkdir ("./bootsplash"); mkdir ("$themepath"); mkdir ("$themepath/config"); mkdir ("$themepath/images"); } //create logos if (!is_dir('./temp')) { mkdir ("./temp"); } $cmd = "inkscape -w 180 -e ./temp/logo.png logo.svg"; //silent logo exec($cmd); $cmd = "inkscape -w 90 -e ./temp/logov.png logo.svg"; //verbose logo exec($cmd); $cmd = "gm convert -comment \"id logo deltabg stop\" ./temp/logo.png ./temp/logo.png ./temp/logo.mng"; exec($cmd); $cmd = "gm convert -colorspace gray -comment \"id logov deltabg stop\" ./temp/logov.png ./temp/logov.png ./temp/logov.mng"; exec($cmd); #exec("/usr/local/bin/convert ./building-blocks/logo.png $themepath/images/logo.mng"); copy("./temp/logo.mng", "$themepath/images/logo.mng"); copy("./temp/logov.mng", "$themepath/images/logov.mng"); while (list($res,$q) = each($resolutions)) { //scale backgrounds print "creating $res resolution images\n"; $in = "./background.png"; $inverb = "./background-verbose.png"; $silent = "$themepath/images/silent-$res.jpg"; $verbose = "$themepath/images/bootsplash-$res.jpg"; $cmd = "gm convert $in -geometry $res\! -quality $q -interlace None -colorspace YCbCr "; $cmd .= " -sampling-factor 2x2 $silent"; exec($cmd); $cmd = "gm convert $inverb -geometry $res\! -quality $q -interlace None -colorspace YCbCr "; $cmd .= " -sampling-factor 2x2 $verbose"; #$cmd = "gm convert $in -colorspace gray -geometry $res\! -quality $q -interlace None "; #$cmd .= "-colorspace YCbCr -sampling-factor 2x2 $verbose"; exec($cmd); //generate config files print "Generating config file for $res\n"; $fp = fopen("$themepath/config/bootsplash-$res.cfg", "w"); fwrite($fp, "# This is a bootsplash configuration file for\n"); fwrite($fp, "# $distro, resolution $res.\n"); fwrite($fp, "#\n"); fwrite($fp, "# See www.bootsplash.org for more information.\n"); fwrite($fp, "# created by SUSE Image Builder\n"); fwrite($fp, "#\n"); fwrite($fp, "version=3\n"); //config file version fwrite($fp, "state=1\n"); //picture is diplayed fwrite($fp, "progress_enable=0\n"); //no progress fwrite($fp, "overpaintok=1\n"); //no clue what this is fwrite($fp, "\n\n"); //colors fwrite($fp, "fgcolor=7\n"); fwrite($fp, "bgcolor=0\n\n"); //text window frame ereg("([0-9]+)x([0-9]+)", $res, $dimensions); $x = $dimensions[1]; $y = $dimensions[2]; $tx = 20; $ty = 60; $tw = $x - $tx - 10; $th = $y - $ty; fwrite($fp, "tx=$tx\n"); fwrite($fp, "ty=$ty\n"); fwrite($fp, "tw=$tw\n"); fwrite($fp, "th=$th\n"); //background fwrite($fp, "\n\njpeg=$imagepath/bootsplash-$res.jpg\n"); fwrite($fp, "silentjpeg=$imagepath/silent-$res.jpg\n"); fwrite($fp, "\n\n"); $lx = round($x/2); $ly = round($y/2)-20; fwrite($fp, "mnganim logo $imagepath/logo.mng initframe logo silent center $lx $ly\n"); //overlay title (verbose) $vlx = 2; $vly = 2; fwrite($fp, "mnganim logov $imagepath/logov.mng initframe logov origin 0 $vlx $vly\n"); //animation triggers fwrite($fp, "trigger \"isdown\" quit\n"); fwrite($fp, "trigger \"rlreached 5\" toverbose\n"); fwrite($fp, "trigger \"rlchange 0\" tosilent\n"); fwrite($fp, "trigger \"rlchange 6\" tosilent\n"); $verticalpcnt = 0.8; $width = 160; //width of the progress bar $voffset = 30; //vertical offset from the title (defined by verticalpcnt above) $x1 = $lx - round($width/2) - 4; $x2 = $x1 + $width; //$y1 = round($verticalpcnt*$y); $y1 = round($ly+$voffset); $y2 = $y1+1; //let's try a 2 pixel line fwrite($fp, "\n\n"); fwrite($fp, "progress_enable=1\n"); //enable progress fwrite($fp, "box silent noover $x1 $y1 $x2 $y2 #ffffff10\n"); //progress background $wl = "box silent inter " . $x1 . " " . ($y1 - 1) . " " . $x1 . " " . ($y1 + 1) . " #ffffff80\n"; fwrite($fp, $wl); //starting point ... $wl = "box silent " . $x1 . " " . ($y1 - 1) . " " . $x2 . " " . ($y2 + 1) . " #ffffff80\n"; fwrite($fp, $wl); //..iterated to this fclose($fp); } ?>
Danke an Jakub für dieses Script.
Dann führen Sie das Script aus.
Ist das Script komplett, werden Sie ein Bootsplash-Verzeichnis in Ihrem Arbeitsverzeichnis haben. Das enthält alles, was Sie brauchen, um den Boot-Startbildschirm individuell anzupassen.
Das Script zur Erstellung des Abbild-Baums
Einige Notizen zum obigen Script.
- Der Wert der Variablen $themename ist willkührlich gewählt. So könnten Sie etwas kreativeres als myTheme verwenden. Dieser Wert wird später in der Datei config.xml verwendet. Die Forderung ist, dass diese Bezeichnung und die Bezeichnung, die in der Datei config.xml verwendet wird, übereinstimmen müssen. So passen Sie auch auf Tippfehler auf.
- Die Zahlen im Verzeichnis oder das Rautenzeichen nach der gegebenen Lösung zeigt die Qualität für die Zwecke der Bild-Umwandlung an. Höhere Qualitätszahlen bedeuten einen größeren Dateiumfang. So ist es eher möglich, dass Sie eher an die Grenze des Bootsplash-Systems kommen. Eine ungefähre Abschätzung ist, dass keine Datei größer als 70K sein sollte. Sie können die Größe des Bildes beeinflussen, indem Sie diese Zahlen verändern. Das ist keine exakte Größe, aber Versuch und Irrtum ist unvermeidlich.
Das sind die einzigen Änderungen, die Sie im Script ändern müssen. Das Script erzeugt ebenso die Konfigurationsdatei. Und Sie können damit nach Herzenslust rumspielen bis Sie die Farbeinstellung haben, die Sie wünschen.
Tackling the GRUB background
Die Hintergrundbilder
Starten Sie Ihr favorisiertes Bildbearbeitungswerkzeug und erstellen Sie ein Hintergrundbild, dass Sie gerne im GRUB-Menü verwenden würden. Eine Datei sollte mit back.jpg und die andere mit pback.jpg bezeichnet werden. Die Verwendung dieser Dateinamen wird es Ihnen erlauben, es zu vermeiden, die Konfigurationsdatei zu hacken. Wenn Sie bereits das Bild haben, kopieren Sie es in das Arbeitsverzeichnis mit diesem Namen. Wenn Sie nur der Beschreibung mit dem Beispiel folgen wollen, können Sie gern die vorbereiteten Bilder unten verwenden.
Einrichtung der Verzeichnisstruktur
Das Bild ist erstellt. Nun müssen wir die Verzeichnisstruktur einrichten. Die Bilder für den GRUB-Hintergrund müssen unter /usr/share/gfxboot/themes/THEME_NAME/{data-boot,data-install} abgelegt werden. Zusätzlich zu den Bildern benötigen wir Konfigurationsdateien und eine Verknüpfung zu einem Makefile.
Statt die Infrastruktur von Grund auf zu erstellen, ist es leichter sich an eine vorhandene Arbeit anzuhängen. Installieren Sie das Paket gfx-devel und verwenden Sie vorkonfigurierten Konfigurationsdateien usw.
Ist es installiert, können Sie eins der abgeleiteten Themen kopieren und es einen eigenen Namen geben.
Die Bezeichnung Ihres Themas (myTHeme) muss mit der Bezeichnung in der Variablen $themename im bootsplash.php Script oben übereinstimmen. Dann ersetzen Sie das Bild durch Ihr eigenes.
Fühlen Sie sich frei, die verschiedenen Konfigurationsdateien zu erkunden und sie so zu modifizieren, wie sie für Sie geeignet erscheinen. Die Seite Gfxboot unterstützt all die mörderischen Details, an denen Sie interessiert sein könnten.
Integration der spetifischen Anpassung
Da nun das Bild erstellt und eingerichtet wurde, können wir nun mit der Integration unserer Anpassungen in ein KIWI-Abbild-Bau fortfahren. Für dieses Beispiel werden wir das Live-ISO-Beispiel verwenden, unterstützt vom Paket kiwi-doc.
- Kopieren Sie die Beispiel-Konfiguration in das Arbeitsverzeichnis.
- Erstellen Sie die Verzeichnisstruktur für das Bootsplash-Thema und verschieben oder kopieren Sie Ihr Thema hinein.
- Erstellen Sie eine Verzeichnisstruktur für das gfxboot Thema und verschieben oder kopieren Sie es hinein.
- Verpacken Sie die Themen in einen Tarball und verschieben oder kopieren Sie es in den KIWI-Konfigurations-Baum.
- Bearbeiten Sie die Datei config.xml mit Ihrem bevorzugten Editor
- Ersetzen Sie die Repository-Definition, wenn Sie nicht die Pakete über das Internet ziehen wollen.
- In des Elements <preferences> fügen Sie ein Kind-Element mit der Bezeichnung <boot-theme> und den Wert Ihres Themen-Namens hinzu. In diesem Beispiel hat der Konfigurationseintrag die folgende Form:
<boot-theme>myTheme</boot-theme>
- In des Elements <packages> fügen Sie ein Kind-Element mit der Bezeichnung <archive> hinzu, setzen den Attribut-Wert name auf den Namen des Tarballs, den wir kürzlich erstellt haben und setzen das bootinclude auf true. In diesem Beispiel hat der Konfigurationseintrag die folgende Form:
<archive name="myTheme.tgz" bootinclude="true"/>
- Fügen Sie das Paket gfx-devel als Stapel zu include und beziehen es in das Boot-Bild wie folgt ein:
<package name="gfxboot-devel" bootinclude="true" bootdelete="true"/>
- Löschen Sie die Zeilen, die das SUSE-Markenzeichen enthalten.
Mit diesen Änderungen angewendet, sollte das Element <packages> ähnlich dem unten aussehen.
<packages type="image" patternType="plusRecommended" patternPackageType="plusRecommended"> <archive name="myTheme.tgz" bootinclude="true"/> <package name="gfxboot-devel" bootinclude="true" bootdelete="true"/> <package name="kernel-default"/> <package name="bootsplash"/> <package name="ifplugd"/> <package name="vim"/> <namedCollection name="default"/> <namedCollection name="kde4"/> </packages>
Das vervollständigt die Integration der persönlichen Bilder. Was übrig bleibt, ist, das Bild zu bauen und zu testen.
Ist das ISO-Abbild mit KIWI gebaut, können Sie es mit Qemu wie folgt testen:
qemu-kvm -cdrom=/tmp/customBoot_image/IMAGE_NAME.iso