Wie kann ich eine benutzerdefinierte Distribution zum Ausführen eines einfachen Webbrowsers erstellen?

18

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, dddie Festplatte auf meinen Computer zu laden und sie dann auf jeden neuen Rechner zu übertragen.

Ich habe folgende Fragen:

  1. 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?

  2. 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.

Naftuli Kay
quelle

Antworten:

12

Viele Distributionen bieten die Möglichkeit einer minimalen Installation. Im Wesentlichen, wenn Sie nur die Pakete manuell auswählen, die Sie explizit installieren möchten. Debian hat diese Fähigkeit und wäre in Ihrer Situation eine bessere Wahl als der andere offensichtliche Minimal-Konkurrent, Arch Linux.

Der fortlaufende Freigabestatus von Arch kann zu einer anhaltenden Komplexität führen, die Sie vermeiden möchten. Debian würde die einfache, minimale Basis bieten, die Sie suchen, und Stabilität bieten. Es gibt einen Blog-Beitrag über die Verwendung von Debian als Kiosk , der einige hilfreiche Tipps bieten kann.

Für einen Browser ist Uzbl , wie beav_35 vorschlägt, eine gute Wahl. Meine Empfehlung wäre Vimprobable , ein WebKit-Browser, der skriptfähig und tastaturgesteuert ist und effektiv über SSH gesteuert werden kann.

Als Fenstermanager würde ich dwm empfehlen : Bei weniger als 2000 SLOC ist es extrem leicht und kann einfach für ein Kiosk-Setup konfiguriert werden.

jasonwryan
quelle
dwm sieht für diesen Zweck gut aus und ich bin sowieso viel besser mit Debian-basierten Systemen vertraut, daher werde ich wahrscheinlich Debian verwenden. Auf wie wenig kann ich das Betriebssystem bringen? Und wie kann ich eine Debian-Distribution erstellen?
Naftuli Kay
Wenn Sie während der Installation den Schritt "Pakete auswählen" erreichen, wählen Sie anstelle von "Laptop", "Standard" usw. "Manuell" und wählen Sie nur die Pakete (wie X) aus, die Sie für ein Minimum benötigen: Starten Sie hier debian.org/CD / netinst / # Visitenkarten-Stall
Jasonwryan
5

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 .

Steven Pritchard
quelle
Debian / Ubuntu-Äquivalent: FAI (Vollautomatische Installation)
Gilles 'SO - hör auf, böse zu sein'
4

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 .

beav_35
quelle
uzbl ist großartig. +1
Naftuli Kay
3

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, uzblist 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 giteinem 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:

    • Laufwerk oder Zielverzeichnis einbinden
    • 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)
    • Installieren Sie den Bootloader, wenn Sie ein Laufwerk haben, oder fügen Sie die PXE-Konfiguration hinzu, wenn Sie einen Netboot ausführen
    • Stiefel.

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.

Caleb
quelle
beim booten im netz: das klingt FANTASTISCH und würde die wartung der dinge erheblich erleichtern. Jeder Computer muss jedoch eine andere URL laden, da er Informationen abruft, die für den Computer eindeutig sind. Ist das machbar? Alles andere würde scheinbar gleich bleiben, obwohl ich aus Sicherheitsgründen jeden Computer so konfigurieren könnte, dass er einen anderen Benutzer / ein anderes Kennwort für die HTTP-Basic-Authentifizierung verwendet.
Naftuli Kay
zu "Möglicherweise benötigen Sie nicht auf jedem Computer, der Teil des Anzeigearrays ist, einen Webbrowser": Ich denke, das werde ich tatsächlich. Jeder dieser Computer befindet sich an einem anderen Ort und steuert einen Bildschirm über VGA oder HDMI an, wodurch eine eindeutige Webseite für diesen Computer angezeigt wird. (obwohl wir eine einzelne URL bereitstellen könnten, deren Inhalt von Benutzer / Passwort abweicht).
Naftuli Kay
zu Fenstermanagern: Ich würde wahrscheinlich nur ein wirklich leichtes wie dwmoder verwenden awesome. Wie kann ich einen Fenstermanager anweisen, eine Anwendung ohne Titelleiste im Vollbildmodus zu starten?
Naftuli Kay
Woraus sollte die Distribution bestehen? Alles, was ich wirklich brauche, ist, ein Git-Repo zu erstellen, eine Paketliste und Konfigurationsdateien zu führen und dann irgendwie eine ISO zu erstellen. Wie bekomme ich die kleinste Debian-Distribution und arbeite dann von dort aus? Wie nehme ich diese Konfigurationsdateien und erstelle eine brennbare ISO? Ich würde apt-getoder aptitudeauf Debian verwenden.
Naftuli Kay
zur X-Weiterleitung: Sollte eigentlich nicht nötig sein, da ich pro Maschine ein Display ansteuere. Ich muss wahrscheinlich eine Möglichkeit finden, dass der Computer eine umgekehrte SSH-Verbindung herstellt, damit mein Computer eine Verbindung herstellen kann, aber es gibt möglicherweise eine Möglichkeit, dies zu automatisieren. Gibt es eine Möglichkeit, dass Computer A eine TCP-Verbindung zu Computer B herstellt und Computer B dann über SSH eine Verbindung zu Computer A herstellt? Andernfalls müsste ich dynamische DNS-Namen für jeden Router erhalten: nicht lustig / einfach.
Naftuli Kay
2

Buildroot 2016.05 + Midori

Buildroot ist ein großartiges Tool, um minimale Distributionen zu erstellen:

  • Sie geben es eine .configDatei
  • Es lädt und kompiliert alle erforderlichen Programme und Abhängigkeiten und erstellt ein Image

Midori ist ein minimalistischer WebKit- basierter Browser, und Buildroot verfügt über ein integriertes Midori-Paket.

.configVerwendete Datei: https://github.com/cirosantilli/buildroot-configs/blob/32d1174e0bf8d00b92323eebe8901af3f8c389d3/2016.05/qemu_x86_64_x11_midori_defconfig

So generieren Sie diese Konfigurationsdatei:

  1. Folgen Sie: Wie installiere ich X11 auf meinem eigenen Linux Buildroot-System? | Unix & Linux Stack Exchange zum Erstellen eines Images mit X11.
  2. make menuconfig
    1. Werkzeugkette
      1. C Bibliothek
        1. glibc (für midori)
    2. Zielpakete
      1. Grafikbibliotheken und Anwendungen
        1. mesa3d
          1. Wählen Sie alle Gallium- und DRI-Treiber aus, da ich nicht verstehe, welche benötigt werden (für OpenGL EGL).
          2. OpenGL EGL (für libgtk3)
      2. Bibliotheken
        1. Graphics 1. libgtk3 (für midori)

Bereinigen Sie den Build, da wir die Toolchain geändert und erneut erstellt haben:

rm -rf output
make BR2_JLEVEL=$(nproc)

Warte Stunden. Dann das übliche:

qemu-system-x86_64 \
    -enable-kvm \
    -M pc \
    -m 512 \
    -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext2,if=virtio,format=raw \
    -append root=/dev/vda \
    -net nic,model=virtio \
    -net user

Und von innen QEMU:

root
startx

Klicken Sie in der X11-Benutzeroberfläche auf ein xtermFenster und führen Sie Folgendes aus:

midori

Ergebnis:

Bildbeschreibung hier eingeben

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-buildsystemdas 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.

Ciro Santilli ist ein Schauspieler
quelle
1

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.

#!/bin/bash
# Helpful pages:
#
#   * [ArchWiki topic][1] that explains the options of an AIF configuration
#     file.
#
#   * [Status of automated installation][2], a topic in the Arch Linux Forums
#     that contains the original basic install script by *mhertz*.
#
# [1]: https://wiki.archlinux.org/index.php/AIF_Configuration_File
# [2]: https://bbs.archlinux.org/viewtopic.php?id=111925

TMP_DIR=/tmp/arch-install

# Read command line parameters for input and output ISO files.
if [ -z "$1" ]; then
    echo 'No input file specified, aborting.'
    exit 1
elif [ ! -f "$1" ]; then
    echo 'Input file "'$INPUT_ISO'" not found, aborting.'
    exit 1
elif [ -z "$2" ]; then
    echo 'No output file specified, aborting.'
    exit 1
elif [ -f "$2" ]; then
    echo 'Output file "'$OUTPUT_ISO'" already exists, aborting.'
    exit 1
fi

# Determine full paths to input and output ISO files.
INPUT_ISO=$(readlink -f "$1")
OUTPUT_ISO=$(readlink -f "$2")

# Set some variables for convenience.
SOURCE_DIR=$TMP_DIR/source
DEST_DIR=$TMP_DIR/dest
ROOT_DIR=$TMP_DIR/squashfs-root
BOOT_CFG=$DEST_DIR/boot/isolinux/isolinux.cfg

# Extract ISO image and root image.
mkdir -p $SOURCE_DIR
mount -o loop "$INPUT_ISO" $SOURCE_DIR
cp -a $SOURCE_DIR $DEST_DIR
umount $SOURCE_DIR
rmdir $SOURCE_DIR
unsquashfs -d $ROOT_DIR $DEST_DIR/root-image.sqfs
rm $DEST_DIR/root-image.sqfs

# Modify the root image as needed.
cat >> $ROOT_DIR/etc/aif.conf <<EOF
SOURCE=cd
FILE_URL=file:///src/core/pkg
SYNC_URL=http://ftp.tu-chemnitz.de/pub/linux/archlinux/\$repo/os/\$arch
HARDWARECLOCK=UpTC
TIMEZONE=Europe/Vienna
RUNTIME_REPOSITORIES=
RUNTIME_PACKAGES=
TARGET_GROUPS=base
TARGET_PACKAGES_EXCLUDE=
TARGET_PACKAGES='openssh xorg xcursor-vanilla-dmz-aa'

worker_runtime_network () {
    dhcpcd eth0
}

worker_configure_system () {
    prefill_configs
    sed -i '/^HOSTNAME/ s/"myhost"/"arch"/' \$var_TARGET_DIR/etc/rc.conf
    sed -i '/^password/ s/pam_permit\.so/pam_unix.so md5 shadow/' \$var_TARGET_DIR/etc/pam.d/chpasswd
    sed -i '\|Server = http://ftp\.tu-chemnitz\.de/| s/^#//' \$var_TARGET_DIR/etc/pacman.d/mirrorlist
    sed -i '/id:3:initdefault:/ s/^/#/' \$var_TARGET_DIR/etc/inittab
    sed -i '/id:5:initdefault:/ s/^#//' \$var_TARGET_DIR/etc/inittab
    sed -i '\|x:5:respawn:/usr/bin/xdm| s/^/#/' \$var_TARGET_DIR/etc/inittab
    echo "x:5:respawn:/bin/su -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1' myuser" >> \$var_TARGET_DIR/etc/inittab
    sed -i 's/^timeout .*$/timeout 0/' \$var_TARGET_DIR/boot/grub/menu.lst
    cp /etc/rc.local.firstboot \$var_TARGET_DIR/etc/rc.local
}

# Mandatory variables.
GRUB_DEVICE=/dev/sda
PARTITIONS='/dev/sda 20:ext2:+ 512:swap 2500:xfs *:xfs'
BLOCKDATA='/dev/sda1 raw no_label ext2;yes;/boot;target;no_opts;no_label;no_params
/dev/sda2 raw no_label swap;yes;no_mountpoint;target;no_opts;no_label;no_params
/dev/sda3 raw no_label xfs;yes;/;target;no_opts;no_label;no_params
/dev/sda4 raw no_label xfs;yes;/home;target;no_opts;no_label;no_params'
EOF

cat >> $ROOT_DIR/etc/rc.local <<EOF
aif -p automatic -c /etc/aif.conf
reboot
EOF

cat >> $ROOT_DIR/etc/rc.local.firstboot <<EOF
echo root:rootpassword | chpasswd
useradd -m myuser
echo myuser:myuser | chpasswd
cat >> /home/myuser/.xinitrc <<EOT
#!/bin/sh
exec fvwm2
EOT
cat >> /home/myuser/.Xdefaults <<EOT
Xcursor.theme: Vanilla-DMZ-AA
EOT
mkdir -p /home/myuser/.fvwm
cat >> /home/myuser/.fvwm/config <<EOT
DeskTopSize 1x1
DesktopName 0 Main
DestroyFunc StartFunction
AddToFunc StartFunction
 + I Test (Init) Exec exec xsetroot -solid '#303030'
 + I Test (Init) Exec exec chromium 'http://www.stackoverflow.com'
DestroyMenu RootMenu
AddToMenu RootMenu "Menu" Title
 + "Terminal" Exec exec xterm
 + "Browser" Exec exec chromium 'https://www.stackoverflow.com'
 + "" Nop
 + "Log off" Quit
 + "Reboot" Exec exec sudo /sbin/reboot
 + "Shutdown" Exec exec sudo /sbin/halt
OpaqueMoveSize unlimited
Style * ClickToFocus, ResizeOpaque
Style chromium !Title, !Border, !Handles
CursorStyle root top_left_arrow
CursorStyle stroke hand2
IgnoreModifiers L25
Key Help R A -
Key F1 R A -
Key Tab A M -
Key Escape A MC -
Mouse 1 R A -
Mouse 1 T A Move
Mouse 1 FS A Resize
Mouse 1 I A Iconify Off
Mouse 2 FST A -
Mouse 3 R A Menu RootMenu Nop
EOT
mkdir -p /home/myuser/.config/chromium/Default
touch /home/myuser/.config/chromium/First\ Run
cat >> /home/myuser/.config/chromium/Default/Preferences <<EOT
{
   "alternate_error_pages": {
      "enabled": false
   },
   "autofill": {
      "enabled": false
   },
   "browser": {
      "custom_chrome_frame": true,
      "enable_spellchecking": false
   },
   "default_search_provider": {
       "enabled": true,
       "encodings": "UTF-8",
       "icon_url": "about:blank",
       "id": "2",
       "instant_url": "",
       "keyword": "google.com",
       "name": "Google",
       "prepopulate_id": "1",
       "search_url": "{google:baseURL}search?ie={inputEncoding}&q={searchTerms}",
       "suggest_url": ""
   },
   "devtools": {
      "disabled": true
   },
   "dns_prefetching": {
      "enabled": false
   },
   "download": {
      "directory_upgrade": true
   },
   "extensions": {
      "chrome_url_overrides": {
         "bookmarks": [ "chrome-extension://eemcgdkfndhakfknompkggombfjjjeno/main.html" ]
      }
   },
   "geolocation": {
      "default_content_setting": 2
   },
   "google": {
      "services": {
         "username": ""
      }
   },
   "homepage": "https://www.stackoverflow.com",
   "homepage_is_newtabpage": false,
   "intl": {
      "accept_languages": "en",
      "charset_default": "ISO-8859-1"
   },
   "ntp": {
      "pref_version": 3
   },
   "profile": {
      "clear_site_data_on_exit": true,
      "content_settings": {
         "pref_version": 1
      },
      "default_content_settings": {
         "plugins": 1
      },
      "exited_cleanly": true,
      "notifications_default_content_setting": 2,
      "password_manager_enabled": false
   },
   "safebrowsing": {
      "enabled": false
   },
   "search": {
      "suggest_enabled": false
   },
   "tabs": {
      "use_vertical_tabs": false
   },
   "translate": {
      "enabled": false
   }
}
EOT
chown -R myuser:myuser /home/myuser
pacman -Sy
pacman -S --noconfirm pacman
pacman -S --noconfirm fvwm-devel chromium sudo
echo 'myuser arch=NOPASSWD: /sbin/halt,/sbin/reboot' > /etc/sudoers.d/start_stop
chmod 0440 /etc/sudoers.d/start_stop
rm /etc/rc.local
EOF

# Create the new root image.
mksquashfs $TMP_DIR/squashfs-root $TMP_DIR/dest/root-image.sqfs
rm -rf $TMP_DIR/squashfs-root

# Configure the boot loader.
sed -i 's/TIMEOUT 3000/TIMEOUT 100/' $BOOT_CFG
sed -i '/APPEND hd0 0/d' $BOOT_CFG
sed -i 's/archisolabel=[^ ]*/archisolabel=ARCH/' $BOOT_CFG

# Create the new ISO image.
genisoimage -l -R -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
    -no-emul-boot -boot-load-size 4 -boot-info-table -V ARCH \
    -o "$OUTPUT_ISO" $DEST_DIR
rm -rf $TMP_DIR
isohybrid "$OUTPUT_ISO"
igor
quelle
0

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.

Ich sollte nur in der Lage sein, die Festplatte zu dd

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.

symcbean
quelle
Die Sache ist, ich werde das Betriebssystem auf einem USB-Stick laufen lassen. Ich habe möglicherweise nicht einmal ein Festplattenlaufwerk, mit dem ich das Betriebssystem installieren kann.
Naftuli Kay
0
  • 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:

    #!/bin/sh
    XDCMD="xdotool search --class luakit windowsize %3 100% 100%"
    while [ 1 ]
    do
        ( sleep 0.5; $XDCMD || sleep 0.2 && $XDCMD || sleep 5 && $XDCMD ) &
        /usr/bin/luakit $@
    done
    

    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 -pulseaudiounter 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).

rozcietrzewiacz
quelle
0

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.

n0pe
quelle