Skip to content

ROCKPro64 - Armbian - Go & Restic installieren!

Verschoben Armbian
2 1 678
  • Da ich ja heute ziemlich gescheitert bin, Go und Restic zu installieren, hier mal ein neuer Ansatz. Ich will ja immer noch die USB3 HDD in mein NAS einbauen 🙂

    Go installieren

    Das File holen, ich hatte natürlich vorher das Falsche installiert 😞 Naja, macht nix. Hier das Richtige für den ROCKPro64 mit Armbian.

    wget https://dl.google.com/go/go1.11.4.linux-arm64.tar.gz
    

    Das File dann auspacken nach /usr/local

    tar -C /usr/local -xzf go1.11.4.linux-arm64.tar.gz
    

    Danach im Profil den Suchpfad für das Programm einbauen.

    nano /etc/profile
    

    Ganz ans Ende folgendes einfügen.

    export PATH=$PATH:/usr/local/go/bin
    

    Danach funktioniert die Programmiersprache Go wie gewünscht.

    root@rockpro64:~# go version
    go version go1.11.4 linux/arm64
    

    Restic

    Das File bei guthub abholen.

    root@rockpro64:/home/frank# git clone https://github.com/restic/restic
    Cloning into 'restic'...
    remote: Enumerating objects: 6, done.
    remote: Counting objects: 100% (6/6), done.
    remote: Compressing objects: 100% (6/6), done.
    remote: Total 49414 (delta 1), reused 0 (delta 0), pack-reused 49408
    Receiving objects: 100% (49414/49414), 54.98 MiB | 7.39 MiB/s, done.
    Resolving deltas: 100% (30365/30365), done.
    

    Ins Verzeichnis wechseln.

    root@rockpro64:/home/frank# cd restic/
    

    Restic bauen

    root@rockpro64:/home/frank/restic# go run build.go
    go: finding github.com/inconshreveable/mousetrap v1.0.0
    go: finding github.com/pkg/xattr v0.3.1
    go: finding github.com/dgrijalva/jwt-go v3.2.0+incompatible
    go: finding github.com/russross/blackfriday v1.5.1
    go: finding github.com/satori/go.uuid v1.2.0
    go: finding github.com/spf13/cobra v0.0.3
    go: finding github.com/dnaeon/go-vcr v0.0.0-20180814043457-aafff18a5cc2
    go: finding github.com/pmezard/go-difflib v1.0.0
    go: finding cloud.google.com/go v0.27.0
    go: finding gopkg.in/ini.v1 v1.38.2
    go: finding github.com/Azure/azure-sdk-for-go v20.1.0+incompatible
    go: finding golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be
    go: finding github.com/elithrar/simple-scrypt v1.3.0
    go: finding github.com/mattn/go-isatty v0.0.4
    go: finding golang.org/x/net v0.0.0-20180906233101-161cd47e91fd
    go: finding gopkg.in/yaml.v2 v2.2.1
    go: finding google.golang.org/appengine v1.1.0
    go: finding github.com/google/go-cmp v0.2.0
    go: finding gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637
    go: finding github.com/pkg/profile v1.2.1
    go: finding gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127
    go: finding google.golang.org/api v0.0.0-20180907210053-b609d5e6b7ab
    go: finding golang.org/x/text v0.3.0
    go: finding github.com/pkg/sftp v1.8.2
    go: finding github.com/minio/minio-go v6.0.7+incompatible
    go: finding github.com/restic/chunker v0.2.0
    go: finding github.com/kr/pretty v0.1.0
    go: finding github.com/jtolds/gls v4.2.1+incompatible
    go: finding gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
    go: finding github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c
    go: finding github.com/go-ini/ini v1.38.2
    go: finding github.com/cpuguy83/go-md2man v1.0.8
    go: finding github.com/golang/protobuf v1.2.0
    go: finding golang.org/x/sys v0.0.0-20180525142821-c11f84a56e43
    go: finding github.com/pkg/errors v0.8.0
    go: finding golang.org/x/sys v0.0.0-20180907202204-917fdcba135d
    go: finding github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a
    go: finding github.com/kurin/blazer v0.5.1
    go: finding github.com/stretchr/testify v1.2.2
    go: finding github.com/mitchellh/go-homedir v1.0.0
    go: finding golang.org/x/crypto v0.0.0-20180904163835-0709b304e793
    go: finding github.com/cenkalti/backoff v2.0.0+incompatible
    go: finding github.com/Azure/go-autorest v10.15.3+incompatible
    go: finding github.com/ncw/swift v1.0.41
    go: finding github.com/juju/ratelimit v1.0.1
    go: finding github.com/kr/fs v0.1.0
    go: finding github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf
    go: finding github.com/davecgh/go-spew v1.1.1
    go: finding github.com/kr/text v0.1.0
    go: finding github.com/hashicorp/golang-lru v0.5.0
    go: finding github.com/spf13/pflag v1.0.2
    go: finding github.com/marstr/guid v1.1.0
    go: finding golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f
    go: finding github.com/kr/pty v1.1.1
    go: finding bazil.org/fuse v0.0.0-20180421153158-65cc252bf669
    root@rockpro64:/home/frank/restic#
    

    Fertig! Restic läuft?

    root@rockpro64:/home/frank/restic# ./restic
    
    restic is a backup program which allows saving multiple revisions of files and
    directories in an encrypted repository stored on different backends.
    
    Usage:
      restic [command]
    
    Available Commands:
      backup        Create a new backup of files and/or directories
      cache         Operate on local cache directories
      cat           Print internal objects to stdout
      check         Check the repository for errors
      diff          Show differences between two snapshots
      dump          Print a backed-up file to stdout
      find          Find a file, a directory or restic IDs
      forget        Remove snapshots from the repository
      generate      Generate manual pages and auto-completion files (bash, zsh)
      help          Help about any command
      init          Initialize a new repository
      key           Manage keys (passwords)
      list          List objects in the repository
      ls            List files in a snapshot
      migrate       Apply migrations
      mount         Mount the repository
      prune         Remove unneeded data from the repository
      rebuild-index Build a new index file
      recover       Recover data from the repository
      restore       Extract the data from a snapshot
      self-update   Update the restic binary
      snapshots     List all snapshots
      stats         Scan the repository and show basic statistics
      tag           Modify tags on snapshots
      unlock        Remove locks other processes created
      version       Print version information
    
    Flags:
          --cacert file              file to load root certificates from (default: use system certificates)
          --cache-dir string         set the cache directory. (default: use system default cache directory)
          --cleanup-cache            auto remove old cache directories
      -h, --help                     help for restic
          --json                     set output mode to JSON for commands that support it
          --key-hint string          key ID of key to try decrypting first (default: $RESTIC_KEY_HINT)
          --limit-download int       limits downloads to a maximum rate in KiB/s. (default: unlimited)
          --limit-upload int         limits uploads to a maximum rate in KiB/s. (default: unlimited)
          --no-cache                 do not use a local cache
          --no-lock                  do not lock the repo, this allows some operations on read-only repos
      -o, --option key=value         set extended option (key=value, can be specified multiple times)
      -p, --password-file string     read the repository password from a file (default: $RESTIC_PASSWORD_FILE)
      -q, --quiet                    do not output comprehensive progress report
      -r, --repo string              repository to backup to or restore from (default: $RESTIC_REPOSITORY)
          --tls-client-cert string   path to a file containing PEM encoded TLS client certificate and private key
      -v, --verbose n                be verbose (specify --verbose multiple times or level n)
    
    Use "restic [command] --help" for more information about a command.
    
    root@rockpro64:/home/frank/restic# ./restic version
    restic 0.9.3 (v0.9.3-83-g0dd80542) compiled with go1.11.4 on linux/arm64
    

    Damit wir das aber an der richtigen Stelle haben, kopieren wir das mal nach /usr/bin

    root@rockpro64:/home/frank/restic# sudo cp restic /usr/bin
    

    Nun kann man das Programm von überall aufrufen.

    root@rockpro64:/home/frank/restic# restic
    
    restic is a backup program which allows saving multiple revisions of files and
    directories in an encrypted repository stored on different backends.
    
    Usage:
      restic [command]
    
    Available Commands:
      backup        Create a new backup of files and/or directories
      cache         Operate on local cache directories
      cat           Print internal objects to stdout
      check         Check the repository for errors
      diff          Show differences between two snapshots
      dump          Print a backed-up file to stdout
      find          Find a file, a directory or restic IDs
      forget        Remove snapshots from the repository
      generate      Generate manual pages and auto-completion files (bash, zsh)
      help          Help about any command
      init          Initialize a new repository
      key           Manage keys (passwords)
      list          List objects in the repository
      ls            List files in a snapshot
      migrate       Apply migrations
      mount         Mount the repository
      prune         Remove unneeded data from the repository
      rebuild-index Build a new index file
      recover       Recover data from the repository
      restore       Extract the data from a snapshot
      self-update   Update the restic binary
      snapshots     List all snapshots
      stats         Scan the repository and show basic statistics
      tag           Modify tags on snapshots
      unlock        Remove locks other processes created
      version       Print version information
    
    Flags:
          --cacert file              file to load root certificates from (default: use system certificates)
          --cache-dir string         set the cache directory. (default: use system default cache directory)
          --cleanup-cache            auto remove old cache directories
      -h, --help                     help for restic
          --json                     set output mode to JSON for commands that support it
          --key-hint string          key ID of key to try decrypting first (default: $RESTIC_KEY_HINT)
          --limit-download int       limits downloads to a maximum rate in KiB/s. (default: unlimited)
          --limit-upload int         limits uploads to a maximum rate in KiB/s. (default: unlimited)
          --no-cache                 do not use a local cache
          --no-lock                  do not lock the repo, this allows some operations on read-only repos
      -o, --option key=value         set extended option (key=value, can be specified multiple times)
      -p, --password-file string     read the repository password from a file (default: $RESTIC_PASSWORD_FILE)
      -q, --quiet                    do not output comprehensive progress report
      -r, --repo string              repository to backup to or restore from (default: $RESTIC_REPOSITORY)
          --tls-client-cert string   path to a file containing PEM encoded TLS client certificate and private key
      -v, --verbose n                be verbose (specify --verbose multiple times or level n)
    
    Use "restic [command] --help" for more information about a command.
    
    root@rockpro64:/home/frank/restic# restic version
    restic 0.9.3 (v0.9.3-83-g0dd80542) compiled with go1.11.4 on linux/arm64
    root@rockpro64:/home/frank/restic# 
    

    Wenn sich jemand fragt, warum man das selber baut und damit natürlich ein wenig Arbeit hat. Das Restic was in den normalen Quellen ist, ist viel zu alt. Kann ich nicht gebrauchen.

    Wieder ein Schritt weiter!! 🙂 Jetzt kann ich ja das NAS wieder in Angriff nehmen!

  • Der frühe Vogel.... 🙂

    IMG_20181226_072626_ergebnis.jpg

    Das oben geschriebene eben nochmal durchgeführt, funktioniert einwandfrei. Jetzt kann ich die USB3-Platte umbauen und den Job verlagern. Dann habe ich einen ROCKPro64 wieder frei zum Testen 😉

  • ROCKPro64 - Projekt Wireguard Server

    Verschoben ROCKPro64 linux rockpro64 wireguard
    2
    2
    0 Stimmen
    2 Beiträge
    580 Aufrufe
    FrankMF
    Hat ein wenig Nerven gekostet und der Artikel ist auch was länger geworden Viel Spaß beim Lesen und testen!
  • Mainline 5.4.x

    Images rockpro64
    2
    0 Stimmen
    2 Beiträge
    393 Aufrufe
    FrankMF
    Bootet bei mir weder von USB3-SSD noch von SD-Karte. USB3-SSD -> https://pastebin.com/QAS92sme SD-Karte -> https://pastebin.com/Bsr3WLJ7
  • SATA Karte Marvell 88SE9230 Chipsatz

    Angeheftet Hardware hardware rockpro64
    19
    0 Stimmen
    19 Beiträge
    6k Aufrufe
    FrankMF
    Ok, es gibt noch eine andere Möglichkeit. Kamil hat mir noch ein wenig geholfen. Mit folgender Änderung werden die Platten gefunden. hmm, I had to add /etc/default/extlinux: libahci.skip_host_reset=1 Sieht dann so aus. # Configure timeout to choose the kernel # TIMEOUT="10" # Configure default kernel to boot: check all kernels in `/boot/extlinux/extlinux.conf` # DEFAULT="kernel-4.4.126-rockchip-ayufan-253" # Configure additional kernel configuration options APPEND="$APPEND root=LABEL=linux-root rootwait rootfstype=ext4 libahci.skip_host_reset=1" Danach waren die Platten zu sehen. root@rockpro64:/tmp/etc/default# blkid /dev/sda2: SEC_TYPE="msdos" LABEL_FATBOOT="boot-efi" LABEL="boot-efi" UUID="ABCD-FC7D" TYPE="vfat" PARTLABEL="boot_efi" PARTUUID="72e36967-4050-4bb3-8f8f-bf6755c38f28" /dev/sda3: LABEL="linux-boot" UUID="8e289a3e-0f9b-4da1-a147-51e03390637c" TYPE="ext4" PARTLABEL="linux_boot" PARTUUID="fe944fd2-3e42-4202-8a95-656e9bdb4be6" /dev/sda4: LABEL="linux-root" UUID="3e9513c6-dfd1-48c9-bee2-04bb5a153056" TYPE="ext4" PARTLABEL="linux_root" PARTUUID="d2d1dd88-030d-4f74-998f-7c9ce7d385d0" /dev/sdb2: SEC_TYPE="msdos" LABEL_FATBOOT="boot-efi" LABEL="boot-efi" UUID="56C9-F745" TYPE="vfat" PARTLABEL="boot_efi" PARTUUID="919c8f73-5f25-4a01-9072-3a5ed9a88ff2" /dev/sdb3: LABEL="linux-boot" UUID="23c19647-f4a1-4197-a877-f1bb03456bef" TYPE="ext4" PARTLABEL="linux_boot" PARTUUID="093d0cc0-d122-4dce-aeb5-4e266b4b7d9d" /dev/sdb4: LABEL="linux-root" UUID="f1c74331-8318-4ee8-a4f7-f0c169fb9944" TYPE="ext4" PARTLABEL="linux_root" PARTUUID="964ab457-58d5-40c4-bb02-dfd37bd2f0da" /dev/sda1: PARTLABEL="loader1" PARTUUID="37466429-e4a4-495c-b9a1-3f74625a3cae" /dev/sdb1: PARTLABEL="loader1" PARTUUID="33f692b3-54cb-4a37-b602-21a2baf32fa0" Aber auch hiermit ist ein Boot von der SATA Platte nicht möglich. Ich möchte hier noch was vom kamil zitieren. (11:44:09) ayufanWithPM: will look later, but this controller is tricky, also on x86 as well (11:44:16) ayufanWithPM: jms585 seems to be significantly more stable Evt. bekommt er das gefixt
  • ROCKPro64 - RP64.GPIO

    Angeheftet Verschoben Hardware hardware rockpro64
    6
    1
    0 Stimmen
    6 Beiträge
    6k Aufrufe
    FrankMF
    Hallo zusammen, da ich weiß das dieser Artikel recht beliebt ist, wollen wir den heute mal aktualisieren. Vieles aus den vorherigen Beiträgen passt noch. Es gibt aber kleine Anpassungen. Hardware ROCKPro64v21. 2GB RAM Software Kamils Release 0.10.9 Linux rockpro64 5.6.0-1132-ayufan-g81043e6e109a #ayufan SMP Tue Apr 7 10:07:35 UTC 2020 aarch64 GNU/Linux Installation apt install python Danach laden wir das Projekt git clone https://github.com/Leapo/Rock64-R64.GPIO PIN Nummern anpassen cd Rock64-R64.GPIO/R64 nano _GPIO.py Datei ergänzen # Define GPIO arrays #ROCK_valid_channels = [27, 32, 33, 34, 35, 36, 37, 38, 64, 65, 67, 68, 69, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 96, 97, 98, 100, 101, 102, 103, 104] #BOARD_to_ROCK = [0, 0, 0, 89, 0, 88, 0, 0, 64, 0, 65, 0, 67, 0, 0, 100, 101, 0, 102, 97, 0, 98, 103, 96, 104, 0, 76, 68, 69, 0, 0, 0, 38, 32, 0, 33, 37, 34, 36, 0, 35, 0, 0, 81, 82, 87, 83, 0, 0, 80, 79, 85, 84, 27, 86, 0, 0, 0, 0, 0, 0, 89, 88] #BCM_to_ROCK = [68, 69, 89, 88, 81, 87, 83, 76, 104, 98, 97, 96, 38, 32, 64, 65, 37, 80, 67, 33, 36, 35, 100, 101, 102, 103, 34, 82] ROCK_valid_channels = [52,53,152,54,50,33,48,39,41,43,155,156,125,122,121,148,147,120,36,149,153,42,45,44,124,126,123,127] BOARD_to_ROCK = [0,0,0,52,0,53,0,152,148,0,147,54,120,50,0,33,36,0,149,48,0,39,153,41,42,0,45,43,44,155,0,156,124,125,0,122,126,121,123,0,127] BCM_to_ROCK = [43,44,52,53,152,155,156,45,42,39,48,41,124,125,148,147,124,54,120,122,123,127,33,36,149,153,121,50] Abspeichern. Datei test.py anlegen nano test.py Inhalt #!/usr/bin/env python # Frank Mankel, 2018, LGPLv3 License # Rock 64 GPIO Library for Python # Thanks Allison! Thanks smartdave! import R64.GPIO as GPIO from time import sleep print("Output Test R64.GPIO Module...") # Set Variables var_gpio_out = 156 var_gpio_in = 155 # GPIO Setup GPIO.setwarnings(True) GPIO.setmode(GPIO.ROCK) GPIO.setup(var_gpio_out, GPIO.OUT, initial=GPIO.HIGH) # Set up GPIO as an output, with an initial state of HIGH GPIO.setup(var_gpio_in, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set up GPIO as an input, pullup enabled # Test Output print("") print("Testing GPIO Input/Output:") while True: var_gpio_state_in = GPIO.input(var_gpio_in) var_gpio_state = GPIO.input(var_gpio_out) # Return State of GPIO if var_gpio_state == 0 and var_gpio_state_in == 1: GPIO.output(var_gpio_out,GPIO.HIGH) # Set GPIO to HIGH print("Input State: " + str(var_gpio_state_in)) # Print results print("Output State IF : " + str(var_gpio_state)) # Print results else: GPIO.output(var_gpio_out,GPIO.LOW) # Set GPIO to LOW print("Input State: " + str(var_gpio_state_in)) # Print results print("Output State ELSE: " + str(var_gpio_state)) # Print results sleep(0.5) exit() Beispiel [image: 1537522070243-input_ergebnis.jpg] Wenn der Taster im Bild betätigt wird, soll die LED blinken. Wir benutzen folgende Ein- Augänge des ROCKPro64. # Set Variables var_gpio_out = 156 var_gpio_in = 155 Das heißt: an Pin 1 (3,3V) kommt eine Strippe des Tasters an Pin 29 (Input) kommt eine Strippe des Tasters an Pin 31 (Output) kommt der Plus-Pol der LED an Pin 39 (GND) kommt der Minus-Pol der LED Somit wird auf den Eingang (Pin 29) bei Betätigung des Tasters 3,3 Volt angelegt. Damit wird dann der Eingang als High (1) erkannt. Die LED wird über den Ausgang (Pin 31) gesteuert. Starten kann man das Script mit python test.py https://www.youtube.com/watch?v=aPSC0Q0xInw
  • [HOWTO] Verschlüsseltes NAS aufsetzen

    Verschoben ROCKPro64 howto linux rockpro64
    12
    0 Stimmen
    12 Beiträge
    3k Aufrufe
    FrankMF
    Da btrfs bei mir ja nicht so der Bringer war, Fehler im Image vom Kamil?, Fehler in btrfs? Ich weiß es nicht, also weg damit! Da ich das NAS noch richtig produktiv genutzt hatte, waren die Daten schnell gesichert. Danach das NAS neugestartet, nun sind die beiden Platten nicht mehr gemountet und wir können damit arbeiten. ACHTUNG! Ich bitte wie immer darum, das Gehirn ab hier einzuschalten! Sonst droht Datenverlust! Aus Sicherheitsgründen gebe ich hier die Laufwerke so an = sdX1 Das X bitte entsprechend austauschen! Die beiden Platten mit sudo fdisk /dev/sdX neu einrichten. Alte Partition weg, neu einrichten usw. Im Detail gehe ich hier jetzt nicht drauf ein. Ich gehe davon aus, das das bekannt ist. Der Plan raid_pool0 = sdX1 = /dev/mapper/raid_pool0 raid_pool1 = sdX1 = /dev/mapper/raid_pool1 Verschlüsseln sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdX1 sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdX1 Platten entschlüsseln sudo cryptsetup open /dev/sdX1 raid_pool0 sudo cryptsetup open /dev/sdX1 raid_pool1 RAID1 anlegen sudo mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/mapper/raid_pool0 /dev/mapper/raid_pool1 sudo mkfs.ext4 /dev/md0 Script zum Entschlüsseln und Mounten crypt.sh #!/bin/bash ###############################################################################$ # Autor: Frank Mankel # Verschlüsseltes Raid1 einbinden! # # Hardware: # ROCKPro64v2.1 # PCIe SATA Karte # 2St. 2,5 Zoll HDD Platten a 2TB # # Software: # bionic-minimal 0.7.9 # Kontakt: frank.mankel@gmail.com # ###############################################################################$ #Passwort abfragen echo "Passwort eingeben!" read -s password echo "Bitte warten......" #Passwörter abfragen echo -n $password | cryptsetup open /dev/sdX1 raid_pool0 -d - echo -n $password | cryptsetup open /dev/sdX1 raid_pool1 -d - #Raid1 mounten mount /dev/md0 /mnt/raid echo "Laufwerke erfolgreich gemountet!" Bis jetzt sieht das Raid ok aus, ich werde das die nächsten Tage mal ein wenig im Auge behalten. [ 82.430293] device-mapper: uevent: version 1.0.3 [ 82.430430] device-mapper: ioctl: 4.39.0-ioctl (2018-04-03) initialised: dm-devel@redhat.com [ 108.196397] md/raid1:md0: not clean -- starting background reconstruction [ 108.196401] md/raid1:md0: active with 2 out of 2 mirrors [ 108.240395] md0: detected capacity change from 0 to 2000260497408 [ 110.076860] md: resync of RAID array md0 [ 110.385099] EXT4-fs (md0): recovery complete [ 110.431715] EXT4-fs (md0): mounted filesystem with ordered data mode. Opts: (null) [57744.301662] md: md0: resync done.
  • PCI-e X4 to M.2/NGFF NVMe SSD Interface Card

    Hardware hardware rockpro64
    1
    0 Stimmen
    1 Beiträge
    685 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 v2.1 - Und wieder mal einer der Ersten? ;)

    ROCKPro64 rockpro64
    3
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    FrankMF
    Ein paar Hardware Änderungen Weiße LED gedimmt [image: 1532529766713-img_20180725_151430_ergebnis-resized.jpg] Neue LED grün, neben dem Eingang der Stromversorgung [image: 1532529865409-img_20180725_151421_ge%C3%A4ndert-resized.jpg]
  • 0.6.59 released

    Verschoben Archiv rockpro64
    1
    0 Stimmen
    1 Beiträge
    570 Aufrufe
    Niemand hat geantwortet