P89626/ArchLinuxARM

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

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:

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:


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/

Links

<< zurück zur Hauptseite 'P89626'