123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- # Die APU aufbauen und mit Debian in Betrieb nehmen
- # Spezifikationen
- - <https://www.pcengines.ch/apu4d4.htm>
- # Montage des Kühlers
- - <https://www.pcengines.ch/apucool.htm>
- Die Montage des Kühlers, d.h. das Aufkleben der Aluplatte an die richtige Stelle im Gehäuse, geht auch gut damit, dass man
- - die Platine ohne Kühlung provisorisch in das Gehäuse einfügt, dann
- - sich durch die beiden großen Löcher in der Platine mit einem Stift Markierungen auf der Innenseite des Gehäuses anbringt. Die beiden Löcher markieren gut die Diagonale der Postion des Alukühlers.
- Dann klebt man das Alublech auf und schiebt dann die Platine zuerst verkanntet ein und presst sie dann vorsichtig auf das Alublech.
- # BIOS Anmerkung
- Änderungen im BIOS 4.12.0.1 (nach F10) werden erst beim nächsten Einschalten, also nach stromlos, wirksam.
- Auch wenn die geänderte Einstellung schon vorher im Menü erscheint.
- Aufgefallen / getestet mit der m Option (clk für die WLAN Karte).
- # Energieverbrauch
- Gemessen mit ELV Energy Master Basic 2 und Steckernetzteil Seanon KSA 24W 120/200VE Output 12V 2A
- APU4D4 mit 256GB SSd und WLE600 Wlankarte
- APU beim booten: max 9W
- APU im Leerlauf: 5,4W
- APU im Leerlauf mit BIOS PCIe Powermanagement: 4,7W
- APU ausgeschaltet: 1,5W
- Nur Netzteil: 0,0W
- # APU Installation auf dem PC vorbereiten
- Erforderlich ist ein Nullmodemkabel zur Verbindung APU <--> PC
- Ein Terminalprogramm (z.B. minicom)
- Eventuell bei Installation PXE übers Netz ein tftpserver (z.B., dnsmasq)
- # APU Installation mit USB-Stick
- Bereithalten: einen USB-Stick mit dem aktuellen Debian Image, Stick als bootbar definiert mit:
- - mit `sudo dd bs=4M if=/path/to/debian-10.0.0-amd64-netinst.iso of=/dev/sdx status=progress oflag=sync` das Image auf den Stick kopieren
- - mit dem USB-Stick booten, dann im Grub-Menü die Bootzeile mit `e` editieren:
- - wenn das grub-Menu da ist, mit `e` die Befehlszeile ändern und dazu hinter /linux/ boot ergänzen:
- `console=ttyS0,115200n8`
- Damit ist die serielle Schnittstelle bis zum nächsten Booten als Standard festgelegt.
- Wenn das System installiert ist und neu bootet, auch an dieser Stelle wie beschrieben im Grub-Menu mit `e`
- die Grub-Befehlszeile ändern und ttyS0 aktivieren.
- # APU Netz Installation von Debian oder Ubuntu
- Für die Installation über das Netz ohne Bootmedium und mit vorbelegten Antworten
- muss das eigene Netzwerk eingerichtet werden mit folgenden Diensten:
- - TFTP-server mit dem Bootimage
- - DHCP-server / Proxy der der APU ip-adresse und Pfad zum Bootimage übermittelt
-
- ## Verwendete Hardware
- - Privates LAN mit Internetzugang, Router als DHCPserver z.B. Fritz!Box
- - Rechner als PXE - BOOTP - TFTP - DHCP Server (nicht exklusiv)
- - APU4D4 mit 4Gb RAM, 256GB SSD und WLE600 Wlankarte (bislang nicht verwendet)
- - Serielles Nullmodem Kabel zwischen APU und Rechner
- - Netzwerkkabel
- ## Verwendete Adressen
- - Diese sind an die eigenen anzupassen
- - 192.168.178.0/24 Netzwerk
- - 192.168.178.254 Fritz!Box Router, DHCPserver, Zugang Internet
- - Die folgenden Adressen ausserhalb des Bereiches F!B DHCP-server
- - 192.168.178.51 Statische Adresse für die APU (später)
- - 192.168.178.52 Statische Adresse für den PXE - BOOTP - TFTP server
- ## Einrichten PXE - BOOTP - TFTP- Server
- - Anleitung von Marcel verwendet / erweitert für TFTP-server
- - dnsmasq installieren falls nötig:
- sudo apt install dnsmasq
- - Anpassen /etc/dnsmasq.conf
- - Da wir nur wenig Funktionen von dsnmasq benötigen, löschen wir die installierte
- Datei und ersetzen sie durch folgenden Inhalt.
- dhcp-range=192.168.178.0,proxy # Unser Netzwerk.
- dhcp-boot=pxelinux.0,192.168.178.52,192.168.178.0 # IP TFTP-Server und Netzwerk.
- pxe-service=x86PC,"Netzwerk Boot",pxelinux # gewünschter Dienst
- enable-tftp # aktiviere TFTP-server
- tftp-root=/var/lib/tftp # hier liegen die Daten Debian 12 Bookworm
- port=0 # DNS brauchen wir hier nicht
- ### Bootimage holen im Browser oder mit wget, ...
- - [download netboot.tar.gz Image](https://ftp.halifax.rwth-aachen.de/debian/dists/buster/main/installer-amd64/current/images/netboot/netboot.tar.gz)
- - Verzeichnis für TFTP-server anlegen
- sudo mkdir /var/lib/tftp
- - Bootimage dort entpacken
- - sudo tar xvf netboot.tar.gz -C /var/lib/tftp
- ### Konfigurations Dateien für die Clients erstellen oder anpassen
- Es kann für jeden Client eine spezielle Datei erstellt werden oder auch mehrere allgemeinere für mehrere Clients.
- Weitere Infos in https://wiki.ubuntuusers.de/PXE-Boot/
- Die in netboot.tar enthaltene default Konfigurationsdatei pxelinux.cfg/default kann für die APU nicht ohne Anpassung verwendet werden wegen fehlender Grafikkarte.
- Inhalt der default Datei für APU Installation im tftpserver mit Antwortdatei (debseed.cfg)
- Achtung IP-adresse tftp Server evtl. anpassen
- Dateiname C0A8B2 ergibt sich als hex von 192.168.178. Damit kann diese Datei für alle Geräte im Netz 192.168.178.0/24 verwendet werden.
- SERIAL 0 115200
- CONSOLE 0
- default Bookworm
- ALLOWOPTIONS 0
- TIMEOUT 600
- LABEL Bookworm
- MENU LABEL ^Bookworm
- KERNEL debian-installer/amd64/linux
- append interface=enp1s0 priority=critical initrd=debian-installer/amd64/initrd.gz auto=true url=tftp://192.168.178.52/debseed.cfg console=ttyS0,115200n8 --- console=ttyS0,115200n8
- Die Antwortdatei debseed.cfg und die Hilfsdatei netcfghack.sh müssen sich im TFTP-server Rootverzeichnis befinden.
- netcfghack.sh sorgt für die statische Netzkonfiguration von enp1s0 der APU.
- #!/bin/sh
- killall-dhcp
- netcfg
- echo netcfghack ende
- debseed.cfg hier ohne Kommentare, aber noch ein Hinweis zu Partionierung
- In debseed.cfg wird der größte freie (unpartionierte) Bereich genommen. 20G sind gut ausreichend. Ist keiner vorhanden >12G, fällt die Installation in den interaktiven Modus.
- Weitere Informationen im Debian Installationshandbuch [Debian Handbuch](https://www.debian.org/releases/stable/amd64/apbs04.en.html)
- #_preseed_v1
- ######### debseed.cfg ohne Kommentare, damit sie ins wiki passt
- d-i apt-setup/contrib boolean true
- d-i apt-setup/non-free boolean true
- d-i apt-setup/non-free-firmware boolean true
- d-i apt-setup/security_host string security.debian.org
- d-i apt-setup/services-select multiselect security, updates
- d-i clock-setup/ntp boolean true
- d-i clock-setup/utc boolean true
- d-i debian-installer/country string DE
- d-i debian-installer/language string en
- d-i debian-installer/locale string de_DE.UTF-8
- d-i finish-install/keep-consoles boolean true
- d-i finish-install/reboot_in_progress note
- d-i grub-installer/bootdev string /dev/sda
- d-i grub-installer/with_other_os boolean true
- d-i hw-detect/load_firmware boolean true
- d-i keyboard-configuration/xkb-keymap select de
- d-i localechooser/supported-locales multiselect en_US.UTF-8
- d-i mirror/country string manual
- d-i mirror/http/directory string /debian
- d-i mirror/http/hostname string ftp.halifax.rwth-aachen.de
- d-i mirror/http/proxy string
- d-i netcfg/choose_interface select auto
- d-i netcfg/choose_interface select enp1s0
- d-i netcfg/confirm_static boolean true
- d-i netcfg/dhcp_failed note
- d-i netcfg/dhcp_options select Configure network manually
- d-i netcfg/disable_autoconfig boolean true
- d-i netcfg/get_domain string ffdo.net
- d-i netcfg/get_gateway string 192.168.178.254
- d-i netcfg/get_hostname string berghofen
- d-i netcfg/get_ipaddress string 192.168.178.51
- d-i netcfg/get_nameservers string 192.168.178.254
- d-i netcfg/get_netmask string 255.255.255.0
- d-i netcfg/hostname string berghofen.ffdo.net
- d-i netcfg/wireless_wep string
- d-i partman-auto/expert_recipe string \
- boot-root :: \
- 6000 8000 16000 ext3 \
- $primary{ } $bootable{ } \
- method{ format } format{ } \
- use_filesystem{ } filesystem{ ext3 } \
- mountpoint{ / } . \
- 5000 6000 6000 linux-swap \
- method{ swap } \
- format{ } . \
- .
- d-i partman-auto/init_automatically_partition select biggest_free
- d-i partman-partitioning/confirm_write_new_label boolean true
- d-i partman/choose_partition select finish
- d-i partman/confirm boolean true
- d-i partman/confirm_nooverwrite boolean true
- d-i passwd/root-login boolean false
- d-i passwd/user-fullname string Debian apu
- d-i passwd/user-password password insecure
- d-i passwd/user-password-again password insecure
- d-i passwd/username string fb
- d-i pkgsel/upgrade select safe-upgrade
- d-i preseed/run string netcfghack.sh
- d-i time/zone string Europe/Berlin
- d-i pkgsel/include string \
- bird2 \
- bridge-utils \
- build-essential \
- debconf-utils \
- curl \
- dkms \
- dnsutils \
- fail2ban \
- flashrom \
- git \
- info \
- iperf3 \
- iproute2 \
- iputils-tracepath \
- libncurses-dev libreadline-dev zlib1g-dev liblzo2-dev libssl-dev \
- lshw \
- mlocate \
- mtr-tiny \
- needrestart \
- neofetch \
- net-tools \
- openssh-server \
- psmisc \
- ssh-tools \
- syncthing \
- tree \
- unbound \
- vim \
- wireless-tools \
- wpasupplicant \
- zip
- d-i preseed/late_command string cp /etc/network/interfaces /target/etc/network/interfacesweg2
- popularity-contest popularity-contest/participate boolean false
- tasksel tasksel/first multiselect standard
- In der debseed.cfg sind die IP-adressen, Hostnamen und User/PW für den sudouser anzupassen.
- Es sind auch ein paar Pakete der Kategorie 'nice to have' aufgenommen.
- ## Ablauf der Installation
- Auf dem tftpserver das serielle Terminalprogramm starten, in einem zweiten Terminalfenster dnsmasq mit Option -d starten, damit die Ausgabe im Terminal sichtbar bleibt.
- Falls dnsmasq port 69 nicht öffnen kann, prüfen wer drauf sitzt:
- sudo ss -lp 'sport = 69'
- und mit kill processid beenden, dann sollte dnsmasq starten.
- dnsmasq-dhcp: PXE(enp109s0f1) 00:0d:b9:58:66:1c proxy
- dnsmasq-dhcp: PXE(enp109s0f1) 192.168.178.51 00:0d:b9:58:66:1c pxelinux.0
- dnsmasq-tftp: sent /var/lib/tftp/pxelinux.0 to 192.168.178.51
- dnsmasq-tftp: sent /var/lib/tftp/ldlinux.c32 to 192.168.178.51
- dnsmasq-tftp: Datei /var/lib/tftp/pxelinux.cfg/01-00-0d-b9-58-66-1c nicht gefunden
- dnsmasq-tftp: Datei /var/lib/tftp/pxelinux.cfg/C0A8B233 nicht gefunden
- dnsmasq-tftp: Datei /var/lib/tftp/pxelinux.cfg/C0A8B23 nicht gefunden
- dnsmasq-tftp: sent /var/lib/tftp/pxelinux.cfg/C0A8B2 to 192.168.178.51
- dnsmasq-tftp: sent /var/lib/tftp/debian-installer/amd64/linux to 192.168.178.51
- dnsmasq-tftp: sent /var/lib/tftp/debian-installer/amd64/initrd.gz to 192.168.178.51
- dnsmasq-tftp: sent /var/lib/tftp/debseed.cfg to 192.168.178.51
- dnsmasq-tftp: sent /var/lib/tftp/netcfghack.sh to 192.168.178.51
- APU booten (Strom einschalten) und mit N PXE boot auswählen sobald es im seriellen Terminal angeboten wird. Nach einiger Zeit wird die Auswahl zur Netzschnittstelle angeboten.
- Bei der Schnittstelle enp1s0 auswählen und bestätigen. (Es ist mir nicht gelungen, diese Auswahl automatisch treffen zu lassen).
- Wenn alles klappt, ist die APU nach ca 18 Minuten installiert und bootet in das frisch installierte System.
- Bei Fehlern in der debseed.cfg springt die Installation in den interaktiven Modus.
- Die Konfiguration (oder auch Kompilieren) von tinc, bird2 und unbound kann jetzt erfolgen.
- Die Abhängigkeiten lib*-dev sind schon installiert, ebenso der gcc compiler für tinc kompilieren.
- ## Tabelle der Installationen und für das Kompilieren von tinc
- Hier
- Kompilieren und teilweise Konfiguration von tinc 1.1pre18
- Bitte die Kommentare im Code beachten
- #!/usr/bin/sh
- # tincanpass 2024-05-06
- #
- # tinc source wird geholt und kompiliert, installiert und etwas konfiguriert
- # bird und unbound werden nicht behandelt
- #
- # erwartet die bereits erfolgte Installation der Abhängigkeiten auf der APU
- # falls nicht, hier die nötigen (zusatz)libs für tinc kompilieren
- #
- # sudo apt install libncurses-dev libreadline-dev zlib1g-dev liblzo2-dev libssl-dev
- #
- # tincpre18 holen (setzt internetzugriff voraus), kompilieren und installieren
- # /etc/tinc Verzeichnisse anlegen, keys und rudimentäre tinc.conf erzeugen
- # Aufruf als normaler user, sudo wird verwendet wenn nötig
- cd
- mkdir tinc
- cd tinc
- #tinc 1.1pre18 holen und entpacken
- wget https://www.tinc-vpn.org/packages/tinc-1.1pre18.tar.gz
- tar -xf tinc-1.1pre18.tar.gz
- cd tinc-1.1pre18
- # maketinc.sh erzeugen, damit tinc compile bei fehler alleine
- # wiederholt werden kann
- # dazu nach Fehlerkorrektur im tinc-1.1pre18 Verzeichnis ./maketinc.sh aufrufen.
- echo "#!/bin/sh" >maketinc.sh
- echo "# tinc1.1 local compile + install mit eigenen DIRS " >>maketinc.sh
- echo "make distclean" >>maketinc.sh
- echo "./configure --prefix=/usr --sysconfdir=/etc --runstatedir=/run --localstatedir=/var --with-systemd" >>maketinc.sh
- echo "make" >>maketinc.sh
- # maketinc.sh ausführbar machen und aufrufen
- chmod +x maketinc.sh
- ./maketinc.sh
- echo "Meldung ...deprecated ist KEIN Fehler"
- echo "falls Fehler aufgetreten mit control-c abbrechen"
- echo "Fehler korrigieren und ./maketinc.sh erneut aufrufen"
- echo "tinc mit 'sudo make install' installieren"
- echo "es werden auch die tinckeys erzeugt"
- echo "lan/tinc.conf und wan/tinc.conf sind noch anzupassen"
- echo "weiter mit enter."
- read aa
- # make install mit sudo ausführen im tinc-1.1pre18 Verzeichnis
- sudo make install
- # tinc Verzeichnisse anlegen und etwas vorkonfigurieren
- # Die persönlichen Werte anpassen (berghofen, IP, connectto)
- # Werte für lan einstellen
- sudo mkdir -p /etc/tinc/lan/hosts
- sudo tinc --net=lan init berghofen
- sudo tinc --net=lan set Device /dev/net/tun
- sudo tinc --net=lan set Mode switch
- sudo tinc --net=lan set AddressFamily ipv4
- sudo tinc --net=lan set MaxTimeout 30
- sudo tinc --net=lan set BindToAddress 192.168.178.51
- sudo tinc --net=lan set Port 10001
- sudo tinc --net=lan set ConnectTo berglap
- sudo tinc -b --net=lan generate-keys 4096
- # Werte für wan einstellen
- sudo mkdir -p /etc/tinc/wan/hosts
- sudo tinc --net=wan init berghofen
- sudo tinc --net=wan set Device /dev/net/tun
- sudo tinc --net=wan set Mode switch
- sudo tinc --net=wan set AddressFamily ipv4
- sudo tinc --net=wan set MaxTimeout 30
- sudo tinc --net=wan set BindToAddress 192.168.178.51
- sudo tinc --net=wan set Port 661
- sudo tinc --net=wan set ConnectTo nordstadt
- sudo tinc --net=wan set ConnectTo hoerde
- sudo tinc -b --net=wan generate-keys 4096
- echo
- echo "Die restliche Konfiguration muss noch angepasst werden."
- echo " u.a. die hosts der Partner (nordstadt, hoerde, ...)
- exit 0
|