|
@@ -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
|