- Abraxas - https://www.effinger.org -

FreeBSD auf Rasperry Pi aktualisieren

Leider lässt sich FreeBSD auf dem Rasperry Pi nicht mit freebsd-update aktualisieren, da dort leider die Unterstützung für arm-Architekturen fehlt. In Anlehnung an einen Post im FreeBSD-Forum [1] habe ich nun FreeBSD auf dem Rasperry Pi 3 wie folgt aktualisiert, um den langwierigen build-Prozess zu umgehen.

  1. Clone-Version installieren
    mkdir -p /usr/local/etc/pkg/repos/
    vi /usr/local/etc/pkg/repos/FreeBSD.conf

    Dann dort folgenden Inhalt eintragen:

    FreeBSD: {
      url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
    }

    und mit

    pkg install clone

    die richtige Version von clone installieren.

  2. Backup des aktuellen OS (SD-Karte auf externe USB-Festplatte)
    In meinem Fall das Backup-Drive mounten:

    zfs mount remote_backup

    Wechseln ins Backup-Verzeichnis:

    cd /remote_backup/backup_haning

    Über

    geom disk list

    herausfinden, welches das Systemvolume ist (hier SD-Karte mmcsd0) und dann den Parameter if im folgenden Befehl anpassen, um die Backup-Datei zu erzeugen:

    dd if=/dev/mmcsd0 of=haning_2020-07-12.img bs=1M status=progress

    Backup dann wie folgt testen:

    mdconfig -a -u 0 -t vnode -f /remote_backup/backup_haning/haning_2020-07-12.img
    mount -o noatime /dev/md0s1 /media
    ls /media
    umount /media
    mdconfig -d -u 0
  3. FreeBSD aktualisieren auf den neusten Stand
    Unter FreeBSD Releases [2], die aktuellste Version herausfinden und dann unter https://download.freebsd.org/ftp/releases/arm64/aarch64/ISO-IMAGES/ [3] die entsprechende Version suchen

    cd /remote_backup/backup_haning/images
    fetch https://download.freebsd.org/ftp/releases/arm64/aarch64/ISO-IMAGES/12.1/FreeBSD-12.1-RELEASE-arm64-aarch64-RPI3.img.xz
    xz -d FreeBSD-12.1-RELEASE-arm64-aarch64-RPI3.img.xz
    mdconfig -a -u 0 -t vnode -f /remote_backup/backup_haning/images/FreeBSD-12.1-RELEASE-arm64-aarch64-RPI3.img
    mount -o noatime,ro /dev/md0s2a /media
    clone -c rwoff -s -x /usr/home:/usr/local:/usr/ports:/usr/obj:/usr/src /media/usr /usr &
    clone -c rwoff -s /media/sbin /sbin &
    clone -c rwoff -s /media/rescue /rescue &
    clone -c rwoff -s -x crontab:exports:fstab:group:hosts:shells:localtime:master.passwd:motd:ntp.conf:passwd:pwd.db:rc.conf:rc.local:resolv.conf:spwd.db:ssh:ssl:unbound:aliases:dma:mailer/mailer.conf /media/etc /etc &
    clone -c rwoff -s -x /boot/loader.conf:/boot:modules:/boot/msdos /media/boot /boot &
    clone -c rwoff -s /media/bin /bin &
    clone -c rwoff -s /media/libexec /libexec &
    clone -c rwoff -s /media/lib /lib &
    

    Dann mit dem Befehl

    jobs

    prüfen, bis alle Befehle im Hintergrund fertiggestellt wurden.

    umount /media
    mdconfig -d -u 0
    zfs umount remote_backup

    Dann neu starten mit

    shutdown -r now
  4. Bitte überspringen – nur als Erinnerung für mich: verschlüsselte USB-Festplatte einbinden mit
    geli attach -k /root/remote_backup_wd_elements_10tb.key /dev/da0p2
    zpool import -N remote_backup
    zfs mount remote_backup
  5. Boot-Partition aktualisieren und Pakete installieren wie z.B. dma
    mdconfig -a -u 0 -t vnode -f /remote_backup/backup_haning/images/FreeBSD-12.1-RELEASE-arm64-aarch64-RPI3.img
    mount_msdosfs -o noatime /dev/md0s1 /media
    clone -c rwoff -s /media /boot/msdos
    umount /media
    mdconfig -d -u 0
    pkg install dma
    shutdown -r now
  6. Pakete installieren
    Paketquelle wieder richtig setzen mit

    rm /usr/local/etc/pkg/repos/FreeBSD.conf

    Jetzt fehlen eventuell die aus der Vergangenheit vorhandenen Pakete. Diese lassen sich installieren mit

    pkg update
    pkg upgrade