Wir montieren einige leichte Maschinen mit dem ausdrücklichen Zweck, eine einzelne Webseite über einen großen Bildschirm anzuzeigen. Ich brauche die Maschine, um im Wesentlichen so leicht und so schnell wie möglich zu booten und im Wesentlichen einen Browser (WebKit?) Im Vollbildmodus auszuführen, der eine Seite lädt, die dynamisch von JavaScript gesteuert wird. Ich verwende einen Intel D525 Dual-Core-Prozessor mit integrierter GPU, sodass keine proprietären Grafiktreiber eingerichtet werden müssen. Sobald ich einen dieser Rechner richtig eingerichtet habe, sollte ich in der Lage sein, dd
die Festplatte auf meinen Computer zu laden und sie dann auf jeden neuen Rechner zu übertragen.
Ich habe folgende Fragen:
Wie kann ich eine "Distribution" erstellen, die nur das enthält, was ich brauche? Ich nehme an, ich brauche den Kernel (;]), X und irgendeinen Webbrowser, aber nicht wirklich zu viel anderes. Könnte ich etwas wie Ubuntu Server nehmen und einfach X Server installieren und eine Möglichkeit finden, den Computer automatisch anzumelden, X zu starten und den Webbrowser zu starten, ohne Fragen zu stellen? Gibt es ein Buch, das ich lesen kann oder einen Artikel oder etwas?
Was kann ich für einen netten, abgespeckten Webbrowser verwenden, der im Wesentlichen ein "chromloses Chrom" ausführt? Diese Computer akzeptieren überhaupt keine Benutzereingaben. Wenn ich sie verwalten muss, verwende ich SSH.
quelle
Zuallererst möchten Sie vielleicht das Rad nicht neu erfinden ... Es gibt mehrere kioskbezogene Distributionen. Eine davon könnte Ihnen viel Arbeit ersparen.
Zweitens, wenn Sie mit Kickstart unter Fedora und RHEL (oder CentOS oder Scientific Linux) vertraut sind, können Sie die Fedora-Tools verwenden, um eine beliebige dieser Distributionen selbst zu erstellen. Die Dokumentation ist etwas verstreut, aber fangen Sie hier an .
quelle
Beginnen Sie mit einer minimalen Distribution wie Arch Linux und installieren Sie dann die benötigten Pakete. Für einen einfachen Webbrowser versuchen Sie Uzbl .
quelle
Dies ist eine ziemlich komplizierte Frage, und da Ihr Projekt nicht ganz klar ist, sind einige dieser Vorschläge möglicherweise falsch, aber Sie sollten sie als zu bewertend betrachten.
Auf Computern, die Teil des Anzeigearrays sind, ist möglicherweise kein Webbrowser erforderlich. Wenn Sie versuchen, eine einzelne Seite auf mehreren Bildschirmen anzuzeigen, möchten Sie wahrscheinlich eine Art Massendisplay-Technologie verwenden. Es gibt verschiedene Varianten von Xorg, die darauf spezialisiert sind, ein großes Display aus Videogeräten auf mehreren Computern zu generieren.
Selbst wenn Sie auf jedem Computer separate X-Server verwenden, können Sie mithilfe der X-Weiterleitung Anzeigedaten von einem oder mehreren anderen Computern senden, sodass die Browser weiterhin nicht lokal ausgeführt werden müssen.
Sie sollten entweder gar keinen Fenstermanager verwenden und Geometriespezifikationen verwenden, um die App im Vollbildmodus zu starten, oder einen konfigurierbaren Kachel- oder Framework-Fenstermanager (z. B.
awesome
) verwenden, um die Fenster auf jeder X-Anzeige zu verwalten. Diese erleichtern das Sortieren und Steuern von Vollbildfenstern und sind in hohem Maße skriptfähig.Was einen Browser angeht, denke ich,
uzbl
ist wahrscheinlich die klare Wahl.Dies ist möglicherweise eine gute Anwendung zum Booten des Netzwerks. Sie können einen Server mit einem über TFTP verfügbaren Netbook-Kernel und einem über nfs verfügbaren Dateisystem einrichten. Alles, was Ihre Kunden tun müssen, ist, eine Netboot-fähige Netzwerkkarte zu verwenden, um diesen Server zu kontaktieren, ihren Kernel herunterzuladen und loszulegen. Keine Festplatte beteiligt! Und einfache Wartung. Alle Computer können möglicherweise dasselbe Image starten.
Ihre "Distribution" sollte wahrscheinlich aus zwei Dingen bestehen. 1) Ein Paketsatz und 2) Ein Satz von Konfigurationsdateien. Der Paketsatz ist eine Liste der Pakete, die installiert werden müssen. Dies kann in der Regel in einer Textdatei zusammengestellt werden. Anschließend können Sie die Paketmanager der meisten Distributionen verwenden, um diese Paketliste auf einem Ziel zu installieren (entweder auf einer Festplatte oder in einem Verzeichnis, das Ihr nfs-Einhängepunkt sein wird). Die Konfigurationsdateien sollten wahrscheinlich in
git
einem anderen Versionsverwaltungssystem aufbewahrt werden und einige Skripte und Konfigurationsmodifikationen enthalten, die auf dem mit dem Paketsatz installierten Basissystem vorgenommen werden müssen. Das Bauen eines neuen Systems wird dann zu:package_manager --install-distro --package-set=/path/packagelist.txt --target=/path
cd /target/path
git clone /path/to/repo
(oder überprüfen Sie auf andere Weise Ihren Konfigurationscode im Systemstamm)Welche Distribution Sie als Basis verwenden, hängt davon ab, womit Sie sich am wohlsten fühlen. Ich würde PLD-Linux für mich selbst verwenden, aber ich würde ArchLinux wahrscheinlich als ein ähnliches, aber besser dokumentiertes System empfehlen , mit dem ein Neuling arbeiten kann. Es gibt keinen Grund , warum Debian , Fedora oder Gentoo dafür nicht funktionieren würden.
quelle
dwm
oder verwendenawesome
. Wie kann ich einen Fenstermanager anweisen, eine Anwendung ohne Titelleiste im Vollbildmodus zu starten?apt-get
oderaptitude
auf Debian verwenden.Buildroot 2016.05 + Midori
Buildroot ist ein großartiges Tool, um minimale Distributionen zu erstellen:
.config
DateiMidori ist ein minimalistischer WebKit- basierter Browser, und Buildroot verfügt über ein integriertes Midori-Paket.
.config
Verwendete Datei: https://github.com/cirosantilli/buildroot-configs/blob/32d1174e0bf8d00b92323eebe8901af3f8c389d3/2016.05/qemu_x86_64_x11_midori_defconfigSo generieren Sie diese Konfigurationsdatei:
make menuconfig
mesa3d
Bereinigen Sie den Build, da wir die Toolchain geändert und erneut erstellt haben:
Warte Stunden. Dann das übliche:
Und von innen QEMU:
Klicken Sie in der X11-Benutzeroberfläche auf ein
xterm
Fenster und führen Sie Folgendes aus:Ergebnis:
Bildgröße: 220M! Vergleichen Sie das mit den 28M eines nackten X11-Systems. Wie installiere ich X11 auf meinem eigenen Linux Buildroot-System? - Unix & Linux Stack Exchange . Wahrscheinlich aufgrund von WebKit + GTK3-Abhängigkeiten.
Getestet auf Ubuntu 16.04 Host, QEMU 2.5.0.
NetSurf
Geschrieben in SDL, das fbdev unterstützt: http://www.netsurf-browser.org/about/screenshots/#framebuffer
fbdev ist ein untergeordnetes Interface, das von einem Linux-Kernel-Modul angeboten wird, das nicht über X11 läuft (ich denke, X11 kann es optional als Backend verwenden). Sie schreiben im Grunde nur in den Speicher und es wird auf dem Bildschirm angezeigt.
Um fbdev unter Ubuntu zu verwenden, müssen Sie ein TTY verwenden (z. B. Strg + Alt + F1).
Sie können also wahrscheinlich mit einem Bild davonkommen, das viel kleiner ist als das von Midori.
Buildroot 2016.05 hat ein Paket,
netsurf-buildsystem
das es bieten sollte, aber ich habe es nicht getestet. Wenn jemand es schafft, es zum Laufen zu bringen, bearbeite bitte einen Link zu einer .config, einem Screenshot und einer Bildgröße.quelle
Ich habe einmal ein kleines Bash-Skript geschrieben, das eine Arch Linux-ISO verwendet und eine neue ISO mit einem modifizierten Root-Image generiert, die eine vollautomatische Installation durchführt. Dies umfasst das Partitionieren sowie das Einrichten und Konfigurieren des Systems mit Xorg, FVWM und Chromium. Das installierte System meldet sich automatisch an und startet Chromium. Legen Sie einfach die neue ISO auf einen USB-Stick und lehnen Sie sich zurück. ;-)
Haftungsausschluss: Das Skript wird ohne Gewähr zur Verfügung gestellt. Ich habe es eine Weile nicht mehr benutzt, daher könnte es hier oder da eine Optimierung erfordern. Ändern Sie nach Bedarf.
quelle
Für ein solches System würde ich Puppy empfehlen .
Während Sie Ihre Distribution mit jeder Linux-Version erstellen können, ist es mit Puppy sehr einfach, benutzerdefinierte bootfähige Images zu erstellen, die kompakt sind und eine hervorragende Unterstützung für Overlay-Dateisysteme bieten.
Nein - ich würde empfehlen, ein bootfähiges Image zu erstellen, das Sie vernünftigerweise beibehalten können - der von Ihnen vorgeschlagene Ansatz wird zurückkehren und Sie beißen.
quelle
Einige Leute erwähnten uzbl und ich stimme zu, dass es eine gute Wahl ist - aber vielleicht findest du Luakit sogar noch besser.
Wie Caleb bereits erwähnte, brauchen Sie keinen Fenstermanager. Hier ist ein Beispielskript, das ich erstellt habe, um einen Xorg-Server ohne WM mit maximiertem luakit-Browser auszuführen:
Es benutzt das xdotool , um das Fenster direkt nach dem Start von luakit zu maximieren. Vielleicht gibt es dafür eine bessere Lösung ...
Für die Basis eines solchen Systems würde ich Gentoo definitiv empfehlen. Das liegt nicht nur daran, dass ich es am besten kenne;), sondern auch daran, dass die Build-Time-Optionen aller installierten Software nach einem einzigartigen Ansatz global verwaltet werden. Ich meine die USE-Flags . Mit diesen bestimmen Sie die Funktionen / Bibliotheken / Standards, die von allen Programmen verwendet werden, die sie unterstützen. Wenn Sie beispielsweise möchten, dass Ihre Programme ALSA verwenden und keine zusätzlichen Audio-Backends wie esd, jack oder pulseaudio benötigen, müssen Sie dies tun setzen Sie
alsa -jack -esd -pulseaudio
unter Ihre USE-Flags. Danach wird jedes Stück Software , bauen Sie diese DoseNeben ALSA werden zusätzliche Audio-Backends gebaut, ohne dass diese unterstützt werden. Da dies auf Konfigurations- / Build-Ebene geschieht, erhalten Sie eine erheblich dünnere Software. Das ist also eine Philosophie des Aufbaus (unter Beachtung aller Abhängigkeiten) anstatt des Abbaus (was möglicherweise fehlerhaft und sehr schwer zu warten ist).quelle
Ich werde das erwähnen, weil ich überrascht bin, dass es niemand anders hat.
Linux from Scratch ist ein Buch (pdf), das Sie durch die Erstellung Ihrer eigenen Linux-Distribution führt. Es ist vielleicht übertrieben für das, was Sie erreichen möchten (tatsächlich haben Sie bereits die Werkzeuge, die Sie benötigen), aber es kann sich als unschätzbares Werkzeug für das Verständnis der Funktionsweise eines Systems herausstellen. Es ist wirklich nicht so schwer und es gibt keine Programmierung.
quelle