Skip to content

Bananian auf HDD installieren

BananaPi
1 1 926
  • Heute am 1. Weihnachtstag 2015 ist BananaPi-Tag 🙂 Ich habe mir mal vorgenommen das aktuelle Bananian auf eine HDD zu bügeln und mal zu schauen ob es noch geht 🙂

    Ich habe hier also folgendes liegen:

    • BananaPi M1
    • SD-Karte 4GB
    • SSD 120GB
    • SATA-Kabel

    IMG 20151225 133942

    Bananian auf SD-Karte schreiben! Für Einsteiger -> BananaPI - Erste Schritte

    SD-Karte in den Schacht, Festplatte anschließen und den BPi einschalten. Nun konfigurieren wir erst mal das System.

    bananian.config
    

    Das sollte soweit selbsterklärend sein. Danach neu starten.

    shutdown -r now
    

    Die angeschlossene HDD war benutzt, also müssen die vorhandenen Partitionen gelöscht werden.
    ACHTUNG! Ab hier besteht die Gefahr von Datenverlust. Bitte vorher das Gehirn einschalten und denkt dran, ich übernehme kein Garantie für Eure Daten 🙂

    Mit fdisk schauen wir uns erst mal alles an.

    130 root@bananapi ~ # fdisk -l :(
    
    Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x000ebd3b 
    
    Device Boot Start End Sectors Size Id Type
    /dev/sda1 * 2048 242356223 242354176 115.6G 83 Linux
    /dev/sda2 242358270 250068991 7710722 3.7G 5 Extended
    /dev/sda5 242358272 250068991 7710720 3.7G 82 Linux swap / Solaris
    
    Disk /dev/mmcblk0: 3.7 GiB, 3980394496 bytes, 7774208 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos  
    Disk identifier: 0x0ccea0b3
    
    Device Boot Start End Sectors Size Id Type
    /dev/mmcblk0p1 2048 43007 40960 20M 83 Linux
    /dev/mmcblk0p2 43008 3710936 3667929 1.8G 83 Linux
    

    Danach wählen wir die Platte aus, die bearbeitet werden soll.

    root@bananapi ~ # fdisk /dev/sda
    
    Welcome to fdisk (util-linux 2.25.2).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Command (m for help):
    

    Dann mit "d" Partition auswählen.

    Command (m for help): d
    Partition number (1,2,5, default 5): 5
    
    Partition 5 has been deleted.
    

    Das dann für alle Partitionen wiederholen.

    Zum Schluss mit w die Änderungen auf die Platte schreiben.

    Nun erzeugen wir eine neue Partition

     fdisk /dev/sda
    
     Welcome to fdisk (util-linux 2.25.2).
     Changes will remain in memory only, until you decide to write them.
     Be careful before using the write command.
    
     Command (m for help): n
     Partition type
     p primary (0 primary, 0 extended, 4 free)
     e extended (container for logical partitions)
     Select (default p): p
     Partition number (1-4, default 1): 1
     First sector (2048-250069679, default 2048): 2048
     Last sector, +sectors or +size{K,M,G,T,P} (2048-250069679, default 250069679): 250069679
    
    Created a new partition 1 of type 'Linux' and of size 119,2 GiB.
    
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
    

    Schauen wir uns das Ergebnis nochmal an.

     root@bananapi ~ # fdisk -l
    
    Disk /dev/sda: 119,2 GiB, 128035676160 bytes, 250069680 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x000ebd3b
    
    Device Boot Start End Sectors Size Id Type
    /dev/sda1 2048 250069679 250067632 119,2G 83 Linux
    
    Disk /dev/mmcblk0: 3,7 GiB, 3980394496 bytes, 7774208 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x0ccea0b3
    
    Device Boot Start End Sectors Size Id Type
    /dev/mmcblk0p1 2048 43007 40960 20M 83 Linux
    /dev/mmcblk0p2 43008 7774207 7731200 3,7G 83 Linux
    

    Nun muss eine Festplatte auch noch formatiert werden, das macht man mit mkfs.ext4 /dev/sda1

    root@bananapi ~ # mkfs.ext4 /dev/sda1
    mke2fs 1.42.12 (29-Aug-2014)
    /dev/sda1 hat ein ext4-Dateisystem
    zuletzt auf / auf Sun Dec 21 09:09:08 2014
    eingehängtTrotzdem fortfahren? (j,n) j
    Geräteblöcke werden verworfen: erledigt
    Ein Dateisystems mit 31258454 (4k) Blöcken und 7815168 Inodes wird erzeugt.
    UUID des Dateisystems: bc260a48-eb4d-4491-bdbc-0b8758eeacc9
    Superblock-Sicherungskopien gespeichert in den Blöcken:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872
    
    beim Anfordern von Speicher für die Gruppentabellen: erledigt
    Inode-Tabellen werden geschrieben: erledigt
    Das Journal (32768 Blöcke) wird angelegt: erledgt
    Die Superblöcke und die Informationen über die Dateisystemnutzung werden
    geschrieben: erledigt
    

    Damit wäre die HDD fertig eingerichtet! Nun binden wird die HDD ins Sys ein

    mount /dev/sda1 /mnt/
    

    Nun kopieren wir den Inhalt der SD-Karte auf die HDD.

    rsync -ax / /mnt/
    

    Wenn alles fertig kopiert ist, unmounten wir die HDD und mounten die SD-Karte um die Bootparameter zu ändern.

    umount /mnt/
    mount /dev/mmcblk0p1 /mnt
    nano /mnt/boot.cmd
    

    In früheren Versionen musste noch die uEnv.txt editiert werden. Das hat sich geändert.

    So sieht die geänderte boot.cmd aus.

    #--------------------------------------------------------------------------------------------------------------------------------
    # Boot loader script to boot with different boot methods for old and new kernel
    # Credits: https://github.com/igorpecovnik - Thank you for this great script!
    #--------------------------------------------------------------------------------------------------------------------------------
    if load mmc 0:1 0x00000000 uImage-next
    then
    # mainline kernel >= 4.x
    #--------------------------------------------------------------------------------------------------------------------------------
    setenv bootargs console=ttyS0,115200 console=tty0 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline rootwait
    load mmc 0:1 0x49000000 dtb/${fdtfile}
    load mmc 0:1 0x46000000 uImage-next
    bootm 0x46000000 - 0x49000000
    #--------------------------------------------------------------------------------------------------------------------------------
    else
    # sunxi 3.4.x
    #--------------------------------------------------------------------------------------------------------------------------------
    setenv bootargs console=ttyS0,115200 console=tty0 console=tty1 sunxi_g2d_mem_reserve=0 sunxi_ve_mem_reserve=0 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1680x1050p60 root=/dev/sda1  rootfstype=ext4 elevator=deadline rootwait
    setenv bootm_boot_mode sec
    load mmc 0:1 0x43000000 script.bin
    load mmc 0:1 0x48000000 uImage
    bootm 0x48000000
    #--------------------------------------------------------------------------------------------------------------------------------
    fi
    

    Diese Datei boot.cmd muß jetzt noch in eine ausfährbare Datei verwandelt werden. Dafür benutzt man folgenden Befehl.

    cd /mnt
    
    mkimage -C none -A arm -T script -d boot.cmd boot.scr
    

    Dann kommt folgendes:

    root@bananapi /mnt # mkimage -C none -A arm -T script -d boot.cmd boot.scr
    zsh: command not found: mkimage
    

    Ok, mkimage fehlt.

    apt-get install u-boot-tools
    

    Danach geht es.

    root@bananapi /mnt # mkimage -C none -A arm -T script -d boot.cmd boot.scr
    Image Name:
    Created: Fri Dec 25 13:22:01 2015
    Image Type: ARM Linux Script (uncompressed)
    Data Size: 1602 Bytes = 1.56 kB = 0.00 MB
    Load Address: 00000000
    Entry Point: 00000000
    Contents:
    Image 0: 1594 Bytes = 1.56 kB = 0.00 MB
    

    Nun können wir das System neustarten.

    shutdown -r now
    

    Nach dem Neustart mal eben schauen ob alles klappt.

    root@bananapi ~ # df -h
    Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
    /dev/root 118G 1,1G 111G 1% /
    devtmpfs 486M 0 486M 0% /dev
    tmpfs 98M 212K 97M 1% /run
    tmpfs 5,0M 0 5,0M 0% /run/lock
    tmpfs 195M 0 195M 0% /run/shm
    

    Fertig! Geht 🙂

    Kurz noch ein Speedtest

    apt-get install iperf
    

    Auf meinem Hauptrechner kurz einen iperf Server aufgemacht.

    iperf -s
    

    Dann auf dem BananaPi

    iperf -c 192.168.x.x
    

    Das Ergebnis:

    root@bananapi ~ # iperf -c 192.168.x.x
    ------------------------------------------------------------
    Client connecting to 192.168.x.x, TCP port 5001
    TCP window size: 21.0 KByte (default)
    ------------------------------------------------------------
    [ 3] local 192.168.2.7 port 47120 connected with 192.168.x.x port 5001
    [ ID] Interval Transfer Bandwidth
    [ 3] 0.0-10.0 sec 564 MBytes 473 Mbits/sec
    iperf -c 192.168.2.213 0,07s user 9,98s system 100% cpu 10,049 total
    

    Recht ordentlich und das ist auch der absolute Vorteil der BananaPis, die Anbindung einer HDD mittels SATA.

    Nun läuft das Sys auf der HDD, sollte die SD-Karte mal kaputt gehen schreibt man sich einfach eine neue und fertig. Die Daten sind auf einer Platte einfach sicherer abgelegt als auf einer SD-Karte (meine Meinung).

    Viel Spaß beim Homeserver bauen!

  • OpenCloud - Storage Backends testen

    OpenCloud opencloud linux docker
    2
    0 Stimmen
    2 Beiträge
    110 Aufrufe
    FrankMF
    So, mal weiter damit beschäftigen. Also, durch meine ganze Testerei war doch ein Haufen Müll angefallen. dockeruser@opencloud:~/opencloud/deployments/examples/opencloud_full$ docker volume ls DRIVER VOLUME NAME local 0fcd6f237898477b251f3dacb6cd083996092b783f991f899b06d89befc41b1e local 1d8df3f5d41613ad93ed753ce2102a14738cf00e8e7d127ec79881660be291ab local 3b612ce20b207c226640d6b84c32c788cd0fad9f9157578c2310f4b3db63dd29 local 5dfdde733fefb9fdb805acec8338a860762e88cd0753f4bb4098a19fbcd4b6c3 local 6bd5659759fb99b0d0613175d2392ca268dbdb3bd0353b85ccdf9a6004e798c0 local 6f8881420aa0e7713ed5308e635fcb9382939b6570afbd1d776866a07f6d61f2 local 29f7d20edd9eda935041cea7af5aab0af748175d7df8f345288463753d2afa9a local 66ca6287706aac5013b458a109e7c143c4fb177670734fc7a0f68495b1c62fd4 local 74d304835ef51f91226cc22dbbd494d2ddc9a4d91badf88814cae24126efd04a local 0203eb654c1f28a60899ded4660fb101ea222a5f8c86a225d39f3e5da877f1c0 local 271c474feb2ed915afb8efa85e422461fcfdf8acd4097355841eadf33847b7ef local 569a8c34804afd5861299973bed023c0146f40c0dbda0d980b8651bbcadc7fc9 local 655b1f446b5db9749787d4be4445887dcb3d19906d4244d059a0f292a6cd5f01 local 843bb8d0d7845adab06e146c44b153b842d5a1a1d8eb3972bdee1d3cbcb7e815 local 987ee19b8639ad5fffabba276ceb1ca09af6ebc66efb007e561570589c9c53a8 local 1004f5b7b161a4fe37a07d7960740e5cd09b90d5744f1922fb3e41c1265f800a local 2043c77b57728106cbcca8b7e2d3ae2f07ddf4ca44ee21fca232526c95e07381 local 3685c81df1be0061352dfc5b0e6db8d8d9f9b0915a271f1ca53d2796a7876805 local 9581abcfb4fb42b2fabfabbc8139cc4659ca83d92a8b60041957565409293ef4 local 796650f1fa887ff0b153822b268a10aa3579f4f2ca3ce6855ff292e49b3bb6b8 local 426251107e3131a250b27b96e795355332127f19ccf1ec8252860aff5d0caec8 local bd43ceef38448db348cc34e7dc5c4fee9c834d8b6c5957b1e6cdb83cec7b0974 local d94e7ce6c0fb1f4f7b811f624b4526ea889f2f8b99d2aa1b21e79d00dfeb38d0 local e87a27c307a8be80839fae1c006273d57570bb99f60c78c95e86a1e9ea1a786c local f2b3e30406db730e2a341850243c115b6eb231f30f41f5353c7b2427de39af75 local opencloud_full_certs local opencloud_full_opencloud-apps local opencloud_full_opencloud-config local opencloud_full_opencloud-data Oje, das sieht ziemlich vermüllt aus. Dann mal ganz mutig alles löschen. Vorher alles gestoppt. docker compose down Volume löschen, nur ein Beispiel docker volume rm opencloud_full_opencloud-data Alles gelöscht. Dann mal ein Neustart docker compose up -d Jetzt sieht das schon viel besser aus. dockeruser@opencloud:~/opencloud/deployments/examples/opencloud_full$ docker volume ls DRIVER VOLUME NAME local 3737a8eab68ffdc08d6e41493346feeb2e06ef350a210213ab450775318e49f8 local opencloud_full_opencloud-apps Da ich neugierig bin, schauen wir mal rein. root@opencloud:~ ls -lha /var/lib/docker/volumes/3737a8eab68ffdc08d6e41493346feeb2e06ef350a210213ab450775318e49f8/_data/web/assets/apps/ total 8.0K drwxr-x--x 2 dockeruser dockeruser 4.0K May 19 18:25 . drwxr-x--x 3 dockeruser dockeruser 4.0K May 31 10:21 .. Vermutlich ein Speicher, wo die Web Apps was ablegen können. Der andere zeigt es dann klarer. root@opencloud-4gb-fsn1-2:~# ls -lha /var/lib/docker/volumes/opencloud_full_opencloud-apps/_data total 28K drwxr-x--x 7 dockeruser dockeruser 4.0K May 31 10:22 . drwx-----x 3 root root 4.0K May 31 10:21 .. drwxr-xr-x 2 root root 4.0K May 31 10:22 draw-io drwxr-xr-x 2 root root 4.0K May 31 10:21 external-sites drwxr-xr-x 3 root root 4.0K May 31 10:22 json-viewer drwxr-xr-x 2 root root 4.0K May 31 10:22 progress-bars drwxr-xr-x 3 root root 4.0K May 31 10:22 unzip Ok, das sollte mir erst mal reichen. Meine Installation lagert die certs ja aus, das habe ich im docker compose geändert. dockeruser@opencloud:~/opencloud/deployments/examples/opencloud_full$ ls -lha certs/ total 44K drwxr-xr-x 2 dockeruser dockeruser 4.0K May 30 05:49 . drwxr-xr-x 6 dockeruser dockeruser 4.0K May 31 10:38 .. -rw------- 1 dockeruser dockeruser 33K May 29 11:00 acme.json Im docker-compose.yml volumes: - ./certs:/certs # bind-mount acme.json Der Grund dafür ist, das ich das docker-compose nicht als root laufen haben möchte. Die Hauptdaten sind nach lokal ausgelagert. OC_CONFIG_DIR=/home/dockeruser/oc_data/config OC_DATA_DIR=/home/dockeruser/oc_data/data Somit sollte jetzt alles so passen und ich muss mal langsam mit der Spielerei aufhören
  • OpenSource - Donations 2024

    Allgemeine Diskussionen opensource linux donations
    1
    0 Stimmen
    1 Beiträge
    390 Aufrufe
    Niemand hat geantwortet
  • MSI B650 Tomahawk WiFi Teil 2

    Allgemeine Diskussionen msi linux
    1
    0 Stimmen
    1 Beiträge
    288 Aufrufe
    Niemand hat geantwortet
  • MongoDB - Erste Erfahrungen

    Linux mongodb linux ki-generiert
    2
    2
    0 Stimmen
    2 Beiträge
    259 Aufrufe
    FrankMF
    So frisch von der MongoDB Front und wieder viel gelernt, weil beim Üben macht man Fehler Oben war ja mongodump & mongorestore von der KI empfohlen. Hier das wie ich es gemacht habe. mongodump frank@redis-stack:~$ mongodump -u frank -p '<password>' --host 192.168.3.9 --authenticationDatabase admin -d portfolio -o mongodump/ 2024-04-06T09:29:25.174+0200 writing portfolio.stockList to mongodump/portfolio/stockList.bson 2024-04-06T09:29:25.175+0200 writing portfolio.users to mongodump/portfolio/users.bson 2024-04-06T09:29:25.175+0200 done dumping portfolio.stockList (8 documents) 2024-04-06T09:29:25.176+0200 writing portfolio.total_sum to mongodump/portfolio/total_sum.bson 2024-04-06T09:29:25.177+0200 done dumping portfolio.total_sum (1 document) 2024-04-06T09:29:25.177+0200 writing portfolio.old_total_sum to mongodump/portfolio/old_total_sum.bson 2024-04-06T09:29:25.177+0200 writing portfolio.stocks to mongodump/portfolio/stocks.bson 2024-04-06T09:29:25.177+0200 done dumping portfolio.users (4 documents) 2024-04-06T09:29:25.178+0200 writing portfolio.settings to mongodump/portfolio/settings.bson 2024-04-06T09:29:25.178+0200 done dumping portfolio.settings (1 document) 2024-04-06T09:29:25.179+0200 done dumping portfolio.old_total_sum (1 document) 2024-04-06T09:29:25.179+0200 done dumping portfolio.stocks (34 documents) mongorestore mongorestore -u frank -p '<password>' --host 192.168.3.9 --authenticationDatabase admin -d portfolio mongodump/meineDatenbank/ Hier wird die Datensicherung mongodump/meineDatenbank/ in die neue Datenbank portfolio transferiert. Grund für das Ganze? Mich hatte der Datenbank Name meineDatenbank gestört. Benutzerrechte Jetzt der Teil wo man schnell was falsch machen kann Ich hatte also die neue Datenbank, konnte sie aber nicht lesen. Fehlten halt die Rechte. Ich hatte dann so was hier gemacht. db.updateUser("frank", { roles: [ { role: "readWrite", db: "meineDatenbank" }, { role: "readWrite", db: "portfolio" }]}) Ging auch prima, kam ein ok zurück. Nun das Problem, ich hatte beim Einrichten, den User frank als admin benutzt. Durch den oben abgesetzten Befehl (frank ist ja admin), wurden die neuen Rechte gesetzt und die Rechte als Admin entzogen!! Das war jetzt nicht wirklich das was ich gebrauchen konnte. LOL Ich hatte jetzt keine Kontrolle mehr über die DB. Das war aber nicht so wirklich kompliziert, das wieder zu ändern. Die Authentication temporär abstellen. Also /etc/mongod.conf editieren und #security: security.authorization: enabled eben mal auskommentieren. Den Daemon neustarten und anmelden an der DB. mongosh --host 192.168.3.9 Danach neuen User anlegen db.createUser({ user: "<name>", pwd: "<password>", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }) mongod.conf wieder ändern und neustarten. Danach hat man wieder eine DB mit Authentifizierung und einen neuen Admin. Ich bin diesmal, man lernt ja, anders vorgegangen. Es gibt nun einen Admin für die DB und einen User zum Benutzen der Datenbanken! So wie man es auch auf einem produktiven System auch machen würde. Wenn ich jetzt mal was an den Benutzerrechten des Users ändere, kann mir das mit dem Admin nicht mehr passieren. Hoffe ich
  • Firefox mit .deb Paket

    Linux debian firefox linux
    3
    2
    0 Stimmen
    3 Beiträge
    220 Aufrufe
    FrankMF
    Wer auch wie ich das Problem hat, das manche Webseiten keinen Text mehr anzeigen. Ich habe da was gefunden. https://neilzone.co.uk/2023/04/flatpak-firefox-112-not-showing-some-bitmap-fonts-in-debian
  • Redis - Zweite Instanz

    Redis redis linux
    1
    0 Stimmen
    1 Beiträge
    318 Aufrufe
    Niemand hat geantwortet
  • Kopia - Mit Snapshots arbeiten

    Kopia linux kopi
    2
    4
    0 Stimmen
    2 Beiträge
    437 Aufrufe
    FrankMF
    Solltet Ihr mal snaps mit dem Status incomplete haben und möchtet diese loswerden :~$ kopia snap ls -i USER@HOST:/home/frank 2020-09-10 16:31:45 CEST k89770cab1061e00ada49efc41075ed34 incomplete:canceled 728.8 MB drwxr-xr-x files:8891 dirs:3033 (incomplete) 2020-09-10 16:40:05 CEST k27f028b63299983167cb0b4a0c85df80 incomplete:canceled 153.8 MB drwxr-xr-x files:1052 dirs:324 (incomplete) So was passiert z.B. wenn die Internetleitung rumzickt. Jarek meint, das wäre nicht schlimm, beim nächsten Snapshot wird das gefixt und die Daten genutzt, die schon verarbeitet wurden.
  • FAN control OMV Auyfan 0.10.12: gitlab-ci-linux-build-184, Kernel 5.6

    Linux linux
    12
    1 Stimmen
    12 Beiträge
    1k Aufrufe
    M
    Hi, since I'm currently change my rockpro64 setup I came across this. With the kernel from ayufan you need to set PWM_CTL to /sys/devices/platform/pwm-fan/hwmon/hwmon3/pwm1 for my self compiled one I need /sys/devices/platform/pwm-fan/hwmon/hwmon0/pwm1 But I got it only working with one entry for PWM_CTL e.g. PWM_CTL = "/sys/devices/platform/pwm-fan/hwmon/hwmon0/pwm1", after that you need to start ats again sudo systemctl stop ats sudo systemctl start ats initially the fan should start immediately for a short period of time. In case it is even a different one on your kernel you can find the right one using this command. sudo find /sys -name pwm1 | grep hwmon So far I'm not sure which kernel parameter or modul changes this. Martin