Replace ppa:longsleep/ubuntu-pine64-flavour-makers with ppa:ayufan/pine64-ppa because it provides better support of the same deb packages for both Ubuntu 16.04 xenial and Ubuntu 18.04 bionic. Signed-off-by: Leon Anavi <leon@anavi.org> |
||
|---|---|---|
| .. | ||
| configuration-files | ||
| platform-scripts | ||
| prebuilt | ||
| systemd-services | ||
| build_image.sh | ||
| build_uboot_a64.sh | ||
| build_uboot.sh | ||
| Docker.md | ||
| flash_boot0_only.sh | ||
| flash_u-boot_only.sh | ||
| install_kernel_headers.sh | ||
| install_kernel_modules.sh | ||
| install_kernel.sh | ||
| make_initrd.sh | ||
| make_kernel_tarball.sh | ||
| make_rootfs.sh | ||
| make_simpleimage.sh | ||
| pack_uboot.sh | ||
| README.md | ||
Build Instructions
Linux
1. Getting source code and helper scripts
cd ~/
git clone https://github.com/OLIMEX/DIY-LAPTOP
cd DIY-LAPTOP/SOFTWARE/A64-TERES/
2. Setup toolchain
sudo apt install gcc-aarch64-linux-gnu
sudo apt install gcc-4.7-arm-linux-gnueabihf
sudo apt install kpartx bsdtar mtools dos2unix device-tree-compiler
3. Cross-compile sources
Linux
cd linux-a64
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- olimex_teres1_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- LOCALVERSION= clean
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j`nproc` LOCALVERSION= Image
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j`nproc` LOCALVERSION= modules
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j`nproc` LOCALVERSION= modules_install INSTALL_MOD_PATH=out INSTALL_MOD_STRIP=1
Allwinner Pack Tools
cd ../
make -C sunxi-pack-tools
U-Boot
cd scripts/
./build_uboot.sh #A64-Teres
or
./build_uboot_a64.sh #A64-OLinuXino
4. Helper Scripts
Ramdisk
Either make one with the steps below or download one from some other place.
Make sure the initrd is for aarch64.
Get Busybox tree
cd ../
git clone --depth 1 --branch 1_24_stable --single-branch git://git.busybox.net/busybox busybox
Configure and build Busybox
Build a static busybox for aarch64. Start by copying the blobs/a64_config_busybox
file to .config of your Busybox folder.
cp blobs/a64_config_busybox busybox/.config
cd busybox
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j`nproc` oldconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j`nproc`
Make initrd.gz
Use the make_initrd.sh script to create a simple initrd based on the busybox binary previously compiled.
cd ../scripts
./make_initrd.sh
Create bootable image
Create kernel tarball :
./make_kernel_tarball.sh . ../linux-a64 #This will produce file named linux-a64-xx.yy.zz.tar.xz
Create simple image structure:
sudo ./make_simpleimage.sh teres.img 1000 ./linux-a64-3.10.104-1.tar.xz
sudo xz teres.img
Build a bootable image:
sudo ./build_image.sh teres.img.xz ./linux-a64-3.10.104-1.tar.xz xenial
If successfully completed, this command will create file named xenial-teres-bspkernel-<date>.img.
Use dd to write this image to an SD Card:
dd if=xenial-teres-bspkernel-<date>.img of=/dev/sdX bs=1M status=progress
Use these credentials to log in after first boot:
- User:
olimex - Password:
olimex
Connection to the internet can be enabled via command-line by running:
nmtui
Feel free to install everything you want, e.g., a graphical desktop environment:
./platform-scripts/install_desktop.sh mate # installs mate desktop