|  | @@ -31,7 +31,14 @@ PROJECT_NAME='freedombone'
 | 
	
		
			
			| 31 | 31 |  export TEXTDOMAIN=${PROJECT_NAME}-image-hardware-setup
 | 
	
		
			
			| 32 | 32 |  export TEXTDOMAINDIR="/usr/share/locale"
 | 
	
		
			
			| 33 | 33 |  
 | 
	
		
			
			| 34 |  | -setup_flash_kernel() {
 | 
	
		
			
			|  | 34 | +function enable_serial_console {
 | 
	
		
			
			|  | 35 | +    # By default, spawn a console on the serial port
 | 
	
		
			
			|  | 36 | +    device="$1"
 | 
	
		
			
			|  | 37 | +    echo $"Adding a getty on the serial port"
 | 
	
		
			
			|  | 38 | +    echo "T0:12345:respawn:/sbin/getty -L $device 115200 vt100" >> /etc/inittab
 | 
	
		
			
			|  | 39 | +}
 | 
	
		
			
			|  | 40 | +
 | 
	
		
			
			|  | 41 | +function setup_flash_kernel {
 | 
	
		
			
			| 35 | 42 |      if [ ! -d /etc/flash-kernel ] ; then
 | 
	
		
			
			| 36 | 43 |         mkdir /etc/flash-kernel
 | 
	
		
			
			| 37 | 44 |      fi
 | 
	
	
		
			
			|  | @@ -49,29 +56,164 @@ setup_flash_kernel() {
 | 
	
		
			
			| 49 | 56 |      apt-get -yq install flash-kernel
 | 
	
		
			
			| 50 | 57 |  }
 | 
	
		
			
			| 51 | 58 |  
 | 
	
		
			
			|  | 59 | +function a20_env {
 | 
	
		
			
			|  | 60 | +    dtb="$1"
 | 
	
		
			
			|  | 61 | +
 | 
	
		
			
			|  | 62 | +    # Setup boot.cmd
 | 
	
		
			
			|  | 63 | +    if grep -q btrfs /etc/fstab ; then
 | 
	
		
			
			|  | 64 | +        fstype=btrfs
 | 
	
		
			
			|  | 65 | +    else
 | 
	
		
			
			|  | 66 | +        fstype=ext4
 | 
	
		
			
			|  | 67 | +    if [ -n "$command_line" ] ; then
 | 
	
		
			
			|  | 68 | +        echo flash-kernel flash-kernel/linux_cmdline string "$command_line" | debconf-set-selections
 | 
	
		
			
			|  | 69 | +    fi
 | 
	
		
			
			|  | 70 | +    kernelVersion=$(ls /usr/lib/*/$dtb | head -1 | cut -d/ -f4)
 | 
	
		
			
			|  | 71 | +    version=$(echo $kernelVersion | sed 's/linux-image-\(.*\)/\1/')
 | 
	
		
			
			|  | 72 | +    initRd=initrd.img-$version
 | 
	
		
			
			|  | 73 | +    vmlinuz=vmlinuz-$version
 | 
	
		
			
			|  | 74 | +
 | 
	
		
			
			|  | 75 | +    # Create boot.cmd
 | 
	
		
			
			|  | 76 | +    cat >> /boot/boot.cmd <<EOF
 | 
	
		
			
			|  | 77 | +setenv mmcdev 0
 | 
	
		
			
			|  | 78 | +setenv mmcpart 1
 | 
	
		
			
			|  | 79 | +
 | 
	
		
			
			|  | 80 | +setenv mmcroot /dev/mmcblk0p2 ro
 | 
	
		
			
			|  | 81 | +setenv mmcrootfstype $fstype rootwait fixrtc
 | 
	
		
			
			|  | 82 | +setenv mmcrootflags subvol=@
 | 
	
		
			
			|  | 83 | +
 | 
	
		
			
			|  | 84 | +setenv console ttyS0,115200n8
 | 
	
		
			
			|  | 85 | +
 | 
	
		
			
			|  | 86 | +setenv kernel_file $vmlinuz
 | 
	
		
			
			|  | 87 | +setenv initrd_file $initRd
 | 
	
		
			
			|  | 88 | +setenv fdtfile $dtb
 | 
	
		
			
			|  | 89 | +
 | 
	
		
			
			|  | 90 | +setenv loadaddr 0x46000000
 | 
	
		
			
			|  | 91 | +setenv initrd_addr 0x48000000
 | 
	
		
			
			|  | 92 | +setenv fdtaddr 0x47000000
 | 
	
		
			
			|  | 93 | +
 | 
	
		
			
			|  | 94 | +setenv initrd_high 0xffffffff
 | 
	
		
			
			|  | 95 | +setenv fdt_high 0xffffffff
 | 
	
		
			
			|  | 96 | +
 | 
	
		
			
			|  | 97 | +setenv loadkernel load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
 | 
	
		
			
			|  | 98 | +setenv loadinitrd load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}\\; setenv initrd_size \\\${filesize}
 | 
	
		
			
			|  | 99 | +setenv loadfdt load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile}
 | 
	
		
			
			|  | 100 | +
 | 
	
		
			
			|  | 101 | +setenv loadfiles run loadkernel\\; run loadinitrd\\; run loadfdt
 | 
	
		
			
			|  | 102 | +setenv mmcargs setenv bootargs console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags}
 | 
	
		
			
			|  | 103 | +
 | 
	
		
			
			|  | 104 | +run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr}
 | 
	
		
			
			|  | 105 | +EOF
 | 
	
		
			
			|  | 106 | +
 | 
	
		
			
			|  | 107 | +    # boot.scr for Allwinner A20 based device
 | 
	
		
			
			|  | 108 | +    mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
 | 
	
		
			
			|  | 109 | +
 | 
	
		
			
			|  | 110 | +    # Copy all DTBs
 | 
	
		
			
			|  | 111 | +    mkdir -p /boot/dtbs
 | 
	
		
			
			|  | 112 | +    cp /usr/lib/$kernelVersion/* /boot/dtbs
 | 
	
		
			
			|  | 113 | +
 | 
	
		
			
			|  | 114 | +    # extra boot modules
 | 
	
		
			
			|  | 115 | +    echo "rtc_sunxi" >> /etc/initramfs-tools/modules
 | 
	
		
			
			|  | 116 | +}
 | 
	
		
			
			|  | 117 | +
 | 
	
		
			
			|  | 118 | +function beaglebone_env {
 | 
	
		
			
			|  | 119 | +    bbb_version=$1
 | 
	
		
			
			|  | 120 | +
 | 
	
		
			
			|  | 121 | +    # Setup uEnv.txt
 | 
	
		
			
			|  | 122 | +    if grep -q btrfs /etc/fstab ; then
 | 
	
		
			
			|  | 123 | +        fstype=btrfs
 | 
	
		
			
			|  | 124 | +    else
 | 
	
		
			
			|  | 125 | +        fstype=ext4
 | 
	
		
			
			|  | 126 | +    fi
 | 
	
		
			
			|  | 127 | +    if [ ! $bbb_version ]; then
 | 
	
		
			
			|  | 128 | +        kernelVersion=$(ls /usr/lib/*/am335x-boneblack.dtb | head -1 | cut -d/ -f4)
 | 
	
		
			
			|  | 129 | +    else
 | 
	
		
			
			|  | 130 | +        kernelVersion=$(ls /usr/lib/*/am335x-boneblack-${1}.dtb | head -1 | cut -d/ -f4)
 | 
	
		
			
			|  | 131 | +    fi
 | 
	
		
			
			|  | 132 | +    version=$(echo $kernelVersion | sed 's/linux-image-\(.*\)/\1/')
 | 
	
		
			
			|  | 133 | +    initRd=initrd.img-$version
 | 
	
		
			
			|  | 134 | +    vmlinuz=vmlinuz-$version
 | 
	
		
			
			|  | 135 | +
 | 
	
		
			
			|  | 136 | +    #bbb_loadaddr='0x80200000'
 | 
	
		
			
			|  | 137 | +    #bbb_initrd_addr='0x81000000'
 | 
	
		
			
			|  | 138 | +    #bbb_fdtaddr='0x80F80000'
 | 
	
		
			
			|  | 139 | +    #if [[ "$bbb_version" == "wireless" ]]; then
 | 
	
		
			
			|  | 140 | +        bbb_loadaddr='0x82000000'
 | 
	
		
			
			|  | 141 | +        bbb_initrd_addr='0x88080000'
 | 
	
		
			
			|  | 142 | +        bbb_fdtaddr='0x88000000'
 | 
	
		
			
			|  | 143 | +    #fi
 | 
	
		
			
			|  | 144 | +
 | 
	
		
			
			|  | 145 | +    # uEnv.txt for Beaglebone
 | 
	
		
			
			|  | 146 | +    # based on https://github.com/beagleboard/image-builder/blob/master/target/boot/beagleboard.org.txt
 | 
	
		
			
			|  | 147 | +    cat >> /boot/uEnv.txt <<EOF
 | 
	
		
			
			|  | 148 | +mmcroot=/dev/mmcblk0p2 ro
 | 
	
		
			
			|  | 149 | +mmcrootfstype=$fstype rootwait fixrtc
 | 
	
		
			
			|  | 150 | +mmcrootflags=subvol=@
 | 
	
		
			
			|  | 151 | +
 | 
	
		
			
			|  | 152 | +console=ttyO0,115200n8
 | 
	
		
			
			|  | 153 | +
 | 
	
		
			
			|  | 154 | +kernel_file=$vmlinuz
 | 
	
		
			
			|  | 155 | +initrd_file=$initRd
 | 
	
		
			
			|  | 156 | +
 | 
	
		
			
			|  | 157 | +loadaddr=$bbb_loadaddr
 | 
	
		
			
			|  | 158 | +initrd_addr=$bbb_initrd_addr
 | 
	
		
			
			|  | 159 | +fdtaddr=$bbb_fdtaddr
 | 
	
		
			
			|  | 160 | +
 | 
	
		
			
			|  | 161 | +initrd_high=0xffffffff
 | 
	
		
			
			|  | 162 | +fdt_high=0xffffffff
 | 
	
		
			
			|  | 163 | +
 | 
	
		
			
			|  | 164 | +loadkernel=load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
 | 
	
		
			
			|  | 165 | +loadinitrd=load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}; setenv intrd_size \${filesize}
 | 
	
		
			
			|  | 166 | +loadfdt=load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile}
 | 
	
		
			
			|  | 167 | +
 | 
	
		
			
			|  | 168 | +loadfiles=run loadkernel; run loadinitrd; run loadfdt
 | 
	
		
			
			|  | 169 | +mmcargs=setenv bootargs console=tty0 console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags}
 | 
	
		
			
			|  | 170 | +
 | 
	
		
			
			|  | 171 | +uenvcmd=run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr}
 | 
	
		
			
			|  | 172 | +EOF
 | 
	
		
			
			|  | 173 | +
 | 
	
		
			
			|  | 174 | +    mkdir -p /boot/dtbs
 | 
	
		
			
			|  | 175 | +    cp /usr/lib/linux-image-*-armmp/* /boot/dtbs
 | 
	
		
			
			|  | 176 | +}
 | 
	
		
			
			|  | 177 | +
 | 
	
		
			
			| 52 | 178 |  case "$MACHINE" in
 | 
	
		
			
			| 53 | 179 |      beaglebone)
 | 
	
		
			
			|  | 180 | +        beaglebone_env
 | 
	
		
			
			|  | 181 | +        enable_serial_console ttyO0
 | 
	
		
			
			| 54 | 182 |          setup_flash_kernel 'TI AM335x BeagleBone Black' 'ttyO0'
 | 
	
		
			
			| 55 | 183 |          ;;
 | 
	
		
			
			| 56 | 184 |      beaglebonewifi)
 | 
	
		
			
			|  | 185 | +        beaglebone_env
 | 
	
		
			
			|  | 186 | +        enable_serial_console ttyO0
 | 
	
		
			
			| 57 | 187 |          setup_flash_kernel 'TI AM335x BeagleBone Black Wireless' 'ttyO0'
 | 
	
		
			
			| 58 | 188 |          ;;
 | 
	
		
			
			| 59 | 189 |      cubietruck)
 | 
	
		
			
			|  | 190 | +        a20_env sun7i-a20-cubietruck.dtb
 | 
	
		
			
			|  | 191 | +        enable_serial_console ttyO0
 | 
	
		
			
			| 60 | 192 |          setup_flash_kernel 'Cubietech Cubietruck'
 | 
	
		
			
			| 61 | 193 |          ;;
 | 
	
		
			
			| 62 | 194 |      a20-olinuxino-lime)
 | 
	
		
			
			|  | 195 | +        a20_env sun7i-a20-olinuxino-lime.dtb
 | 
	
		
			
			|  | 196 | +        enable_serial_console ttyO0
 | 
	
		
			
			| 63 | 197 |          setup_flash_kernel 'Olimex A20-OLinuXino-LIME'
 | 
	
		
			
			| 64 | 198 |          ;;
 | 
	
		
			
			| 65 | 199 |      a20-olinuxino-lime2)
 | 
	
		
			
			|  | 200 | +        a20_env sun7i-a20-olinuxino-lime2.dtb
 | 
	
		
			
			|  | 201 | +        enable_serial_console ttyO0
 | 
	
		
			
			| 66 | 202 |          setup_flash_kernel 'Olimex A20-OLinuXino-LIME2'
 | 
	
		
			
			| 67 | 203 |          ;;
 | 
	
		
			
			| 68 | 204 |      a20-olinuxino-micro)
 | 
	
		
			
			|  | 205 | +        a20_env sun7i-a20-olinuxino-micro.dtb
 | 
	
		
			
			|  | 206 | +        enable_serial_console ttyO0
 | 
	
		
			
			| 69 | 207 |          setup_flash_kernel 'Olimex A20-Olinuxino Micro'
 | 
	
		
			
			| 70 | 208 |          ;;
 | 
	
		
			
			| 71 | 209 |      cubieboard2)
 | 
	
		
			
			|  | 210 | +        a20_env sun7i-a20-cubieboard2.dtb
 | 
	
		
			
			|  | 211 | +        enable_serial_console ttyO0
 | 
	
		
			
			| 72 | 212 |          setup_flash_kernel 'Cubietech Cubieboard2'
 | 
	
		
			
			| 73 | 213 |          ;;
 | 
	
		
			
			| 74 | 214 |      pcduino3)
 | 
	
		
			
			|  | 215 | +        a20_env sun7i-a20-pcduino3.dtb
 | 
	
		
			
			|  | 216 | +        enable_serial_console ttyO0
 | 
	
		
			
			| 75 | 217 |          setup_flash_kernel 'LinkSprite pcDuino3'
 | 
	
		
			
			| 76 | 218 |          ;;
 | 
	
		
			
			| 77 | 219 |  esac
 |