Files
bitcoin-tutorials/zfs/create-ext4-raspiblitz-disk.md
2023-07-31 21:51:28 +02:00

3.3 KiB

parted -s /dev/${hdd} mkpart primary ext4 1024KiB 100% mkfs.ext4 -F -L BLOCKCHAIN /dev/${hdd} 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"