P89626/ArchLinuxARM
Hier alles Rund um ArchLinuxARM auf dem MEDION LIFE P89626 (MD 86407) NAS.
<< zurück zur Hauptseite 'P89626'
Information
Auf dem NAS laufen leider keine aktuellen Versionen von Arch Linux ARM, da ALARM wie Arch Linux selbst nun systemd verwendet, unter anderem um gewisse Dienste und Programme zu starten. Da die für die OXNAS-Plattform verfügbare Kernel-Versopm keine systemd-Unterstützung besitzt, kann man auch einige Dienste wie SAMBA oder CUPS nicht per pacman aktuell halten.
Hintergrund
Die Hardware-Basis, die ARM PLX-NAS7820 CPU (siehe P89626#Technische_Daten), ist die selbe wie im Pogoplug Pro/Video/v3. Von daher liegt es nahe, ArchLinuxARM auf dem NAS zu betreiben.
Nach dem Forumspost "HOLD ON - WE'RE WORKING ON IT" ist die Portierung allerdings nicht vollständig abgeschlossen.
Man kann den aktuellen Stand von "ARMv6 PLX OxNAS platforms" herunterladen: http://archlinuxarm.org/os/ArchLinuxARM-oxnas-latest.tar.gz und auf einen USB-Stick packen. Damit kann, ebenfalls per chroot wechseln.
chroot auf Platte
Um ein ArchLinuxARM auf Platte zu legen um es z.T. per chroot zu nutzten, kann man folgendes tun:
~ # cd /i-data/6764ac2f/ /i-data/6764ac2f # mkdir ArchLinuxARM /i-data/6764ac2f # cd ArchLinuxARM/ /i-data/6764ac2f/ArchLinuxARM # wget http://archlinuxarm.org/os/ArchLinuxARM-oxnas-latest.tar.gz /i-data/6764ac2f/ArchLinuxARM # tar -xvf ArchLinuxARM-oxnas-latest.tar.gz /i-data/6764ac2f/ArchLinuxARM # rm ArchLinuxARM-oxnas-latest.tar.gz
Nun hat man das root Dateisystem von ArchLinuxARM auf platte.
Datenübername
Man könnte ein paar Daten vom Original System übernehmen, z.B.:
- cp -r /etc/samba /i-data/6764ac2f/ArchLinuxARM/etc/samba
- cp /etc/exports /i-data/6764ac2f/ArchLinuxARM/etc/exports
usw.
manuelles chroot
Im Prinzip kann man nun ein chroot wie folgt machen:
~ # cp /etc/resolv.conf /i-data/6764ac2f/ArchLinuxARM/etc/resolv.conf ~ # chroot /i-data/6764ac2f/ArchLinuxARM /bin/bash [root@NAS-SERVER /]# pacman -Syu
Mit exit kommt man dann wieder zurück.
btw. Wichtigsten Befehle von pacman: http://archlinuxarm.org/support/guides/applications/package-management
chroot per script
Damit ein chroot einfacher Funktioniert, gibt es das Script do_chroot.sh welches man einfach ins Root Verzeichnis packt:
~ # cd /i-data/6764ac2f/ArchLinuxARM /i-data/6764ac2f/ArchLinuxARM # curl --insecure https://raw.github.com/jedie/NAS7820-Tools/master/do_chroot.sh > do_chroot.sh /i-data/6764ac2f/ArchLinuxARM # chmod +x do_chroot.sh /i-data/6764ac2f/ArchLinuxARM # ./do_chroot.sh [root@NAS-SERVER /]# pacman -Syu
TODO: Das einbinden von /dev klappt nicht. Es kommt der Fehler: Invalid argument, siehe: http://www.mikrocontroller.net/topic/240238?page=2#2450527 Somit kann man in der chroot Umgebung nicht alles tun.
ArchLinuxARM installieren
Man kann ArchLinuxARM auf der Box installieren, muß dazu allerdings die Platte platt machen!
Zwar kann man auch vom USB Stick booten, aber:
ACHTUNG: Der Zugriff auf /dev/sda2 beschädigt das RAID, siehe: http://www.mikrocontroller.net/topic/240238?goto=2461598#2461598 !!! Somit startet das normale System nicht mehr durch. Über P89626/usb_key_func kann man das System aber starten und alle Daten sind noch vorhanden... Wahrscheinlich ist das RAID einfach nur als "defekt" markiert.
Das Booten eines ArchLinuxARM-oxnas Kernels funktioniert mit dem Kernel von: http://www.mikrocontroller.net/topic/240238?goto=2461228#2461228 (md5: 2913a873b189461ca3803a0d2114e0de)
Boot Ausgaben siehe: http://www.mikrocontroller.net/topic/240238?page=4#2461530
Dazu kopiert/entpackt man das rootfs von ArchLinuxARM nach sda2 (ist im Normalen System: /i-data/6764ac2f/) und gibt diese bootargs an:
console=ttyS0,115200 root=/dev/sda2 mem=128M
Ebenfalls möglich ist die Nutzung des uImage.nopci Kernels aus dem ArchLinuxARM-oxnas-latest.tar.gz Archiv.
Schritt für Schritt Installation
ACHTUNG: EXPERIMENTELL und nicht Ausreichend getestet! Also nur für erfahrene Hacker zu empfehlen! Zählst du dazu, dann bitte mithelfen die Anleitung hier zu verbessern!
Für eine Installation auf Platte, sollte man auf jeden Fall einen P89626/UART Zugang haben! Die Festplatte muß neu Formatiert werden, somit sind alle Daten vorher zu sichern!
WICHTIG: Die Platte hat das sog. Advanced Format mit 4KBytes Sektoren. Auf der Box ist allerdings nur eine alte fdisk v2.13-pre7 vorhanden, welches ein ungünstiges alignment erstellen würde (Die erste Partition würde bei Sektor 63 Anfangen.) Siehe auch: http://www.mikrocontroller.net/topic/240238?goto=2469942#2469440
Deswegen ist es Wichtig das man ein aktuelles fdisk benutzt. Somit packen wir ArchLinux erstmal auf einen Stick, booten von dem und richten dann die Platte ein:
http://archlinuxarm.org/os/ArchLinuxARM-oxnas-latest.tar.gz ziehen und auf einen ext3 Formatierten Stick kopieren (Archivdatei wird später noch gebraucht) und dort entpacken. Die Datei /uImage.nopci aus dem Archiv (liegt nach dem entpacken im Root-verzeichnis des Sticks) per TFTP Anbieten (Beschreibung z.B. bei GoFlexHome#anderes_uBoot_Image_via_TFTP_testen) Einzelschritte z.B.:
cd /media mkdir media/arch_stick mount /dev/sdXY /media/arch_stick cd arch_stick wget http://archlinuxarm.org/os/ArchLinuxARM-oxnas-latest.tar.gz tar -xzvf ArchLinuxARM-oxnas-latest.tar.gz sudo cp uImage.nopci /var/lib/tftpboot/ sudo chmod 777 -R /var/lib/tftpboot
Bevor man Bootet ist es Hilfreich einen kleinen USB Stick mit P89626/usb_key_func vorzubereiten und immer gesteckt lassen. Wenn man versehentlich das Original System hochfahren sollte, würde nicht voll durch gebootet werden und man kann schneller neu starten.
Abklären: Ein einrichten der Platte per chroot geht nicht ?!?!
P89626/usb_key_func-Stick + ArchLinux-Stick anschließen und Box neu starten, per UART Boot Prozess anhalten und das machen:
setenv serverip 192.168.xxx.yyy; setenv ipaddr 192.168.xxx.zzz; setenv bootargs console=ttyS0,115200 root=/dev/sdb1 mem=128M; tftp 61000000 uImage.nopci; bootm 61000000
- serverip ist die IP Adresse des TFTP Servers.
- ipaddr ist die IP, die die Box vom DHCP Server erhalten würde
- root=/dev/sdb1 sdb1 muß evtl. sdc1 lauten, je nach dem wie viel Sticks, wo (?) eingesteckt werden.
Hat man ArchLinux erfolgreich gebootet, kann man sich mit root / root einloggen und die Platte einrichtent, mit:
fdisk /dev/sda
Schritte in Grob:
- neue Partitions Tabelle erstellen
- Eine 20GB Partition für Archlinux anlegen (sda1)
- Eine weiter 20GB Partition für Alternatives Linux anlegen (sda2)
- SWAP z.B. +512K anlegen (sda3)
- Rest als Datenparition erstellen (sda4)
Abklären: Neustart vom USB-Stick nötig ?!?!?
Formatieren, z.B.:
mkfs.ext3 -L "rootfs" /dev/sda1 mkfs.ext3 -L "rootfs2" /dev/sda2 mkswap /dev/sda3 mkfs.ext4 -L "NAS Daten" /dev/sda4
Hinweis: Momentan ist es wohl besser die Linux Partition als ext3 und nicht als ext4 anzulegen, weil uBoot noch keine ext4 Unterstürzung hat.
rootfs Archiv vom Stick auf Platte entpacken:
mkdir -p /mnt/arch_root mount /dev/sda1 /mnt/arch_root cp /ArchLinuxARM-oxnas-latest.tar.gz /mnt/arch_root/ cd /mnt/arch_root/ tar -xzvf ArchLinuxARM-oxnas-latest.tar.gz
Nun sollte man ArchLinuxARM von Platte aus booten können. Also Neustart und in uBoot wieder das machen:
setenv serverip 192.168.xxx.yyy; setenv ipaddr 192.168.xxx.zzz; setenv bootargs console=ttyS0,115200 root=/dev/sda1 mem=128M; tftp 61000000 uImage.nopci; bootm 61000000
Nun nehmen wir das rootfs von /dev/sda1
dauerhaft per TFTP starten
Möchte man nicht immer den Boot Prozess in uBoot unterbrechen, sondern automatisch per TFTP den Kernel booten, kann man folgendes in uBoot machen:
setenv tftp_test 'ping $serverip' setenv tftp_boot 'tftp 61000000 uImage.nopci; setenv bootargs console=ttyS0,115200 root=/dev/sda1 mem=128M; bootm 61000000' setenv bootcmd 'run tftp_test tftp_boot; run boot_nand' saveenv reset
Ist also der TFTP Server per ping $serverip erreichbar und das laden von uImage.nopci erfolgreicht, wird per TFTP gebootet. Ansonsten wird mit run boot_nand ein Fallback gemacht und das Original System vom NAND gebootet.
Frage: Jemand eine bessere Lösung?
ArchLinuxARM Einrichten
Das frisch installierte ArchLinux erreicht man direkt schon über SSH mit dem Login root / root
Die wichtigsten ersten Schritte:
passwd # neues Passwort für root setzten pacman -Scc # Beide Fragen mit yes Beantworten pacman -Syyuf
Mehr zu pacman: http://archlinuxarm.org/support/guides/applications/package-management
Für Uhrzeit per NTP:
pacman -S openntpd
und ganz unten in /etc/rc.conf bei DAEMONS=() den Dienstnamen openntpd hinzufügen, siehe: http://archlinuxarm.org/support/guides/system/first-steps
Die wichtigsten Einstellungen befinden sich in:
nano /etc/rc.conf
Link: https://wiki.archlinux.org/index.php/Beginners%27_Guide#.2Fetc.2Frc.conf
auf Deutsch_stellen
In rc.conf u.a. das ändern:
LOCALE="de_DE.UTF-8" TIMEZONE="Europe/Berlin" HOSTNAME="PLX7820"
/etc/locale.gen ändern in:
de_DE.UTF-8 UTF-8 de_DE ISO-8859-1 de_DE@euro ISO-8859-15 #en_US.UTF-8 UTF-8 #en_US ISO-8859-1
Danach Befehl "locale-gen" ausführen. Es sollte dann eigentlich sowas herraus kommen:
[root@PLX7820 ~]# locale-gen Generating locales... de_DE.UTF-8... done de_DE.ISO-8859-1... done de_DE.ISO-8859-15@euro... done Generation complete.
Doch im ox820 kernel ist Momentan ein Bug, der das Produziert: de_DE.UTF-8...cannot map archive header: Invalid argument Siehe: http://archlinuxarm.org/forum/viewtopic.php?f=9&t=1143&start=10#p11655
mehr Info: https://wiki.archlinux.de/title/Arch_Linux_auf_Deutsch_stellen
SWAP einrichten
/etc/fstab editieren und das einfügen:
/dev/sda3 none swap sw 0 0
Datenpartition einbinden
Mountpunkt erstellen:
mkdir -p /media/daten
Damit Samba User auch schreiben dürfen:
chmod 777 /media/daten
/etc/fstab editieren und das einfügen:
/dev/sda4 /media/daten ext4 noatime,relatime,errors=remount-ro 0 1
User einrichten
Möchte man nicht immer als root arbeiten, kann man sudo und einen/mehrere Benutzter einrichten:
Sudo installieren:
[root@PLX7820 ~]# pacman -Sy sudo
Usergruppe sudo aktivieren:
- Den speziellen visudo editor starten.
- Runter scrollen zur Zeile # %sudo ALL=(ALL) ALL und Einkommentieren
- Mit :wq Datei speichern und Editor verlassen
Usergruppe sudo erstellen:
[root@PLX7820 ~]# groupadd sudo
Neuen Benutzer erstellen:
[root@PLX7820 ~]# useradd -m -g users -G sudo -s /bin/bash MaxMuster [root@PLX7820 ~]# passwd MaxMuster
Normaler Benutzer werden:
[root@PLX7820 ~]# su MaxMuster [MaxMuster@PLX7820 root]$
Autocomplete auch für sudo Anktionen aktivieren:
[MaxMuster@PLX7820 root]$ echo "complete -cf sudo" >> ~/.bashrc
Links:
- https://wiki.archlinux.org/index.php/Beginners%27_Guide#Adding_a_User
- https://wiki.archlinux.org/index.php/Users_and_Groups
Samba
Samba installieren:
pacman -Sy samba
/etc/samba/smb.conf erstellen z.B. mit diesem Inhalt:
[global] workgroup = WORKGROUP server string = ALARM netbios name = ALARM security = user null passwords = yes map to guest = bad user log file = /var/log/samba/%m.log max log size = 50 dns proxy = no socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072 SO_KEEPALIVE # Disable Printer Support: load printers = no printing = bsd printcap name = /dev/null disable spoolss = yes [Root] path = / read only = no public = yes writable = yes guest ok = no [Daten] path = /media/daten read only = no public = yes writable = yes guest ok = no
Damit auch User auf die Samba Freigaben mit (guest ok = no) Zugreifen können, muß man sie explizit angeben, mit:
pdbedit -a -u <Benutzername>
Siehe auch:
- http://archlinuxarm.org/support/guides/applications/samba
- https://wiki.archlinux.org/index.php/Samba
NFS
Paket für einen NFS Server installieren:
pacman -Sy nfs-utils
Datei /etc/exports editieren und z.B. das Eintragen:
/media/daten 192.168.xxx.0/24(rw,sync,no_subtree_check,wdelay,no_root_squash)
Zum automatischen Start des NFS Servers nach dem Booten, /etc/rc.conf ändern und Deamons eintragen:
DAEMONS=(... network rpcbind nfs-common nfs-server ...)
mountent man auch NFS Freigaben via fstab, dann noch @netfs anhängen, also:
DAEMONS=(... network rpcbind nfs-common nfs-server @netfs ...)
Manuelles starten der Dienste:
/etc/rc.d/rpcbind start /etc/rc.d/nfs-common start /etc/rc.d/nfs-server start
Siehe auch https://wiki.archlinux.org/index.php/Nfs
Backup vom rootfs
Ein einfaches Backup kann man so erstellen:
tar -cvpzf /backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc \ --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/run \ --exclude=/media --exclude=/dev --exclude=/tmp --exclude=/var/cache \ --exclude=/var/run/ /
etc Backup
Möchte man mal eben das ganze /etc/ Verzeichnis sichern, kann man sich z.B. /root/local_backup.sh mit dem folgenden Inhalt erstellen:
#!/bin/sh set -x tar -cvpzf `date +%Y%m%d`_etc_backup.tar.gz /etc/