alpine.sh 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. alpine_url=http://dl-cdn.alpinelinux.org/alpine/v3.22
  2. tools_tar=apk-tools-static-2.14.9-r3.apk
  3. tools_url=$alpine_url/main/armv7/$tools_tar
  4. firmware_tar=linux-firmware-other-20250509-r0.apk
  5. firmware_url=$alpine_url/main/armv7/$firmware_tar
  6. linux_dir=tmp/linux-6.12
  7. linux_ver=6.12.52-xilinx
  8. modules_dir=alpine-modloop/lib/modules/$linux_ver
  9. passwd=changeme
  10. test -f $tools_tar || curl -L $tools_url -o $tools_tar
  11. test -f $firmware_tar || curl -L $firmware_url -o $firmware_tar
  12. for tar in linux-firmware-ath9k_htc-20250509-r0.apk linux-firmware-brcm-20250509-r0.apk linux-firmware-cypress-20250509-r0.apk linux-firmware-rtlwifi-20250509-r0.apk
  13. do
  14. url=$alpine_url/main/armv7/$tar
  15. test -f $tar || curl -L $url -o $tar
  16. done
  17. mkdir alpine-apk
  18. tar -zxf $tools_tar --directory=alpine-apk --warning=no-unknown-keyword
  19. mkdir -p $modules_dir/kernel
  20. find $linux_dir -name \*.ko -printf '%P\0' | tar --directory=$linux_dir --owner=0 --group=0 --null --files-from=- -zcf - | tar -zxf - --directory=$modules_dir/kernel
  21. cp $linux_dir/modules.order $linux_dir/modules.builtin $modules_dir/
  22. depmod -a -b alpine-modloop $linux_ver
  23. tar -zxf $firmware_tar --directory=alpine-modloop/lib/modules --warning=no-unknown-keyword --strip-components=1 --wildcards lib/firmware/ar* lib/firmware/rt*
  24. for tar in linux-firmware-ath9k_htc-20250509-r0.apk linux-firmware-brcm-20250509-r0.apk linux-firmware-cypress-20250509-r0.apk linux-firmware-rtlwifi-20250509-r0.apk
  25. do
  26. tar -zxf $tar --directory=alpine-modloop/lib/modules --warning=no-unknown-keyword --strip-components=1
  27. done
  28. mksquashfs alpine-modloop/lib modloop -b 1048576 -comp xz -Xdict-size 100%
  29. rm -rf alpine-modloop
  30. root_dir=alpine-root
  31. mkdir -p $root_dir/usr/bin
  32. cp /usr/bin/qemu-arm-static $root_dir/usr/bin/
  33. mkdir -p $root_dir/etc
  34. cp /etc/resolv.conf $root_dir/etc/
  35. mkdir -p $root_dir/etc/apk
  36. mkdir -p $root_dir/media/mmcblk0p1/cache
  37. ln -s /media/mmcblk0p1/cache $root_dir/etc/apk/cache
  38. cp -r alpine/etc $root_dir/
  39. cp -r alpine/apps $root_dir/media/mmcblk0p1/
  40. projects="common_tools led_blinker mcpha playground pulsed_nmr sdr_receiver sdr_receiver_hpsdr sdr_receiver_wide sdr_transceiver sdr_transceiver_ft8 sdr_transceiver_hpsdr sdr_transceiver_wide sdr_transceiver_wspr vna"
  41. projects_122_88="led_blinker_122_88 pulsed_nmr_122_88 sdr_receiver_122_88 sdr_receiver_hpsdr_122_88 sdr_receiver_wide_122_88 sdr_transceiver_122_88 sdr_transceiver_ft8_122_88 sdr_transceiver_hpsdr_122_88 sdr_transceiver_wspr_122_88 vna_122_88"
  42. for p in $projects $projects_122_88
  43. do
  44. mkdir -p $root_dir/media/mmcblk0p1/apps/$p
  45. cp -r projects/$p/server/* $root_dir/media/mmcblk0p1/apps/$p/
  46. cp -r projects/$p/app/* $root_dir/media/mmcblk0p1/apps/$p/
  47. cp tmp/$p.bit $root_dir/media/mmcblk0p1/apps/$p/
  48. done
  49. cp -r alpine-apk/sbin $root_dir/
  50. chroot $root_dir /sbin/apk.static --repository $alpine_url/main --update-cache --allow-untrusted --initdb add alpine-base
  51. echo $alpine_url/main > $root_dir/etc/apk/repositories
  52. echo $alpine_url/community >> $root_dir/etc/apk/repositories
  53. chroot $root_dir /bin/sh <<- EOF_CHROOT
  54. apk update
  55. apk add openssh u-boot-tools ucspi-tcp6 iw wpa_supplicant dhcpcd dnsmasq hostapd iptables avahi dbus dcron chrony gpsd libgfortran musl-dev libconfig-dev alsa-lib-dev alsa-utils curl wget less nano bc dos2unix
  56. rc-update add bootmisc boot
  57. rc-update add hostname boot
  58. rc-update add swclock boot
  59. rc-update add sysctl boot
  60. rc-update add syslog boot
  61. rc-update add seedrng boot
  62. rc-update add killprocs shutdown
  63. rc-update add mount-ro shutdown
  64. rc-update add savecache shutdown
  65. rc-update add devfs sysinit
  66. rc-update add dmesg sysinit
  67. rc-update add mdev sysinit
  68. rc-update add hwdrivers sysinit
  69. rc-update add modloop sysinit
  70. rc-update add avahi-daemon default
  71. rc-update add chronyd default
  72. rc-update add dhcpcd default
  73. rc-update add local default
  74. rc-update add dcron default
  75. rc-update add sshd default
  76. mkdir -p etc/runlevels/wifi
  77. rc-update -s add default wifi
  78. rc-update add iptables wifi
  79. rc-update add dnsmasq wifi
  80. rc-update add hostapd wifi
  81. sed -i 's/^SAVE_ON_STOP=.*/SAVE_ON_STOP="no"/;s/^IPFORWARD=.*/IPFORWARD="yes"/' etc/conf.d/iptables
  82. sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' etc/ssh/sshd_config
  83. echo root:$passwd | chpasswd
  84. hostname red-pitaya
  85. sed -i 's/^# LBU_MEDIA=.*/LBU_MEDIA=mmcblk0p1/' etc/lbu/lbu.conf
  86. cat <<- EOF_CAT > root/.profile
  87. alias rw='mount -o rw,remount /media/mmcblk0p1'
  88. alias ro='mount -o ro,remount /media/mmcblk0p1'
  89. EOF_CAT
  90. ln -s /media/mmcblk0p1/apps root/apps
  91. ln -s /media/mmcblk0p1/wifi root/wifi
  92. lbu add root
  93. lbu delete etc/resolv.conf
  94. lbu delete etc/cron.d/ft8
  95. lbu delete etc/cron.d/ft8_122_88
  96. lbu delete etc/cron.d/wspr
  97. lbu delete etc/cron.d/wspr_122_88
  98. lbu delete root/.ash_history
  99. lbu commit -d
  100. apk add make gcc gfortran linux-headers
  101. ft8d_dir=/media/mmcblk0p1/apps/ft8d
  102. ft8d_tar=/media/mmcblk0p1/apps/ft8d.tar.gz
  103. ft8d_url=https://github.com/pavel-demin/ft8d/archive/master.tar.gz
  104. curl -L \$ft8d_url -o \$ft8d_tar
  105. mkdir -p \$ft8d_dir
  106. tar -zxf \$ft8d_tar --strip-components=1 --directory=\$ft8d_dir
  107. rm \$ft8d_tar
  108. make -C \$ft8d_dir
  109. wsprd_dir=/media/mmcblk0p1/apps/wsprd
  110. wsprd_tar=/media/mmcblk0p1/apps/wsprd.tar.gz
  111. wsprd_url=https://github.com/pavel-demin/wsprd/archive/master.tar.gz
  112. curl -L \$wsprd_url -o \$wsprd_tar
  113. mkdir -p \$wsprd_dir
  114. tar -zxf \$wsprd_tar --strip-components=1 --directory=\$wsprd_dir
  115. rm \$wsprd_tar
  116. make -C \$wsprd_dir
  117. for p in server $projects $projects_122_88
  118. do
  119. make -C /media/mmcblk0p1/apps/\$p clean
  120. make -C /media/mmcblk0p1/apps/\$p
  121. done
  122. EOF_CHROOT
  123. cp -r $root_dir/media/mmcblk0p1/apps .
  124. cp -r $root_dir/media/mmcblk0p1/cache .
  125. cp $root_dir/media/mmcblk0p1/red-pitaya.apkovl.tar.gz .
  126. cp -r alpine/wifi .
  127. hostname -F /etc/hostname
  128. rm -rf $root_dir alpine-apk
  129. zip -r red-pitaya-alpine-3.22-armv7-`date +%Y%m%d`.zip apps boot.bin cache modloop red-pitaya.apkovl.tar.gz wifi
  130. rm -rf apps cache modloop red-pitaya.apkovl.tar.gz wifi