Skip to content
Snippets Groups Projects
Commit ee04458c authored by Bob Mottram's avatar Bob Mottram
Browse files

Move flash functions to the end of boot setup

parent d318f842
No related branches found
No related tags found
No related merge requests found
......@@ -38,87 +38,6 @@ enable_serial_console() {
echo "T0:12345:respawn:/sbin/getty -L $device 115200 vt100" >> /etc/inittab
}
arm_setup_boot() {
dtb="$1"
arm_root_device='mmcblk0p2'
if [ "$EXTERNAL_DRIVE" ]; then
arm_root_device="$EXTERNAL_DRIVE"
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}.dtb | head -1 | cut -d/ -f4)
version=$(echo "$kernelVersion" | sed 's/linux-image-\(.*\)/\1/')
initRd=initrd.img-$version
vmlinuz=vmlinuz-$version
arm_loadaddr='0x46000000'
arm_initrd_addr='0x48000000'
arm_fdtaddr='0x47000000'
case "$dtb" in
"am"*) arm_loadaddr='0x82000000'
arm_initrd_addr='0x88080000'
arm_fdtaddr='0x88000000'
;;
esac
cat >> /boot/boot.cmd <<EOF
setenv mmcdev 0
setenv mmcpart 1
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
setenv loadaddr $arm_loadaddr
setenv initrd_addr $arm_initrd_addr
setenv fdtaddr $arm_fdtaddr
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
# Create boot.scr
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
case "$dtb" in
"sun"*)
{ echo "rtc_sunxi";
echo "vfat"; } >> /etc/initramfs-tools/modules
;;
"r"*) echo "vfat" >> /etc/initramfs-tools/modules
;;
esac
}
beaglebone_flash() {
# allow flash-kernel to work without valid /proc contents
# ** this doesn't *really* work, since there are too many checks
......@@ -207,21 +126,110 @@ setup_flash_kernel() {
$INSTALL_PACKAGES flash-kernel
}
arm_setup_boot() {
dtb="$1"
arm_root_device='mmcblk0p2'
if [ "$EXTERNAL_DRIVE" ]; then
arm_root_device="$EXTERNAL_DRIVE"
fi
arm_flash_name=
if [ "$2" ]; then
arm_flash_name="$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}.dtb | head -1 | cut -d/ -f4)
version=$(echo "$kernelVersion" | sed 's/linux-image-\(.*\)/\1/')
initRd=initrd.img-$version
vmlinuz=vmlinuz-$version
arm_loadaddr='0x46000000'
arm_initrd_addr='0x48000000'
arm_fdtaddr='0x47000000'
case "$dtb" in
"am"*) arm_loadaddr='0x82000000'
arm_initrd_addr='0x88080000'
arm_fdtaddr='0x88000000'
;;
esac
cat >> /boot/boot.cmd <<EOF
setenv mmcdev 0
setenv mmcpart 1
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
setenv loadaddr $arm_loadaddr
setenv initrd_addr $arm_initrd_addr
setenv fdtaddr $arm_fdtaddr
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
# Create boot.scr
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
case "$dtb" in
"sun"*)
{ echo "rtc_sunxi";
echo "vfat"; } >> /etc/initramfs-tools/modules
;;
"r"*) echo "vfat" >> /etc/initramfs-tools/modules
;;
esac
if [ "$arm_flash_name" ]; then
case "$arm_flash_name" in
"TI "*)
beaglebone_flash "$arm_flash_name"
beaglebone_repack_kernel "${dtb}"
;;
esac
fi
}
case "$MACHINE" in
beagleboneblack)
arm_setup_boot am335x-boneblack
beaglebone_flash "TI AM335x BeagleBone Black"
beaglebone_repack_kernel am335x-boneblack
arm_setup_boot am335x-boneblack "TI AM335x BeagleBone Black"
;;
beaglebonegreen)
arm_setup_boot am335x-bonegreen
beaglebone_flash "TI AM335x BeagleBone Green"
beaglebone_repack_kernel am335x-bonegreen
arm_setup_boot am335x-bonegreen "TI AM335x BeagleBone Green"
;;
beaglex15)
arm_setup_boot am57xx-beagle-x15
beaglebone_flash "TI AM5728 BeagleBoard-X15"
beaglebone_repack_kernel am57xx-beagle-x15
arm_setup_boot am57xx-beagle-x15 "TI AM5728 BeagleBoard-X15"
;;
cubietruck)
arm_setup_boot sun7i-a20-cubietruck
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment