diff --git a/src/freedombone-image-hardware-setup b/src/freedombone-image-hardware-setup index 04e784ee60eee962c2c576545e0506c5b3a054ca..868ba97a1e49237376a0577df42c26ea5bf14b05 100755 --- a/src/freedombone-image-hardware-setup +++ b/src/freedombone-image-hardware-setup @@ -38,60 +38,86 @@ enable_serial_console() { echo "T0:12345:respawn:/sbin/getty -L $device 115200 vt100" >> /etc/inittab } -beaglebone_setup_boot() { - beaglebone_variant="$1" - beaglebone_root_device='mmcblk0p2' +arm_setup_boot() { + dtb="$1" + arm_root_device='mmcblk0p2' if [ "$2" ]; then - beaglebone_root_device="$2" + arm_root_device="$2" fi - # Setup uEnv.txt + # Setup boot.cmd if grep -q btrfs /etc/fstab ; then fstype=btrfs else fstype=ext4 fi + # shellcheck disable=SC2012,SC2086 - kernelVersion=$(ls /usr/lib/*/${beaglebone_variant}.dtb | head -1 | cut -d/ -f4) + kernelVersion=$(ls /usr/lib/*/${dtb}.dtb | head -1 | cut -d/ -f4) version=$(echo "$kernelVersion" | sed 's/linux-image-\(.*\)/\1/') initRd=initrd.img-$version vmlinuz=vmlinuz-$version - bbb_loadaddr='0x82000000' - bbb_initrd_addr='0x88080000' - bbb_fdtaddr='0x88000000' + arm_loadaddr='0x46000000' + arm_initrd_addr='0x48000000' + arm_fdtaddr='0x47000000' - # uEnv.txt for Beaglebone - # based on https://github.com/beagleboard/image-builder/blob/master/target/boot/beagleboard.org.txt - cat >> /boot/uEnv.txt <<EOF -mmcroot /dev/${beaglebone_root_device} ro -mmcrootfstype=$fstype rootwait fixrtc -mmcrootflags=subvol=@ + case "$dtb" in + "am"*) arm_loadaddr='0x82000000' + arm_initrd_addr='0x88080000' + arm_fdtaddr='0x88000000' + ;; + esac -console=ttyO0,115200n8 + # Create boot.cmd + cat >> /boot/boot.cmd <<EOF +setenv mmcdev 0 +setenv mmcpart 1 -kernel_file=$vmlinuz -initrd_file=$initRd +setenv mmcroot /dev/${arm_root_device} ro +setenv mmcrootfstype $fstype rootwait fixrtc +setenv mmcrootflags subvol=@ + +setenv console ttyS0,115200n8 + +setenv kernel_file $vmlinuz +setenv initrd_file $initRd +setenv fdtfile ${dtb}.dtb -loadaddr=$bbb_loadaddr -initrd_addr=$bbb_initrd_addr -fdtaddr=$bbb_fdtaddr +setenv loadaddr $arm_loadaddr +setenv initrd_addr $arm_initrd_addr +setenv fdtaddr $arm_fdtaddr -initrd_high=0xffffffff -fdt_high=0xffffffff +setenv initrd_high 0xffffffff +setenv fdt_high 0xffffffff -loadkernel=load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file} -loadinitrd=load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}; setenv initrd_size \${filesize} -loadfdt=load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile} +setenv loadkernel load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file} +setenv loadinitrd load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}\\; setenv initrd_size \\\${filesize} +setenv loadfdt load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile} -loadfiles=run loadkernel; run loadinitrd; run loadfdt -mmcargs=setenv bootargs init=/lib/systemd/systemd console=tty0 console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags} ifnames=0 slub_debug=FZP slab_nomerge page_poison=1 +setenv loadfiles run loadkernel\\; run loadinitrd\\; run loadfdt +setenv mmcargs setenv bootargs init=/lib/systemd/systemd console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags} ifnames=0 slub_debug=FZP slab_nomerge page_poison=1 -uenvcmd=run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr} +run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr} EOF + # Create boot.scr + mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr + + # Copy all DTBs mkdir -p /boot/dtbs - cp /usr/lib/linux-image-*-armmp/* /boot/dtbs + # shellcheck disable=SC2086 + cp /usr/lib/$kernelVersion/* /boot/dtbs + + # extra boot modules + case "$dtb" in + "sun"*) + { echo "rtc_sunxi"; + echo "vfat"; } >> /etc/initramfs-tools/modules + ;; + "r"*) echo "vfat"; >> /etc/initramfs-tools/modules + ;; + esac } beaglebone_flash() { @@ -164,71 +190,6 @@ beaglebone_repack_kernel() { -d "$initRd" uInitrd ) } -a20_setup_boot() { - dtb="$1" - a20_root_device='mmcblk0p2' - if [ "$2" ]; then - a20_root_device="$2" - fi - - # Setup boot.cmd - if grep -q btrfs /etc/fstab ; then - fstype=btrfs - else - fstype=ext4 - fi - # shellcheck disable=SC2012,SC2086 - kernelVersion=$(ls /usr/lib/*/$dtb | head -1 | cut -d/ -f4) - version=$(echo "$kernelVersion" | sed 's/linux-image-\(.*\)/\1/') - initRd=initrd.img-$version - vmlinuz=vmlinuz-$version - - # Create boot.cmd - cat >> /boot/boot.cmd <<EOF -setenv mmcdev 0 -setenv mmcpart 1 - -setenv mmcroot /dev/${a20_root_device} ro -setenv mmcrootfstype $fstype rootwait fixrtc -setenv mmcrootflags subvol=@ - -setenv console ttyS0,115200n8 - -setenv kernel_file $vmlinuz -setenv initrd_file $initRd -setenv fdtfile $dtb - -setenv loadaddr 0x46000000 -setenv initrd_addr 0x48000000 -setenv fdtaddr 0x47000000 - -setenv initrd_high 0xffffffff -setenv fdt_high 0xffffffff - -setenv loadkernel load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file} -setenv loadinitrd load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}\\; setenv initrd_size \\\${filesize} -setenv loadfdt load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile} - -setenv loadfiles run loadkernel\\; run loadinitrd\\; run loadfdt -setenv mmcargs setenv bootargs init=/lib/systemd/systemd console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags} ifnames=0 slub_debug=FZP slab_nomerge page_poison=1 - -run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr} -EOF - - # boot.scr for Allwinner A20 based device - mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr - - # Copy all DTBs - mkdir -p /boot/dtbs - # shellcheck disable=SC2086 - cp /usr/lib/$kernelVersion/* /boot/dtbs - - # extra boot modules - { echo "rtc_sunxi"; - echo "vfat"; } >> /etc/initramfs-tools/modules -} - - setup_flash_kernel() { if [ ! -d /etc/flash-kernel ] ; then mkdir /etc/flash-kernel @@ -247,118 +208,55 @@ setup_flash_kernel() { $INSTALL_PACKAGES flash-kernel } -rockchip_setup_boot() { - dtb="$1" - rockchip_root_device='mmcblk0p2' - if [ "$2" ]; then - rockchip_root_device="$2" - fi - - # Setup boot.cmd - if grep -q btrfs /etc/fstab ; then - fstype=btrfs - else - fstype=ext4 - fi - # shellcheck disable=SC2012,SC2086 - kernelVersion=$(ls /usr/lib/*/$dtb | head -1 | cut -d/ -f4) - version=$(echo "$kernelVersion" | sed 's/linux-image-\(.*\)/\1/') - initRd=initrd.img-$version - vmlinuz=vmlinuz-$version - - # Create boot.cmd - cat >> /boot/boot.cmd <<EOF -setenv mmcdev 0 -setenv mmcpart 1 - -setenv mmcroot /dev/${rockchip_root_device} ro -setenv mmcrootfstype $fstype rootwait fixrtc -setenv mmcrootflags subvol=@ - -setenv console ttyS0,115200n8 - -setenv kernel_file $vmlinuz -setenv initrd_file $initRd -setenv fdtfile $dtb - -setenv loadaddr 0x46000000 -setenv initrd_addr 0x48000000 -setenv fdtaddr 0x47000000 - -setenv initrd_high 0xffffffff -setenv fdt_high 0xffffffff - -setenv loadkernel load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file} -setenv loadinitrd load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}\\; setenv initrd_size \\\${filesize} -setenv loadfdt load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile} - -setenv loadfiles run loadkernel\\; run loadinitrd\\; run loadfdt -setenv mmcargs setenv bootargs init=/lib/systemd/systemd console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags} ifnames=0 slub_debug=FZP slab_nomerge page_poison=1 - -run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr} -EOF - - # boot.scr for rockchip based device - mkimage -C none -A arm64 -T script -d /boot/boot.cmd /boot/boot.scr - - # Copy all DTBs - mkdir -p /boot/dtbs - # shellcheck disable=SC2086 - cp /usr/lib/$kernelVersion/* /boot/dtbs - - # extra boot modules - { echo "vfat"; } >> /etc/initramfs-tools/modules -} - case "$MACHINE" in beagleboneblack) - beaglebone_setup_boot am335x-boneblack "$EXTERNAL_DRIVE" + arm_setup_boot am335x-boneblack "$EXTERNAL_DRIVE" beaglebone_flash "TI AM335x BeagleBone Black" beaglebone_repack_kernel am335x-boneblack enable_serial_console ttyO0 ;; beaglebonegreen) - beaglebone_setup_boot am335x-bonegreen "$EXTERNAL_DRIVE" + arm_setup_boot am335x-bonegreen "$EXTERNAL_DRIVE" beaglebone_flash "TI AM335x BeagleBone Green" beaglebone_repack_kernel am335x-bonegreen enable_serial_console ttyO0 ;; beaglex15) - beaglebone_setup_boot am57xx-beagle-x15 "$EXTERNAL_DRIVE" + arm_setup_boot am57xx-beagle-x15 "$EXTERNAL_DRIVE" beaglebone_flash "TI AM5728 BeagleBoard-X15" beaglebone_repack_kernel am57xx-beagle-x15 enable_serial_console ttyO0 ;; cubietruck) - a20_setup_boot sun7i-a20-cubietruck.dtb "$EXTERNAL_DRIVE" + arm_setup_boot sun7i-a20-cubietruck "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; a20-olinuxino-lime) - a20_setup_boot sun7i-a20-olinuxino-lime.dtb "$EXTERNAL_DRIVE" + arm_setup_boot sun7i-a20-olinuxino-lime "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; a20-olinuxino-lime2) - a20_setup_boot sun7i-a20-olinuxino-lime2.dtb "$EXTERNAL_DRIVE" + arm_setup_boot sun7i-a20-olinuxino-lime2 "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; a20-olinuxino-micro) - a20_setup_boot sun7i-a20-olinuxino-micro.dtb "$EXTERNAL_DRIVE" + arm_setup_boot sun7i-a20-olinuxino-micro "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; banana-pro) - a20_setup_boot sun7i-a20-bananapro.dtb "$EXTERNAL_DRIVE" + arm_setup_boot sun7i-a20-bananapro "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; cubieboard2) - a20_setup_boot sun7i-a20-cubieboard2.dtb "$EXTERNAL_DRIVE" + arm_setup_boot sun7i-a20-cubieboard2 "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; pcduino3) - a20_setup_boot sun7i-a20-pcduino3.dtb "$EXTERNAL_DRIVE" + arm_setup_boot sun7i-a20-pcduino3 "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; rock64) - rockchip_setup_boot "rockchip/rk3328-rock64.dtb" "$EXTERNAL_DRIVE" + arm_setup_boot "rockchip/rk3328-rock64" "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; esac