14 APU4D4 aufbauen und mit Debian in Betrieb nehmen.page 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. # Die APU aufbauen und mit Debian in Betrieb nehmen
  2. # Spezifikationen
  3. - <https://www.pcengines.ch/apu4d4.htm>
  4. # Montage des Kühlers
  5. - <https://www.pcengines.ch/apucool.htm>
  6. Die Montage des Kühlers, d.h. das Aufkleben der Aluplatte an die richtige Stelle im Gehäuse, geht auch gut damit, dass man
  7. - die Platine ohne Kühlung provisorisch in das Gehäuse einfügt, dann
  8. - 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.
  9. Dann klebt man das Alublech auf und schiebt dann die Platine zuerst verkanntet ein und presst sie dann vorsichtig auf das Alublech.
  10. # BIOS Anmerkung
  11. Änderungen im BIOS 4.12.0.1 (nach F10) werden erst beim nächsten Einschalten, also nach stromlos, wirksam.
  12. Auch wenn die geänderte Einstellung schon vorher im Menü erscheint.
  13. Aufgefallen / getestet mit der m Option (clk für die WLAN Karte).
  14. # Energieverbrauch
  15. Gemessen mit ELV Energy Master Basic 2 und Steckernetzteil Seanon KSA 24W 120/200VE Output 12V 2A
  16. APU4D4 mit 256GB SSd und WLE600 Wlankarte
  17. APU beim booten: max 9W
  18. APU im Leerlauf: 5,4W
  19. APU im Leerlauf mit BIOS PCIe Powermanagement: 4,7W
  20. APU ausgeschaltet: 1,5W
  21. Nur Netzteil: 0,0W
  22. # APU Installation auf dem PC vorbereiten
  23. Erforderlich ist ein Nullmodemkabel zur Verbindung APU <--> PC
  24. Ein Terminalprogramm (z.B. minicom)
  25. Eventuell bei Installation PXE übers Netz ein tftpserver (z.B., dnsmasq)
  26. # APU Installation mit USB-Stick
  27. Bereithalten: einen USB-Stick mit dem aktuellen Debian Image, Stick als bootbar definiert mit:
  28. - 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
  29. - mit dem USB-Stick booten, dann im Grub-Menü die Bootzeile mit `e` editieren:
  30. - wenn das grub-Menu da ist, mit `e` die Befehlszeile ändern und dazu hinter /linux/ boot ergänzen:
  31. `console=ttyS0,115200n8`
  32. Damit ist die serielle Schnittstelle bis zum nächsten Booten als Standard festgelegt.
  33. Wenn das System installiert ist und neu bootet, auch an dieser Stelle wie beschrieben im Grub-Menu mit `e`
  34. die Grub-Befehlszeile ändern und ttyS0 aktivieren.
  35. # APU Netz Installation von Debian oder Ubuntu
  36. Für die Installation über das Netz ohne Bootmedium und mit vorbelegten Antworten
  37. muss das eigene Netzwerk eingerichtet werden mit folgenden Diensten:
  38. - TFTP-server mit dem Bootimage
  39. - DHCP-server / Proxy der der APU ip-adresse und Pfad zum Bootimage übermittelt
  40. ## Verwendete Hardware
  41. - Privates LAN mit Internetzugang, Router als DHCPserver z.B. Fritz!Box
  42. - Rechner als PXE - BOOTP - TFTP - DHCP Server (nicht exklusiv)
  43. - APU4D4 mit 4Gb RAM, 256GB SSD und WLE600 Wlankarte (bislang nicht verwendet)
  44. - Serielles Nullmodem Kabel zwischen APU und Rechner
  45. - Netzwerkkabel
  46. ## Verwendete Adressen
  47. - Diese sind an die eigenen anzupassen
  48. - 192.168.178.0/24 Netzwerk
  49. - 192.168.178.254 Fritz!Box Router, DHCPserver, Zugang Internet
  50. - Die folgenden Adressen ausserhalb des Bereiches F!B DHCP-server
  51. - 192.168.178.51 Statische Adresse für die APU (später)
  52. - 192.168.178.52 Statische Adresse für den PXE - BOOTP - TFTP server
  53. ## Einrichten PXE - BOOTP - TFTP- Server
  54. - Anleitung von Marcel verwendet / erweitert für TFTP-server
  55. - dnsmasq installieren falls nötig:
  56. sudo apt install dnsmasq
  57. - Anpassen /etc/dnsmasq.conf
  58. - Da wir nur wenig Funktionen von dsnmasq benötigen, löschen wir die installierte
  59. Datei und ersetzen sie durch folgenden Inhalt.
  60. dhcp-range=192.168.178.0,proxy # Unser Netzwerk.
  61. dhcp-boot=pxelinux.0,192.168.178.52,192.168.178.0 # IP TFTP-Server und Netzwerk.
  62. pxe-service=x86PC,"Netzwerk Boot",pxelinux # gewünschter Dienst
  63. enable-tftp # aktiviere TFTP-server
  64. tftp-root=/var/lib/tftp # hier liegen die Daten Debian 12 Bookworm
  65. port=0 # DNS brauchen wir hier nicht
  66. ### Bootimage holen im Browser oder mit wget, ...
  67. - [download netboot.tar.gz Image](https://ftp.halifax.rwth-aachen.de/debian/dists/buster/main/installer-amd64/current/images/netboot/netboot.tar.gz)
  68. - Verzeichnis für TFTP-server anlegen
  69. sudo mkdir /var/lib/tftp
  70. - Bootimage dort entpacken
  71. - sudo tar xvf netboot.tar.gz -C /var/lib/tftp
  72. ### Konfigurations Dateien für die Clients erstellen oder anpassen
  73. Es kann für jeden Client eine spezielle Datei erstellt werden oder auch mehrere allgemeinere für mehrere Clients.
  74. Weitere Infos in https://wiki.ubuntuusers.de/PXE-Boot/
  75. Die in netboot.tar enthaltene default Konfigurationsdatei pxelinux.cfg/default kann für die APU nicht ohne Anpassung verwendet werden wegen fehlender Grafikkarte.
  76. Inhalt der default Datei für APU Installation im tftpserver mit Antwortdatei (debseed.cfg)
  77. Achtung IP-adresse tftp Server evtl. anpassen
  78. 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.
  79. SERIAL 0 115200
  80. CONSOLE 0
  81. default Bookworm
  82. ALLOWOPTIONS 0
  83. TIMEOUT 600
  84. LABEL Bookworm
  85. MENU LABEL ^Bookworm
  86. KERNEL debian-installer/amd64/linux
  87. 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
  88. Die Antwortdatei debseed.cfg und die Hilfsdatei netcfghack.sh müssen sich im TFTP-server Rootverzeichnis befinden.
  89. netcfghack.sh sorgt für die statische Netzkonfiguration von enp1s0 der APU.
  90. #!/bin/sh
  91. killall-dhcp
  92. netcfg
  93. echo netcfghack ende
  94. debseed.cfg hier ohne Kommentare, aber noch ein Hinweis zu Partionierung
  95. 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.
  96. Weitere Informationen im Debian Installationshandbuch [Debian Handbuch](https://www.debian.org/releases/stable/amd64/apbs04.en.html)
  97. #_preseed_v1
  98. ######### debseed.cfg ohne Kommentare, damit sie ins wiki passt
  99. d-i apt-setup/contrib boolean true
  100. d-i apt-setup/non-free boolean true
  101. d-i apt-setup/non-free-firmware boolean true
  102. d-i apt-setup/security_host string security.debian.org
  103. d-i apt-setup/services-select multiselect security, updates
  104. d-i clock-setup/ntp boolean true
  105. d-i clock-setup/utc boolean true
  106. d-i debian-installer/country string DE
  107. d-i debian-installer/language string en
  108. d-i debian-installer/locale string de_DE.UTF-8
  109. d-i finish-install/keep-consoles boolean true
  110. d-i finish-install/reboot_in_progress note
  111. d-i grub-installer/bootdev string /dev/sda
  112. d-i grub-installer/with_other_os boolean true
  113. d-i hw-detect/load_firmware boolean true
  114. d-i keyboard-configuration/xkb-keymap select de
  115. d-i localechooser/supported-locales multiselect en_US.UTF-8
  116. d-i mirror/country string manual
  117. d-i mirror/http/directory string /debian
  118. d-i mirror/http/hostname string ftp.halifax.rwth-aachen.de
  119. d-i mirror/http/proxy string
  120. d-i netcfg/choose_interface select auto
  121. d-i netcfg/choose_interface select enp1s0
  122. d-i netcfg/confirm_static boolean true
  123. d-i netcfg/dhcp_failed note
  124. d-i netcfg/dhcp_options select Configure network manually
  125. d-i netcfg/disable_autoconfig boolean true
  126. d-i netcfg/get_domain string ffdo.net
  127. d-i netcfg/get_gateway string 192.168.178.254
  128. d-i netcfg/get_hostname string berghofen
  129. d-i netcfg/get_ipaddress string 192.168.178.51
  130. d-i netcfg/get_nameservers string 192.168.178.254
  131. d-i netcfg/get_netmask string 255.255.255.0
  132. d-i netcfg/hostname string berghofen.ffdo.net
  133. d-i netcfg/wireless_wep string
  134. d-i partman-auto/expert_recipe string \
  135. boot-root :: \
  136. 6000 8000 16000 ext3 \
  137. $primary{ } $bootable{ } \
  138. method{ format } format{ } \
  139. use_filesystem{ } filesystem{ ext3 } \
  140. mountpoint{ / } . \
  141. 5000 6000 6000 linux-swap \
  142. method{ swap } \
  143. format{ } . \
  144. .
  145. d-i partman-auto/init_automatically_partition select biggest_free
  146. d-i partman-partitioning/confirm_write_new_label boolean true
  147. d-i partman/choose_partition select finish
  148. d-i partman/confirm boolean true
  149. d-i partman/confirm_nooverwrite boolean true
  150. d-i passwd/root-login boolean false
  151. d-i passwd/user-fullname string Debian apu
  152. d-i passwd/user-password password insecure
  153. d-i passwd/user-password-again password insecure
  154. d-i passwd/username string fb
  155. d-i pkgsel/upgrade select safe-upgrade
  156. d-i preseed/run string netcfghack.sh
  157. d-i time/zone string Europe/Berlin
  158. d-i pkgsel/include string \
  159. bird2 \
  160. bridge-utils \
  161. build-essential \
  162. debconf-utils \
  163. curl \
  164. dkms \
  165. dnsutils \
  166. fail2ban \
  167. flashrom \
  168. git \
  169. info \
  170. iperf3 \
  171. iproute2 \
  172. iputils-tracepath \
  173. libncurses-dev libreadline-dev zlib1g-dev liblzo2-dev libssl-dev \
  174. lshw \
  175. mlocate \
  176. mtr-tiny \
  177. needrestart \
  178. neofetch \
  179. net-tools \
  180. openssh-server \
  181. psmisc \
  182. ssh-tools \
  183. syncthing \
  184. tree \
  185. unbound \
  186. vim \
  187. wireless-tools \
  188. wpasupplicant \
  189. zip
  190. d-i preseed/late_command string cp /etc/network/interfaces /target/etc/network/interfacesweg2
  191. popularity-contest popularity-contest/participate boolean false
  192. tasksel tasksel/first multiselect standard
  193. In der debseed.cfg sind die IP-adressen, Hostnamen und User/PW für den sudouser anzupassen.
  194. Es sind auch ein paar Pakete der Kategorie 'nice to have' aufgenommen.
  195. ## Ablauf der Installation
  196. Auf dem tftpserver das serielle Terminalprogramm starten, in einem zweiten Terminalfenster dnsmasq mit Option -d starten, damit die Ausgabe im Terminal sichtbar bleibt.
  197. Falls dnsmasq port 69 nicht öffnen kann, prüfen wer drauf sitzt:
  198. sudo ss -lp 'sport = 69'
  199. und mit kill processid beenden, dann sollte dnsmasq starten.
  200. dnsmasq-dhcp: PXE(enp109s0f1) 00:0d:b9:58:66:1c proxy
  201. dnsmasq-dhcp: PXE(enp109s0f1) 192.168.178.51 00:0d:b9:58:66:1c pxelinux.0
  202. dnsmasq-tftp: sent /var/lib/tftp/pxelinux.0 to 192.168.178.51
  203. dnsmasq-tftp: sent /var/lib/tftp/ldlinux.c32 to 192.168.178.51
  204. dnsmasq-tftp: Datei /var/lib/tftp/pxelinux.cfg/01-00-0d-b9-58-66-1c nicht gefunden
  205. dnsmasq-tftp: Datei /var/lib/tftp/pxelinux.cfg/C0A8B233 nicht gefunden
  206. dnsmasq-tftp: Datei /var/lib/tftp/pxelinux.cfg/C0A8B23 nicht gefunden
  207. dnsmasq-tftp: sent /var/lib/tftp/pxelinux.cfg/C0A8B2 to 192.168.178.51
  208. dnsmasq-tftp: sent /var/lib/tftp/debian-installer/amd64/linux to 192.168.178.51
  209. dnsmasq-tftp: sent /var/lib/tftp/debian-installer/amd64/initrd.gz to 192.168.178.51
  210. dnsmasq-tftp: sent /var/lib/tftp/debseed.cfg to 192.168.178.51
  211. dnsmasq-tftp: sent /var/lib/tftp/netcfghack.sh to 192.168.178.51
  212. 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.
  213. Bei der Schnittstelle enp1s0 auswählen und bestätigen. (Es ist mir nicht gelungen, diese Auswahl automatisch treffen zu lassen).
  214. Wenn alles klappt, ist die APU nach ca 18 Minuten installiert und bootet in das frisch installierte System.
  215. Bei Fehlern in der debseed.cfg springt die Installation in den interaktiven Modus.
  216. Die Konfiguration (oder auch Kompilieren) von tinc, bird2 und unbound kann jetzt erfolgen.
  217. Die Abhängigkeiten lib*-dev sind schon installiert, ebenso der gcc compiler für tinc kompilieren.
  218. ## Tabelle der Installationen und für das Kompilieren von tinc
  219. Hier
  220. Kompilieren und teilweise Konfiguration von tinc 1.1pre18
  221. Bitte die Kommentare im Code beachten
  222. #!/usr/bin/sh
  223. # tincanpass 2024-05-06
  224. #
  225. # tinc source wird geholt und kompiliert, installiert und etwas konfiguriert
  226. # bird und unbound werden nicht behandelt
  227. #
  228. # erwartet die bereits erfolgte Installation der Abhängigkeiten auf der APU
  229. # falls nicht, hier die nötigen (zusatz)libs für tinc kompilieren
  230. #
  231. # sudo apt install libncurses-dev libreadline-dev zlib1g-dev liblzo2-dev libssl-dev
  232. #
  233. # tincpre18 holen (setzt internetzugriff voraus), kompilieren und installieren
  234. # /etc/tinc Verzeichnisse anlegen, keys und rudimentäre tinc.conf erzeugen
  235. # Aufruf als normaler user, sudo wird verwendet wenn nötig
  236. cd
  237. mkdir tinc
  238. cd tinc
  239. #tinc 1.1pre18 holen und entpacken
  240. wget https://www.tinc-vpn.org/packages/tinc-1.1pre18.tar.gz
  241. tar -xf tinc-1.1pre18.tar.gz
  242. cd tinc-1.1pre18
  243. # maketinc.sh erzeugen, damit tinc compile bei fehler alleine
  244. # wiederholt werden kann
  245. # dazu nach Fehlerkorrektur im tinc-1.1pre18 Verzeichnis ./maketinc.sh aufrufen.
  246. echo "#!/bin/sh" >maketinc.sh
  247. echo "# tinc1.1 local compile + install mit eigenen DIRS " >>maketinc.sh
  248. echo "make distclean" >>maketinc.sh
  249. echo "./configure --prefix=/usr --sysconfdir=/etc --runstatedir=/run --localstatedir=/var --with-systemd" >>maketinc.sh
  250. echo "make" >>maketinc.sh
  251. # maketinc.sh ausführbar machen und aufrufen
  252. chmod +x maketinc.sh
  253. ./maketinc.sh
  254. echo "Meldung ...deprecated ist KEIN Fehler"
  255. echo "falls Fehler aufgetreten mit control-c abbrechen"
  256. echo "Fehler korrigieren und ./maketinc.sh erneut aufrufen"
  257. echo "tinc mit 'sudo make install' installieren"
  258. echo "es werden auch die tinckeys erzeugt"
  259. echo "lan/tinc.conf und wan/tinc.conf sind noch anzupassen"
  260. echo "weiter mit enter."
  261. read aa
  262. # make install mit sudo ausführen im tinc-1.1pre18 Verzeichnis
  263. sudo make install
  264. # tinc Verzeichnisse anlegen und etwas vorkonfigurieren
  265. # Die persönlichen Werte anpassen (berghofen, IP, connectto)
  266. # Werte für lan einstellen
  267. sudo mkdir -p /etc/tinc/lan/hosts
  268. sudo tinc --net=lan init berghofen
  269. sudo tinc --net=lan set Device /dev/net/tun
  270. sudo tinc --net=lan set Mode switch
  271. sudo tinc --net=lan set AddressFamily ipv4
  272. sudo tinc --net=lan set MaxTimeout 30
  273. sudo tinc --net=lan set BindToAddress 192.168.178.51
  274. sudo tinc --net=lan set Port 10001
  275. sudo tinc --net=lan set ConnectTo berglap
  276. sudo tinc -b --net=lan generate-keys 4096
  277. # Werte für wan einstellen
  278. sudo mkdir -p /etc/tinc/wan/hosts
  279. sudo tinc --net=wan init berghofen
  280. sudo tinc --net=wan set Device /dev/net/tun
  281. sudo tinc --net=wan set Mode switch
  282. sudo tinc --net=wan set AddressFamily ipv4
  283. sudo tinc --net=wan set MaxTimeout 30
  284. sudo tinc --net=wan set BindToAddress 192.168.178.51
  285. sudo tinc --net=wan set Port 661
  286. sudo tinc --net=wan set ConnectTo nordstadt
  287. sudo tinc --net=wan set ConnectTo hoerde
  288. sudo tinc -b --net=wan generate-keys 4096
  289. echo
  290. echo "Die restliche Konfiguration muss noch angepasst werden."
  291. echo " u.a. die hosts der Partner (nordstadt, hoerde, ...)
  292. exit 0