Files
bitcoin-tutorials/zfs/create-ext4-raspiblitz-disk.md
2024-03-13 12:37:24 +01:00

3.3 KiB

parted -s /dev/${hdd} mkpart primary ext4 1024KiB 100%
mkfs.ext4 -F -L BLOCKCHAIN /dev/${hdd}
# for nvme
mkfs.ext4 -F -L BLOCKCHAIN /dev/${hdd}p1
tune2fs -c 1 /dev/${hdd}
    hddDataPartitionExt4=$hdd
    # loop until the uuids are available
    uuid1=""
    loopcount=0
    while [ ${#uuid1} -eq 0 ]
    do
      echo "# waiting until uuid gets available"
      sleep 2
      sync
      uuid1=$(lsblk -o NAME,UUID | grep "${hddDataPartitionExt4}" | awk '$1=$1' | cut -d " " -f 2 | grep "-")
      loopcount=$(($loopcount +1))
      if [ ${loopcount} -gt 10 ]; then
        echo "error='no uuid'"
        exit 1
      fi
    done

    echo "# mount /mnt/hdd"
    mkdir -p /mnt/hdd 1>/dev/null
    updated=$(cat /etc/fstab | grep -c "/mnt/hdd")
    if [ $updated -eq 0 ]; then
       echo "# updating /etc/fstab"
       sed "/raspiblitz/ i UUID=${uuid1} /mnt/hdd ext4 noexec,defaults 0 2" -i /etc/fstab 1>/dev/null
    fi
    sync
    mount -a 1>/dev/null


      # make sure common base directory exits
  mkdir -p /mnt/hdd/lnd
  mkdir -p /mnt/hdd/app-data

      >&2 echo "# Creating EXT4 setup links"
    >&2 echo "# opening blockchain into /mnt/hdd"
    mkdir -p /mnt/hdd/bitcoin
    >&2 echo "# linking blockchain for user bitcoin"
    rm /home/bitcoin/.bitcoin 2>/dev/null
    ln -s /mnt/hdd/bitcoin /home/bitcoin/.bitcoin
    >&2 echo "# linking lnd for user bitcoin"
    rm /home/bitcoin/.lnd 2>/dev/null
    ln -s /mnt/hdd/lnd /home/bitcoin/.lnd
    >&2 echo "# creating default storage & temp folders"
    mkdir -p /mnt/hdd/app-storage
    mkdir -p /mnt/hdd/temp


  # fix ownership of linked files
  chown -R bitcoin:bitcoin /mnt/hdd/bitcoin
  chown -R bitcoin:bitcoin /mnt/hdd/lnd
  chown -R bitcoin:bitcoin /home/bitcoin/.lnd
  chown -R bitcoin:bitcoin /home/bitcoin/.bitcoin
  chown bitcoin:bitcoin /mnt/hdd/app-storage
  chown bitcoin:bitcoin /mnt/hdd/app-data
  chown -R bitcoin:bitcoin /mnt/hdd/temp 2>/dev/null
  chmod -R 777 /mnt/temp 2>/dev/null
  chmod -R 777 /mnt/hdd/temp 2>/dev/null

  # write info files about what directories are for

  echo "The /mnt/hdd/temp directory is for short time data and will get cleaned up on very start. Dont work with data here thats bigger then 25GB - because on BTRFS hdd layout this is a own partition with limited space. Also on BTRFS hdd layout the temp partition is an FAT format - so it can be easily mounted on Windows and OSx laptops by just connecting it to such laptops. Use this for easy export data. To import data make sure to work with the data before bootstrap is deleting the directory on startup." > ./README.txt
  mv ./README.txt /mnt/hdd/temp/README.txt 2>/dev/null

  echo "The /mnt/hdd/app-data directory should be used by additional/optional apps and services installed to the RaspiBlitz for their data that should survive an import/export/backup. Data that can be reproduced (indexes, etc.) should be stored in app-storage." > ./README.txt
  mv ./README.txt /mnt/hdd/app-data/README.txt 2>/dev/null

  echo "The /mnt/hdd/app-storage directory should be used by additional/optional apps and services installed to the RaspiBlitz for their non-critical and reproducible data (indexes, public blockchain, etc.) that does not need to survive an an import/export/backup. Data is critical should be in app-data." > ./README.txt
  mv ./README.txt /mnt/hdd/app-storage/README.txt 2>/dev/null

  >&2 echo "# OK - all symbolic links are built"