xref: /openwifi/user_space/update_sdcard.sh (revision 6fdc02fb326ac7beccc948dddf343004bd0a7105)
1
2#!/bin/bash
3
4# Author: Xianjun Jiao
5# SPDX-FileCopyrightText: 2019 UGent
6# SPDX-License-Identifier: AGPL-3.0-or-later
7
8if [ "$#" -ne 4 ]; then
9    echo "You have input $# arguments."
10    echo "You must enter exactly 4 arguments: \$OPENWIFI_HW_DIR \$XILINX_DIR \$BOARD_NAME \$SDCARD_DIR"
11    exit 1
12fi
13
14OPENWIFI_HW_DIR=$1
15XILINX_DIR=$2
16BOARD_NAME=$3
17SDCARD_DIR=$4
18
19OPENWIFI_DIR=$(pwd)/../
20
21echo OPENWIFI_DIR $OPENWIFI_DIR
22echo OPENWIFI_HW_DIR $OPENWIFI_HW_DIR
23
24if [ -f "$OPENWIFI_DIR/LICENSE" ]; then
25    echo "\$OPENWIFI_DIR is found!"
26else
27    echo "\$OPENWIFI_DIR is not correct. Please check!"
28    exit 1
29fi
30
31if [ -d "$XILINX_DIR/SDK" ]; then
32    echo "\$XILINX_DIR is found!"
33else
34    echo "\$XILINX_DIR is not correct. Please check!"
35    exit 1
36fi
37
38if [ "$BOARD_NAME" != "antsdr" ] && [ "$BOARD_NAME" != "zc706_fmcs2" ] && [ "$BOARD_NAME" != "zc702_fmcs2" ] && [ "$BOARD_NAME" != "zed_fmcs2" ] && [ "$BOARD_NAME" != "adrv9361z7035" ] && [ "$BOARD_NAME" != "adrv9364z7020" ] && [ "$BOARD_NAME" != "zcu102_fmcs2" ] && [ "$BOARD_NAME" != "zcu102_9371" ]; then
39    echo "\$BOARD_NAME is not correct. Please check!"
40    exit 1
41else
42    echo "\$BOARD_NAME is found!"
43fi
44
45if [ -d "$OPENWIFI_HW_DIR/boards/$BOARD_NAME" ]; then
46    echo "\$OPENWIFI_HW_DIR is found!"
47else
48    echo "\$OPENWIFI_HW_DIR is not correct. Please check!"
49    exit 1
50fi
51
52# detect SD card mounting status
53if [ -d "$SDCARD_DIR/BOOT/" ]; then
54    echo "$SDCARD_DIR/BOOT/"
55    sudo mkdir $SDCARD_DIR/BOOT/openwifi
56    sudo rm -rf $SDCARD_DIR/BOOT/README.txt
57else
58    echo "$SDCARD_DIR/BOOT/ does not exist!"
59    exit 1
60fi
61
62if [ -d "$SDCARD_DIR/rootfs/" ]; then
63    echo "$SDCARD_DIR/rootfs/"
64else
65    echo "$SDCARD_DIR/rootfs/ does not exist!"
66    exit 1
67fi
68
69if [ "$BOARD_NAME" == "zcu102_fmcs2" ] || [ "$BOARD_NAME" == "zcu102_9371" ]; then
70    dtb_filename="system.dtb"
71    dts_filename="system.dts"
72else
73    dtb_filename="devicetree.dtb"
74    dts_filename="devicetree.dts"
75fi
76echo $dtb_filename
77echo $dts_filename
78
79sudo true
80
81home_dir=$(pwd)
82
83set -x
84
85LINUX_KERNEL_SRC_DIR_NAME32=adi-linux
86LINUX_KERNEL_SRC_DIR_NAME64=adi-linux-64
87
88cd $OPENWIFI_DIR/user_space/
89./prepare_kernel.sh $XILINX_DIR 32 build
90sudo true
91./prepare_kernel.sh $XILINX_DIR 64 build
92sudo true
93
94BOARD_NAME_ALL="antsdr zc706_fmcs2 zed_fmcs2 zc702_fmcs2 adrv9361z7035 adrv9364z7020 zcu102_fmcs2 zcu102_9371"
95# BOARD_NAME_ALL="zcu102_fmcs2"
96# BOARD_NAME_ALL="adrv9361z7035"
97for BOARD_NAME_TMP in $BOARD_NAME_ALL
98do
99    if [ "$BOARD_NAME_TMP" == "zcu102_fmcs2" ] || [ "$BOARD_NAME_TMP" == "zcu102_9371" ]; then
100        dtb_filename_tmp="system.dtb"
101        dts_filename_tmp="system.dts"
102        ./boot_bin_gen_zynqmp.sh $OPENWIFI_HW_DIR $XILINX_DIR $BOARD_NAME_TMP
103    else
104        dtb_filename_tmp="devicetree.dtb"
105        dts_filename_tmp="devicetree.dts"
106        ./boot_bin_gen.sh $OPENWIFI_HW_DIR $XILINX_DIR $BOARD_NAME_TMP
107    fi
108    echo $dtb_filename_tmp
109    echo $dts_filename_tmp
110
111    dtc -I dts -O dtb -o $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/$dtb_filename_tmp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/$dts_filename_tmp
112    mkdir $SDCARD_DIR/BOOT/openwifi/$BOARD_NAME_TMP
113    sudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/$dtb_filename_tmp $SDCARD_DIR/BOOT/openwifi/$BOARD_NAME_TMP
114    sudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME_TMP/output_boot_bin/BOOT.BIN $SDCARD_DIR/BOOT/openwifi/$BOARD_NAME_TMP
115    sudo true
116done
117
118sudo mkdir $SDCARD_DIR/BOOT/openwifi/zynq-common
119sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/arch/arm/boot/uImage  $SDCARD_DIR/BOOT/openwifi/zynq-common/
120sudo mkdir $SDCARD_DIR/BOOT/openwifi/zynqmp-common
121sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/arch/arm64/boot/Image $SDCARD_DIR/BOOT/openwifi/zynqmp-common/
122
123sudo mkdir $SDCARD_DIR/rootfs/root/openwifi
124
125# Copy uImage BOOT.BIN and devicetree to SD card BOOT partition and backup at rootfs/root/openwifi
126sudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME/$dtb_filename $SDCARD_DIR/BOOT/
127sudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME/$dtb_filename $SDCARD_DIR/rootfs/root/openwifi/ -rf
128sudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME/output_boot_bin/BOOT.BIN $SDCARD_DIR/BOOT/
129sudo cp $OPENWIFI_DIR/kernel_boot/boards/$BOARD_NAME/output_boot_bin/BOOT.BIN $SDCARD_DIR/rootfs/root/openwifi/ -rf
130if [ "$BOARD_NAME" == "zcu102_fmcs2" ] || [ "$BOARD_NAME" == "zcu102_9371" ]; then
131    sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/arch/arm64/boot/Image $SDCARD_DIR/BOOT/
132    sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64/arch/arm64/boot/Image $SDCARD_DIR/rootfs/root/openwifi/ -rf
133else
134    sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/arch/arm/boot/uImage $SDCARD_DIR/BOOT/
135    sudo cp $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32/arch/arm/boot/uImage $SDCARD_DIR/rootfs/root/openwifi/ -rf
136fi
137
138sudo cp $OPENWIFI_DIR/user_space/* $SDCARD_DIR/rootfs/root/openwifi/ -rf
139sudo wget -P $SDCARD_DIR/rootfs/root/openwifi/webserver/ https://users.ugent.be/~xjiao/openwifi-low-aac.mp4
140
141# build openwifi driver
142saved_dir=$(pwd)
143cd $OPENWIFI_DIR/driver
144./make_all.sh $XILINX_DIR 32
145cd $OPENWIFI_DIR/driver/side_ch
146./make_driver.sh $XILINX_DIR 32
147cd $saved_dir
148
149# Copy files to SD card rootfs partition
150sudo mkdir $SDCARD_DIR/rootfs/root/openwifi/drv32
151sudo find $OPENWIFI_DIR/driver -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/root/openwifi/drv32 \;
152
153# build openwifi driver
154saved_dir=$(pwd)
155cd $OPENWIFI_DIR/driver
156./make_all.sh $XILINX_DIR 64
157cd $OPENWIFI_DIR/driver/side_ch
158./make_driver.sh $XILINX_DIR 64
159cd $saved_dir
160
161# Copy files to SD card rootfs partition
162sudo mkdir $SDCARD_DIR/rootfs/root/openwifi/drv64
163sudo find $OPENWIFI_DIR/driver -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/root/openwifi/drv64 \;
164
165sudo mkdir $SDCARD_DIR/rootfs/lib/modules
166
167sudo mkdir $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME32
168sudo find $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME32 -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME32/ \;
169sudo mv $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME32/xilinx_dma.ko $SDCARD_DIR/rootfs/root/openwifi/drv32
170sudo mv $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME32/ad9361_drv.ko $SDCARD_DIR/rootfs/root/openwifi/drv32
171sudo rm $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME32/{axidmatest.ko,adi_axi_hdmi.ko} -f
172
173sudo mkdir $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME64
174sudo find $OPENWIFI_DIR/$LINUX_KERNEL_SRC_DIR_NAME64 -name \*.ko -exec cp {} $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME64/ \;
175sudo mv $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME64/xilinx_dma.ko $SDCARD_DIR/rootfs/root/openwifi/drv64
176sudo mv $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME64/ad9361_drv.ko $SDCARD_DIR/rootfs/root/openwifi/drv64
177sudo rm $SDCARD_DIR/rootfs/lib/modules/$LINUX_KERNEL_SRC_DIR_NAME64/{axidmatest.ko,adi_axi_hdmi.ko} -f
178
179sudo rm $SDCARD_DIR/rootfs/etc/udev/rules.d/70-persistent-net.rules
180sudo cp $OPENWIFI_DIR/kernel_boot/70-persistent-net.rules $SDCARD_DIR/rootfs/etc/udev/rules.d/
181sudo mv $SDCARD_DIR/rootfs/lib/udev/rules.d/75-persistent-net-generator.rules $SDCARD_DIR/rootfs/lib/udev/rules.d/75-persistent-net-generator.rules.bak
182
183# Some setup
184sudo echo -e "\nauto lo eth0\niface lo inet loopback\niface eth0 inet static\naddress 192.168.10.122\nnetmask 255.255.255.0\n" | sudo tee -a $SDCARD_DIR/rootfs/etc/network/interfaces
185sudo echo -e "\nnameserver 8.8.8.8\nnameserver 4.4.4.4\n" | sudo tee -a $SDCARD_DIR/rootfs/etc/resolv.conf
186sudo echo -e "\nUseDNS no\n" | sudo tee -a $SDCARD_DIR/rootfs/etc/ssh/sshd_config
187sudo echo -e "\nnet.ipv4.ip_forward=1\n" | sudo tee -a $SDCARD_DIR/rootfs/etc/sysctl.conf
188sudo chmod -x $SDCARD_DIR/rootfs/etc/update-motd.d/90-updates-available
189sudo chmod -x $SDCARD_DIR/rootfs/etc/update-motd.d/91-release-upgrade
190
191cd $SDCARD_DIR/BOOT
192sync
193cd $SDCARD_DIR/rootfs
194sync
195
196cd $home_dir
197
198umount $SDCARD_DIR/BOOT/
199umount $SDCARD_DIR/rootfs/
200