1
00:00:03,060 --> 00:00:05,000
So, I think we are ready to start

2
00:00:05,020 --> 00:00:08,770
So, next talk is from Martin, about Debian on ARM devices.

3
00:00:14,210 --> 00:00:21,530
So, it's Debian on ARM devices, it's not about the Debian ARM port itself, or any of the various ARM ports

4
00:00:21,970 --> 00:00:27,130
I would say it's sort of a mix of different topics

5
00:00:27,130 --> 00:00:27,280
it's basically ---

6
00:00:27,280 --> 00:00:29,130
I mean, basically I often get
it's basically ---

7
00:00:29,130 --> 00:00:32,020
I mean, basically I often get

8
00:00:32,080 --> 00:00:35,240
the question from users

9
00:00:35,530 --> 00:00:38,930
"Well, Debian works on this particular ARM device,

10
00:00:39,110 --> 00:00:42,080
I have a device which is like really really similar,

11
00:00:42,080 --> 00:00:44,860
so surely Debian should work on it, right?"

12
00:00:44,860 --> 00:00:48,640
And so far, the answer unfortunately was usually "no"

13
00:00:48,640 --> 00:00:53,020
and - and it's really frustrating for users

14
00:00:53,020 --> 00:00:55,530
because they don't see why.

15
00:00:55,530 --> 00:00:58,570
You know, the device is very much the same, so why doesn't it just work.

16
00:00:58,570 --> 00:01:01,310
And so, basically what I'm trying to do is

17
00:01:01,310 --> 00:01:04,040
to show like a little bit behind the scenes

18
00:01:04,040 --> 00:01:06,510
of how Debian on ARM works

19
00:01:07,040 --> 00:01:09,620
And there has been a whole lot of progres

20
00:01:09,620 --> 00:01:13,130
So I'm going to show how <i>did</i> it work,

21
00:01:13,130 --> 00:01:15,130
what are the improvements, and

22
00:01:15,130 --> 00:01:17,600
and how is it going to work in the future

23
00:01:19,930 --> 00:01:21,880
And it's all more from a develeoper perspective

24
00:01:22,110 --> 00:01:25,880
so, it's like, how do we support it in the Debian Installer

25
00:01:26,220 --> 00:01:31,440
its' like a mix of stuff, and I should say,

26
00:01:31,680 --> 00:01:35,110
I'm really looking at it from somebody who basically

27
00:01:35,110 --> 00:01:37,510
adds support for devices in the installer

28
00:01:37,510 --> 00:01:40,460
but I'm not like a kernel guy or anything, so

29
00:01:40,460 --> 00:01:45,060
there are a lot of people in this room who know a bit more about the technical details

30
00:01:45,400 --> 00:01:48,800
but I'm not going to really drill down really deep down anyway

31
00:01:48,800 --> 00:01:51,680
But if I'm incorrect, I'm sure that

32
00:01:51,680 --> 00:01:53,680
there are plenty of people that will correct me.

33
00:01:54,170 --> 00:02:00,820
So, where do you find ARM? So it's pretty much everywhere these days, I mean...

34
00:02:01,150 --> 00:02:05,040
Pretty much every phone has an ARM chip in it

35
00:02:07,480 --> 00:02:11,950
All those "Internet of Things" gadgets are ARM-based

36
00:02:12,530 --> 00:02:18,480
You have NAS devices, and that's really the area I used to focus on

37
00:02:19,020 --> 00:02:22,600
those small boxes where you basically add a hard drive

38
00:02:22,600 --> 00:02:26,730
and most people just use it for storage, but it's actually a

39
00:02:27,130 --> 00:02:30,150
full PC where you can install Debian on it

40
00:02:30,640 --> 00:02:33,930
so I always found that to be very interesting

41
00:02:34,280 --> 00:02:37,310
and nowadays you have a lot of development boards

42
00:02:37,460 --> 00:02:41,280
And I'm not sure whether "development boards" is the right word

43
00:02:41,280 --> 00:02:45,130
Because when I hear "development boards" I think of it as really expensive,

44
00:02:45,640 --> 00:02:48,110
Like 5K for boards or something

45
00:02:48,420 --> 00:02:52,400
But nowadays you have those, maybe, a better board would be like bareboards

46
00:02:52,400 --> 00:02:56,200
Like "Raspberry Pi", like basically it's just the board

47
00:02:56,200 --> 00:02:59,820
it does not come with a case, you can buy those as well

48
00:02:59,820 --> 00:03:03,060
and it's like 30 dollars or something, you can get

49
00:03:03,370 --> 00:03:06,530
And that gets pretty much where most of the

50
00:03:06,530 --> 00:03:10,950
excitement is going for Debian users at this moment

51
00:03:11,220 --> 00:03:13,930
And that can cause a lot of frustration

52
00:03:16,640 --> 00:03:20,150
And everybody says that ARM is going to be big on servers

53
00:03:20,150 --> 00:03:24,020
and I think that's something we ar going to see

54
00:03:24,020 --> 00:03:26,600
But right now, again, it's

55
00:03:26,600 --> 00:03:28,600
a little bit frustrating

56
00:03:30,600 --> 00:03:34,000
How does it work as a Deban Installer

57
00:03:34,000 --> 00:03:36,000
There are basically two

58
00:03:36,970 --> 00:03:40,280
ways of installing on those ARM Pi devices

59
00:03:41,020 --> 00:03:44,350
So the, like, historic, that we normally

60
00:03:44,350 --> 00:03:47,950
would be to install on, like, ascreen

61
00:03:47,950 --> 00:03:49,950
can be a serial console,

62
00:03:50,310 --> 00:03:54,550
and then you just download via the network

63
00:03:54,750 --> 00:03:58,970
and then you just download via the network

64
00:03:58,970 --> 00:04:00,970
from a CD image or wherever,

65
00:04:00,970 --> 00:04:04,660
But the other method, which we actually use for those

66
00:04:04,660 --> 00:04:07,910
net devices was a network console

67
00:04:07,910 --> 00:04:11,460
where you basically ssh into the installer

68
00:04:11,730 --> 00:04:14,440
and you perform the installation via ssh

69
00:04:15,400 --> 00:04:19,839
and that was really the only way, because those mass devices

70
00:04:19,839 --> 00:04:22,950
don't have any I/O, so I

71
00:04:23,200 --> 00:04:25,370
even in there, you can

72
00:04:25,370 --> 00:04:28,080
it's just a serial console, most of them

73
00:04:28,330 --> 00:04:32,000
That's something we didn't want to require from the user

74
00:04:33,220 --> 00:04:36,840
And the other thing that's coming through, I think that it's basically cool that was announce today,

75
00:04:36,840 --> 00:04:38,840
screen support, so basically

76
00:04:40,020 --> 00:04:43,330
so you can have multiple sessions with in vi,

77
00:04:43,330 --> 00:04:47,110
which can be useful if you have an open shell to debug

78
00:04:49,110 --> 00:04:53,500
And so, how -- And so, this is really looking back at

79
00:04:53,500 --> 00:04:55,500
like running Debian on NAS devices

80
00:04:55,500 --> 00:04:58,420
which is something that used to be really popular

81
00:04:58,420 --> 00:05:02,500
And the way it worked was basically

82
00:05:02,500 --> 00:05:05,200
that we provided an installer image

83
00:05:05,200 --> 00:05:07,200
which was sort of a firmware image

84
00:05:07,200 --> 00:05:09,200
as a lot of those NAS devices

85
00:05:09,200 --> 00:05:12,080
have like a firmware upgrade mechanism

86
00:05:12,240 --> 00:05:14,180
and so we would basically fake

87
00:05:14,180 --> 00:05:17,240
we would create a firmware image

88
00:05:17,300 --> 00:05:19,520
which the software would accept

89
00:05:19,600 --> 00:05:22,460
but instead of a firmware update

90
00:05:22,540 --> 00:05:24,840
it would actually contain the Debian installer

91
00:05:24,840 --> 00:05:27,620
so you would install that upgrade

92
00:05:27,640 --> 00:05:30,080
you would reboot, and

93
00:05:30,080 --> 00:05:32,860
you could ssh to the installer

94
00:05:32,920 --> 00:05:36,360
and obviously, in order to ssh to the installer

95
00:05:36,360 --> 00:05:38,020
it needs to bring up the network

96
00:05:38,020 --> 00:05:41,060
and there is a tool called oldsys-preseed

97
00:05:41,060 --> 00:05:43,280
that basically reads the network configuration

98
00:05:43,280 --> 00:05:45,280
from the device

99
00:05:45,280 --> 00:05:47,280
and then sets up the network

100
00:05:47,280 --> 00:05:51,820
and it can always recognize the DHCP

101
00:05:51,820 --> 00:05:53,820
and then the user connects via ssh

102
00:05:53,820 --> 00:05:57,600
again, there would be some indication, maybe

103
00:05:57,600 --> 00:05:59,600
you know, there would be a "beep"

104
00:05:59,600 --> 00:06:01,260
or maybe change the LED

105
00:06:01,260 --> 00:06:03,260
to indicate that the installer is ready

106
00:06:03,260 --> 00:06:05,260
and then, the user basically performs

107
00:06:05,260 --> 00:06:07,260
a regular installation

108
00:06:07,260 --> 00:06:09,260
with normal d-i; they don't have to

109
00:06:09,260 --> 00:06:11,260
do anything differently.

110
00:06:12,320 --> 00:06:14,520
And at the end, flash-kernel runs

111
00:06:14,520 --> 00:06:17,340
to make the system bootable

112
00:06:17,340 --> 00:06:20,460
flash-kernel is called that way

113
00:06:20,460 --> 00:06:20,660
because it used to support
flash-kernel is called that way

114
00:06:20,660 --> 00:06:22,660
because it used to support

115
00:06:22,660 --> 00:06:25,380
like the initial device it supported

116
00:06:25,380 --> 00:06:27,380
booted from flash

117
00:06:27,380 --> 00:06:29,380
but it also generates bootable devices

118
00:06:29,380 --> 00:06:31,380
bootable images of disk devices

119
00:06:34,180 --> 00:06:36,560
so it really, flash-kernel really requires

120
00:06:36,560 --> 00:06:38,560
understanding of each device

121
00:06:38,560 --> 00:06:41,080
and our philosophy

122
00:06:41,080 --> 00:06:43,080
in those cases, with those NAS devices

123
00:06:43,080 --> 00:06:44,040
was really,

124
00:06:44,040 --> 00:06:46,040
we don't touch anything

125
00:06:46,040 --> 00:06:48,040
in the firmware, like

126
00:06:48,040 --> 00:06:50,040
in the configuration,

127
00:06:50,040 --> 00:06:52,040
so sometimes

128
00:06:52,040 --> 00:06:54,700
instead of changing the root device

129
00:06:54,700 --> 00:06:56,700
in the u-boot config we would actually

130
00:06:56,700 --> 00:06:58,700
hard-code that in the ramdisk

131
00:06:58,700 --> 00:07:02,720
just because we wanted people to go back

132
00:07:02,720 --> 00:07:05,160
to the original firmware if they had to

133
00:07:05,160 --> 00:07:07,700
if they had to send it in for repair or something

134
00:07:07,700 --> 00:07:09,700
and

135
00:07:09,700 --> 00:07:12,500
and that kind of approach really worked well

136
00:07:12,500 --> 00:07:14,500
so I think we really had a lot of

137
00:07:14,500 --> 00:07:16,500
people, lot of users running

138
00:07:16,500 --> 00:07:18,500
in Debian in those kind of NAS devices

139
00:07:18,500 --> 00:07:20,860
and it was really easy to do.

140
00:07:20,860 --> 00:07:22,580
You get a firmware image,

141
00:07:22,580 --> 00:07:25,380
you connect to the installer via ssh,

142
00:07:25,380 --> 00:07:27,380
and it just works, it's a normal

143
00:07:27,380 --> 00:07:28,620
debian-installer, the way

144
00:07:28,620 --> 00:07:30,620
everybody knows it,

145
00:07:30,620 --> 00:07:32,620
because some of the other distros

146
00:07:32,620 --> 00:07:33,820
they basically provide, like,

147
00:07:33,820 --> 00:07:35,240
tarballs and instructions

148
00:07:35,240 --> 00:07:37,240
so you need to partition a disk,

149
00:07:37,240 --> 00:07:39,240
need to un-tar it,

150
00:07:39,240 --> 00:07:41,240
you need to change those files,

151
00:07:41,240 --> 00:07:43,240
and even if it sounds simple,

152
00:07:43,240 --> 00:07:45,240
it's so many steps that

153
00:07:45,240 --> 00:07:47,620
you always... you often get something wrong

154
00:07:47,620 --> 00:07:50,380
and then you put the drive into the

155
00:07:50,380 --> 00:07:52,380
NAS device, and it doesn't boot, and you don't know why

156
00:07:52,380 --> 00:07:54,800
where did you make that mistake,

157
00:07:54,800 --> 00:07:56,000
which step

158
00:07:56,000 --> 00:07:58,000
and you basically have to start from scratch

159
00:07:58,000 --> 00:08:00,440
so Debian really provided something unique

160
00:08:00,440 --> 00:08:02,440
by adding

161
00:08:02,440 --> 00:08:04,440
the debian-installer support

162
00:08:04,440 --> 00:08:06,440
but anyway, that's the way

163
00:08:06,440 --> 00:08:08,440
it sort of used to work.

164
00:08:08,440 --> 00:08:10,440
Nowadays, with a lot of those bareboard

165
00:08:10,440 --> 00:08:12,440
it's much easier

166
00:08:12,440 --> 00:08:14,440
I'll get to that.

167
00:08:15,180 --> 00:08:18,100
So at the moment there are three different ARM ports:

168
00:08:18,100 --> 00:08:20,100
There is the old armel

169
00:08:20,100 --> 00:08:22,100
which used to be the "newer" ARM

170
00:08:22,100 --> 00:08:24,820
and now it's old,

171
00:08:24,820 --> 00:08:26,820
and one of the discussions

172
00:08:26,820 --> 00:08:28,820
that we are probably going to have later today on the BoF

173
00:08:28,820 --> 00:08:31,220
is about, should we remove that

174
00:08:31,220 --> 00:08:33,220
after Stretch.

175
00:08:33,220 --> 00:08:36,440
There is armhf and the arm64

176
00:08:37,640 --> 00:08:40,539
and we get basically the question I hope to answer.

177
00:08:40,539 --> 00:08:43,299
If, you know, device A works,

178
00:08:43,299 --> 00:08:45,300
I have a device which is really similar,

179
00:08:45,300 --> 00:08:47,300
but it doesn't work. Why is that?

180
00:08:49,300 --> 00:08:51,300
So, heh,

181
00:08:51,300 --> 00:08:53,300
There have been a lot of changes

182
00:08:53,300 --> 00:08:58,120
in various upstream projects, specially

183
00:08:58,120 --> 00:09:00,120
the kernel and U-boot

184
00:09:00,120 --> 00:09:02,120
that really make things easier.

185
00:09:02,120 --> 00:09:04,120
So, in the past

186
00:09:04,120 --> 00:09:07,260
we basically had

187
00:09:07,260 --> 00:09:09,260
a kernel image

188
00:09:09,260 --> 00:09:10,780
for each platform,

189
00:09:10,780 --> 00:09:12,780
where a platform is basically like

190
00:09:12,780 --> 00:09:14,780
a SSE family

191
00:09:14,780 --> 00:09:17,660
and there would be a different image

192
00:09:17,660 --> 00:09:21,540
because ARM takes a long time

193
00:09:21,540 --> 00:09:23,540
to compile, there was always some debate

194
00:09:23,540 --> 00:09:26,100
about adding a new platform

195
00:09:26,100 --> 00:09:28,100
because there would be a new

196
00:09:28,100 --> 00:09:30,600
image flavor, which takes some time,

197
00:09:31,740 --> 00:09:33,540
and that was just really like,

198
00:09:33,540 --> 00:09:36,280
we couldn't just have one ARM kernel

199
00:09:36,280 --> 00:09:38,280
which works everywhere.

200
00:09:38,280 --> 00:09:40,280
And a lot of people didn't understand

201
00:09:40,280 --> 00:09:42,280
why you had a different kernel

202
00:09:42,280 --> 00:09:44,280
because different platforms,

203
00:09:44,280 --> 00:09:48,040
although there has been a lot of progress upstream,

204
00:09:48,040 --> 00:09:51,580
at least nowadays, with armhf

205
00:09:51,580 --> 00:09:54,020
and with arm64

206
00:09:54,020 --> 00:09:56,020
we just have one kernel.

207
00:09:57,340 --> 00:09:59,980
And upstream basically

208
00:09:59,980 --> 00:10:02,740
Maybe some of you remember the rant

209
00:10:02,740 --> 00:10:04,740
by Niels about

210
00:10:04,740 --> 00:10:06,740
the ARM people doing everything

211
00:10:06,740 --> 00:10:08,180
in different ways,

212
00:10:08,180 --> 00:10:10,180
and there has been a lot of standarization

213
00:10:10,180 --> 00:10:12,180
over the years.

214
00:10:12,180 --> 00:10:14,180
Basically, the other thing is

215
00:10:14,180 --> 00:10:16,180
there used to be for each device

216
00:10:16,180 --> 00:10:18,180
there was a board file

217
00:10:18,180 --> 00:10:20,180
it was like a C file

218
00:10:20,180 --> 00:10:22,580
to initialize the different components,

219
00:10:22,580 --> 00:10:24,580
and the boot loader would

220
00:10:24,580 --> 00:10:27,660
pass the machine ID to the kernel,

221
00:10:27,660 --> 00:10:30,380
and it would load that boot file.

222
00:10:30,380 --> 00:10:32,380
And nowadays,

223
00:10:32,380 --> 00:10:34,380
there is basically a

224
00:10:34,380 --> 00:10:36,380
device tree in the kernel,

225
00:10:36,380 --> 00:10:38,380
which is a description of the hardware

226
00:10:40,040 --> 00:10:41,800
and it will basically compile it

227
00:10:41,800 --> 00:10:44,580
to, like, a binary blob, the .dtb.

228
00:10:44,580 --> 00:10:46,580
And, so, basically you just need

229
00:10:46,580 --> 00:10:48,580
the kernel image, and

230
00:10:48,580 --> 00:10:51,200
the .dtb, which is hardware-specific,

231
00:10:51,200 --> 00:10:53,200
and then it boots.

232
00:10:53,200 --> 00:10:55,640
And obviously, for us in Debian

233
00:10:55,640 --> 00:10:57,640
that makes it much much easier

234
00:10:57,640 --> 00:11:00,540
to support a lot of devices.

235
00:11:01,960 --> 00:11:04,560
The other thing that changed in U-boot,

236
00:11:06,040 --> 00:11:09,080
when you install the Debian kernel image,

237
00:11:09,080 --> 00:11:10,720
it creates

238
00:11:10,720 --> 00:11:13,900
the vmlinux file

239
00:11:13,900 --> 00:11:16,740
and also the RAM disk

240
00:11:16,740 --> 00:11:18,740
but with U-boot,

241
00:11:18,740 --> 00:11:20,740
you couldn't actually load those files

242
00:11:20,740 --> 00:11:22,740
correctly. You basically

243
00:11:22,740 --> 00:11:25,840
had to wrap them in a U-boot image

244
00:11:25,840 --> 00:11:28,420
and it's not really hard

245
00:11:28,420 --> 00:11:31,440
it's just the command initram,

246
00:11:31,440 --> 00:11:33,440
but all of the different devices had

247
00:11:33,440 --> 00:11:34,940
different load addresses,

248
00:11:34,940 --> 00:11:36,940
and, again, that's hardware-specific knowledge

249
00:11:36,940 --> 00:11:39,360
that flash-kernel needed to know.

250
00:11:39,360 --> 00:11:40,820
And nowadays,

251
00:11:40,820 --> 00:11:42,720
there is a command which

252
00:11:42,720 --> 00:11:44,720
directly loads the kernel,

253
00:11:44,720 --> 00:11:48,380
so that, again, was a step to make things easier.

254
00:11:48,380 --> 00:11:52,320
And the last thing which really made

255
00:11:52,320 --> 00:11:54,320
things easier is distro support

256
00:11:54,320 --> 00:11:56,320
in U-boot.

257
00:11:56,320 --> 00:11:58,320
So, basically, in the past

258
00:11:58,320 --> 00:12:00,320
every U-boot, every

259
00:12:00,320 --> 00:12:02,320
devices in U-boot,

260
00:12:02,320 --> 00:12:04,320
booted in a different way,

261
00:12:05,240 --> 00:12:08,700
just in terms on where would it load

262
00:12:08,700 --> 00:12:10,700
the file from, or

263
00:12:10,700 --> 00:12:12,700
what variables would it use, and

264
00:12:12,700 --> 00:12:14,700
nowadays there is something called distro-support

265
00:12:14,700 --> 00:12:16,700
which is basically a standardized way

266
00:12:16,700 --> 00:12:18,700
to boot a Linux distro

267
00:12:19,300 --> 00:12:21,660
with U-boot.

268
00:12:21,660 --> 00:12:23,660
There are basically

269
00:12:23,660 --> 00:12:25,660
two ways, either can

270
00:12:25,660 --> 00:12:27,660
read a config file,

271
00:12:27,660 --> 00:12:29,660
or it can basically run a

272
00:12:29,660 --> 00:12:31,660
boot script, and that's what

273
00:12:31,660 --> 00:12:33,660
we use in Debian, so we basically have

274
00:12:33,660 --> 00:12:35,660
a generic boot script

275
00:12:35,660 --> 00:12:38,100
which loads the kernel,

276
00:12:38,100 --> 00:12:40,100
loads the ramdisk, the .dtb,

277
00:12:40,100 --> 00:12:42,100
and boots Debian.

278
00:12:42,100 --> 00:12:44,100
It can use the generic

279
00:12:44,100 --> 00:12:46,100
bootscript in almost all

280
00:12:46,100 --> 00:12:47,860
of the modern devices.

281
00:12:47,860 --> 00:12:49,860
So nowadays, because of that,

282
00:12:49,860 --> 00:12:51,860
it's much more standard, and

283
00:12:51,860 --> 00:12:53,860
it's much easier to support

284
00:12:53,860 --> 00:12:56,440
those devices.

285
00:12:56,440 --> 00:12:59,980
So here are some examples of flash-kernel

286
00:12:59,980 --> 00:13:02,800
So, basically, flash-kernel has like a database

287
00:13:02,800 --> 00:13:04,800
of devices which it supports

288
00:13:04,800 --> 00:13:07,580
so it's like the machine entry

289
00:13:07,580 --> 00:13:09,580
in /proc/cpuinfo,

290
00:13:09,580 --> 00:13:11,960
and then the kernel flavors

291
00:13:11,960 --> 00:13:13,960
it can run

292
00:13:13,960 --> 00:13:15,960
and, so, this one is

293
00:13:15,960 --> 00:13:17,960
an old device, it still uses

294
00:13:17,960 --> 00:13:19,960
a board file, and it

295
00:13:19,960 --> 00:13:22,400
needs the U-boot wrapper,

296
00:13:22,400 --> 00:13:24,400
So...

297
00:13:24,400 --> 00:13:27,180
You are basically setting the machine ID

298
00:13:27,180 --> 00:13:29,840
those are the flash partitions

299
00:13:29,840 --> 00:13:31,840
where the kernel and the

300
00:13:31,840 --> 00:13:33,840
ramdisk are stored, and

301
00:13:33,840 --> 00:13:35,660
that's the load address for the

302
00:13:35,660 --> 00:13:37,660
U-boot wrapper

303
00:13:39,660 --> 00:13:43,120
And, now, that's a device

304
00:13:43,120 --> 00:13:45,120
which used to have

305
00:13:45,120 --> 00:13:47,120
a boot file,

306
00:13:47,120 --> 00:13:49,120
and which then migrated

307
00:13:49,120 --> 00:13:51,120
to a .dtb,

308
00:13:51,120 --> 00:13:53,120
so basically, heh,

309
00:13:53,120 --> 00:13:56,160
that was really really painful for Debian

310
00:13:56,160 --> 00:13:58,800
so, basically, the kernel people said

311
00:13:58,800 --> 00:14:00,800
"Oh, you are going to move to device tree,

312
00:14:00,800 --> 00:14:02,060
so don't worry,

313
00:14:02,060 --> 00:14:04,460
we are not gonna remove those old board files,

314
00:14:04,460 --> 00:14:06,460
you can still use them."

315
00:14:06,460 --> 00:14:08,800
And then, a few years later they realized

316
00:14:08,800 --> 00:14:11,240
it's really hard to keep both alive,

317
00:14:11,240 --> 00:14:13,760
and they got rid of the board files.

318
00:14:13,760 --> 00:14:16,360
And that was really painful to us

319
00:14:16,360 --> 00:14:18,820
because we had to migrate

320
00:14:18,820 --> 00:14:20,820
So you can see,

321
00:14:20,820 --> 00:14:23,500
here, a kernel version,

322
00:14:23,500 --> 00:14:25,500
and so, from that kernel on,

323
00:14:25,500 --> 00:14:27,500
you needed to use the new way.

324
00:14:29,060 --> 00:14:33,240
And one of the reasons it was painful

325
00:14:33,240 --> 00:14:35,780
specially on the QNAP devices

326
00:14:35,780 --> 00:14:38,400
is because with

327
00:14:38,400 --> 00:14:40,400
they actually have two different CPUs

328
00:14:40,400 --> 00:14:42,400
so there are different barriers

329
00:14:42,400 --> 00:14:44,400
and whilst the board files,

330
00:14:44,400 --> 00:14:46,400
the same board file worked

331
00:14:46,400 --> 00:14:48,400
regardless of the CPU,

332
00:14:48,400 --> 00:14:51,240
because of the way the device tree worked

333
00:14:51,240 --> 00:14:53,240
it actually needed two different device trees

334
00:14:53,240 --> 00:14:55,240
depending on the CPU

335
00:14:55,600 --> 00:14:59,320
so now we basically, you know, something that just worked,

336
00:14:59,320 --> 00:15:01,320
you know, it used to work fine,

337
00:15:01,320 --> 00:15:03,320
you just had one kernel

338
00:15:03,320 --> 00:15:05,740
with the machine ID

339
00:15:05,740 --> 00:15:06,920
at least would work,

340
00:15:06,920 --> 00:15:09,620
and somehow with the device tree

341
00:15:09,620 --> 00:15:11,620
we needed to figure out which one

342
00:15:11,620 --> 00:15:13,620
we need, and so

343
00:15:13,620 --> 00:15:16,960
[?] fortunately did all of that work.

344
00:15:16,960 --> 00:15:18,960
So that's actually a script that runs

345
00:15:18,960 --> 00:15:20,960
to figure out which device tree

346
00:15:20,960 --> 00:15:22,960
that particular device needs.

347
00:15:26,660 --> 00:15:29,160
So now, that's actually

348
00:15:29,160 --> 00:15:31,160
the reason I want to show this is

349
00:15:31,160 --> 00:15:33,160
how simpler things are these days, so

350
00:15:33,160 --> 00:15:35,160
this is an example from

351
00:15:35,160 --> 00:15:38,600
[?] platform, which uses distro-support,

352
00:15:38,600 --> 00:15:40,960
and the only thing you really need is

353
00:15:40,960 --> 00:15:42,960
a machine entry with the name,

354
00:15:42,960 --> 00:15:44,960
and then

355
00:15:44,960 --> 00:15:46,960
like the kernel-flavor,

356
00:15:46,960 --> 00:15:48,960
but that's the same for...

357
00:15:48,960 --> 00:15:50,960
you know, there is only one kernel flavor.

358
00:15:52,740 --> 00:15:55,380
And then, the device tree ID

359
00:15:56,480 --> 00:15:58,360
and, again, all of that stuff is generic,

360
00:15:58,360 --> 00:16:00,760
so it just uses the generic bootscript,

361
00:16:02,180 --> 00:16:03,780
and the generic boot path,

362
00:16:03,780 --> 00:16:05,780
so basically

363
00:16:05,780 --> 00:16:07,780
all it pretty much needs for

364
00:16:07,780 --> 00:16:09,780
a new device is, like,

365
00:16:09,780 --> 00:16:11,780
you know,

366
00:16:11,780 --> 00:16:13,780
these two entries,

367
00:16:13,780 --> 00:16:15,780
it's really really simple.

368
00:16:18,780 --> 00:16:21,260
So here, I just wanted to

369
00:16:21,260 --> 00:16:23,260
tell about the different ARM ports and...

370
00:16:24,200 --> 00:16:26,940
So, for me it was really hard to structure this, because

371
00:16:26,940 --> 00:16:29,460
those changes in the kernel

372
00:16:29,460 --> 00:16:31,460
and U-boot

373
00:16:31,460 --> 00:16:34,640
you know, happen independent of our ARM ports,

374
00:16:36,100 --> 00:16:37,720
But at the same time, because

375
00:16:37,720 --> 00:16:40,340
because the armhf world is much newer,

376
00:16:40,340 --> 00:16:42,340
it works in a different way.

377
00:16:42,340 --> 00:16:45,200
So, basically, the armel

378
00:16:45,200 --> 00:16:49,480
we still have different flavors

379
00:16:49,480 --> 00:16:54,000
but we have already combined the orion and the kirkwood

380
00:16:54,000 --> 00:16:56,000
into one marvell flavor,

381
00:16:56,000 --> 00:16:59,060
and we have the versatile one.

382
00:17:00,860 --> 00:17:03,760
So one of the problems we have in armel is that

383
00:17:03,760 --> 00:17:05,760
a lot of those NAS devices

384
00:17:05,760 --> 00:17:07,760
boot from flash

385
00:17:07,760 --> 00:17:10,180
and they only have, some of them,

386
00:17:10,180 --> 00:17:12,180
3MB for the kernel,

387
00:17:12,180 --> 00:17:15,119
which used to be a lot of space

388
00:17:15,119 --> 00:17:16,660
but nowadays it's not.

389
00:17:16,720 --> 00:17:19,380
So that really puts a lot of restrictions

390
00:17:19,380 --> 00:17:21,380
so basically we disable some stuff

391
00:17:21,380 --> 00:17:23,380
from armel

392
00:17:23,380 --> 00:17:27,180
but I think that armel is really really widely used

393
00:17:27,180 --> 00:17:29,180
because of those NAS devices,

394
00:17:29,180 --> 00:17:31,180
but I think they are slowly getting old,

395
00:17:31,180 --> 00:17:33,680
but there are still a lot of people that use them.

396
00:17:33,680 --> 00:17:37,220
Like I said, it requires the U-boot image

397
00:17:37,700 --> 00:17:40,380
Originally, we used board files

398
00:17:40,380 --> 00:17:43,360
and device tree, most of them

399
00:17:43,360 --> 00:17:45,940
have switched over to device tree

400
00:17:45,940 --> 00:17:48,580
even if some of them still use board files

401
00:17:48,580 --> 00:17:51,540
and adding a new device requires

402
00:17:51,540 --> 00:17:54,200
a number of changes in the installer.

403
00:17:54,200 --> 00:17:57,100
So basically, you needed to map

404
00:17:57,100 --> 00:17:59,100
the device to

405
00:17:59,100 --> 00:18:01,100
the complete image

406
00:18:01,100 --> 00:18:04,200
and there are just there a couple of

407
00:18:04,200 --> 00:18:06,260
things, so basically, any one device

408
00:18:06,280 --> 00:18:08,200
you have to change like five different

409
00:18:08,200 --> 00:18:10,200
places in the installer.

410
00:18:10,200 --> 00:18:12,200
And it was quite confusing for people who wanted

411
00:18:12,200 --> 00:18:14,200
to add new devices

412
00:18:14,200 --> 00:18:17,080
Because it isn't really documented very well

413
00:18:18,480 --> 00:18:21,400
So some examples are a list of three people

414
00:18:21,400 --> 00:18:23,400
who are involved in that port

415
00:18:23,400 --> 00:18:25,400
So, Roger is someone

416
00:18:25,400 --> 00:18:27,400
who is quite new, and who really got

417
00:18:27,400 --> 00:18:29,920
involved into porting those old devices.

418
00:18:31,440 --> 00:18:34,560
And so, armhf is much nicer,

419
00:18:34,560 --> 00:18:36,560
so the majority of

420
00:18:36,560 --> 00:18:39,140
devices support distro-support.

421
00:18:40,440 --> 00:18:42,700
And the other thing we do

422
00:18:44,700 --> 00:18:47,040
is, for some of the devices

423
00:18:47,040 --> 00:18:49,040
we provide SD card images,

424
00:18:49,040 --> 00:18:51,040
which contain

425
00:18:51,040 --> 00:18:55,160
U-boot and the Debian installer

426
00:18:55,160 --> 00:18:57,160
So basically Vagrant

427
00:18:57,160 --> 00:18:59,960
maintains U-boot in Debian, and

428
00:18:59,960 --> 00:19:01,960
a lot of those devices are supported

429
00:19:01,960 --> 00:19:03,960
in U-boot in Debian.

430
00:19:03,960 --> 00:19:05,960
So we just

431
00:19:05,960 --> 00:19:07,960
provide an SD image, so you can just

432
00:19:07,960 --> 00:19:10,480
store it in the SD card, you put it in

433
00:19:10,480 --> 00:19:12,940
and, because of the distro-support,

434
00:19:12,940 --> 00:19:14,940
it just loads debian-installer,

435
00:19:14,940 --> 00:19:17,840
you do the installation, reboot,

436
00:19:17,840 --> 00:19:19,840
and things just work.

437
00:19:19,840 --> 00:19:21,840
So I think it really has gone

438
00:19:21,840 --> 00:19:25,200
...Come a long way.

439
00:19:27,200 --> 00:19:29,820
So nowadays,

440
00:19:29,820 --> 00:19:31,820
adding a new device

441
00:19:31,820 --> 00:19:34,140
requires much fewer changes

442
00:19:34,140 --> 00:19:36,140
than it used to be.

443
00:19:36,140 --> 00:19:40,980
Because as everything uses the same, like, one kernel flavor,

444
00:19:40,980 --> 00:19:43,900
you don't need to patch all those different places anymore,

445
00:19:45,020 --> 00:19:47,740
and because of distro-support, it just works.

446
00:19:47,740 --> 00:19:52,280
You can pretty much use the generic bootscript.

447
00:19:54,140 --> 00:19:56,140
So, arm64.

448
00:19:56,140 --> 00:19:58,300
So, the problem until recently

449
00:19:58,300 --> 00:20:00,300
is that there simply wasn't any hardware

450
00:20:00,300 --> 00:20:02,300
that people could buy.

451
00:20:02,300 --> 00:20:04,300
And that's changing rapidly now

452
00:20:05,640 --> 00:20:07,540
[?]

453
00:20:07,540 --> 00:20:10,280
We have for example the Raspberry Pi 3

454
00:20:10,280 --> 00:20:13,960
which uses a 64 bit CPU

455
00:20:13,960 --> 00:20:16,620
but the software it ships is only 32 bits,

456
00:20:16,620 --> 00:20:18,620
but most of the work

457
00:20:18,620 --> 00:20:20,620
is now

458
00:20:20,620 --> 00:20:23,680
upstreamed to run 64 bit on it

459
00:20:25,000 --> 00:20:27,600
and there are a lot of

460
00:20:28,120 --> 00:20:31,500
devices which sort of work but not quite

461
00:20:31,960 --> 00:20:35,660
but anyway, so the idea for arm64

462
00:20:35,660 --> 00:20:37,660
is that a lot of the

463
00:20:37,660 --> 00:20:39,660
new hardware

464
00:20:39,660 --> 00:20:41,660
specially on the server side

465
00:20:41,660 --> 00:20:43,660
will use UEFI,

466
00:20:43,660 --> 00:20:45,660
and so you basically just

467
00:20:46,380 --> 00:20:48,100
it just works like a PC.

468
00:20:48,100 --> 00:20:50,100
So you have Grub,

469
00:20:50,100 --> 00:20:53,020
you can run debian-installer from Grub

470
00:20:53,020 --> 00:20:54,900
and you get Grub afterwards.

471
00:20:54,920 --> 00:20:56,480
And just boots like a PC,

472
00:20:56,480 --> 00:20:59,860
and Steve has done a lot of work in that area,

473
00:20:59,860 --> 00:21:01,860
And in theory,

474
00:21:01,860 --> 00:21:03,860
it should just work out of the box.

475
00:21:03,860 --> 00:21:06,220
So, if it uses

476
00:21:06,220 --> 00:21:08,220
UEFI, we don't need to add anything.

477
00:21:08,220 --> 00:21:10,220
It just works.

478
00:21:10,220 --> 00:21:12,220
There's nothing to do.

479
00:21:13,400 --> 00:21:15,300
At least, that's the theory.

480
00:21:15,300 --> 00:21:17,300
So, what I found is

481
00:21:17,300 --> 00:21:19,300
...I made a disclaimer, so

482
00:21:19,300 --> 00:21:21,300
...Assuming the kernel

483
00:21:21,300 --> 00:21:23,300
you know, kernel support and stuff...

484
00:21:23,300 --> 00:21:25,300
...To be honest,

485
00:21:25,300 --> 00:21:28,160
right now, that's a big assumption.

486
00:21:28,160 --> 00:21:30,160
So I've been playing with a few

487
00:21:30,160 --> 00:21:33,200
64 bit ARM boards

488
00:21:33,200 --> 00:21:36,580
and basically, what I found is

489
00:21:36,580 --> 00:21:39,420
there is some support upstream,

490
00:21:39,420 --> 00:21:41,420
so I can boot a kernel,

491
00:21:41,420 --> 00:21:43,700
but, oh! There is no USB support!

492
00:21:43,700 --> 00:21:45,280
there is no Wifi support!

493
00:21:45,280 --> 00:21:48,060
So I cannot actually do anything with it.

494
00:21:48,060 --> 00:21:51,580
But I can get to something that

495
00:21:51,580 --> 00:21:54,980
because arm64 is still farily new.

496
00:21:54,980 --> 00:21:57,640
And there is a lot of work going on upstream

497
00:21:57,640 --> 00:22:00,000
to support the various platforms.

498
00:22:00,000 --> 00:22:03,300
So, I think over time that's really going to be much better.

499
00:22:05,300 --> 00:22:09,440
Even though that UEFI idea is there

500
00:22:09,440 --> 00:22:11,200
in reality,

501
00:22:11,200 --> 00:22:13,200
we are going to see different solutions

502
00:22:13,200 --> 00:22:15,200
for arm64.

503
00:22:15,200 --> 00:22:18,240
So we are going to see UEFI, in particular on servers,

504
00:22:18,240 --> 00:22:20,240
but we will also see U-boot.

505
00:22:20,240 --> 00:22:22,700
So a lot of those bare boards

506
00:22:22,700 --> 00:22:24,700
they have U-boot.

507
00:22:24,700 --> 00:22:26,700
And, so, right now

508
00:22:26,700 --> 00:22:28,700
we can use the distro support

509
00:22:28,700 --> 00:22:31,980
and I think that it works pretty well.

510
00:22:31,980 --> 00:22:34,320
But one thing that SuSE has done

511
00:22:34,320 --> 00:22:36,320
so, they just had the same issue,

512
00:22:36,320 --> 00:22:38,320
they want to support all those devices

513
00:22:38,320 --> 00:22:41,240
but they just want to use the same mechanism everywhere,

514
00:22:41,240 --> 00:22:43,420
so they have actually implemented

515
00:22:43,420 --> 00:22:46,020
UEFI on top of U-boot,

516
00:22:46,020 --> 00:22:49,240
so you can basically use U-boot to load Grub

517
00:22:49,240 --> 00:22:51,720
and then you have Grub

518
00:22:51,720 --> 00:22:54,320
so I think that's something we need to figure out;

519
00:22:54,320 --> 00:22:56,840
do we want to stay with distro-support?

520
00:22:56,840 --> 00:22:58,840
do we want to use

521
00:22:58,840 --> 00:23:01,140
UEFI on top of U-boot?

522
00:23:01,140 --> 00:23:03,140
is that something we want to

523
00:23:03,140 --> 00:23:05,140
give users the option?

524
00:23:05,140 --> 00:23:08,020
And then, Fastboot

525
00:23:08,020 --> 00:23:10,140
is something used

526
00:23:10,140 --> 00:23:12,140
in the Android world

527
00:23:12,140 --> 00:23:14,760
and a lot of those, like, I see a lot of

528
00:23:14,760 --> 00:23:17,800
both bare boards, but also

529
00:23:17,800 --> 00:23:19,940
game consoles and stuff, which

530
00:23:19,940 --> 00:23:21,940
which are sort of Android-oriented,

531
00:23:21,940 --> 00:23:23,940
but which can also run normal Linux,

532
00:23:23,940 --> 00:23:26,840
and they will use like Fastboot or something.

533
00:23:26,840 --> 00:23:30,120
And there are tons of other bootloaders out there

534
00:23:30,120 --> 00:23:32,540
But I would definitively say, like, the good ones

535
00:23:32,540 --> 00:23:34,540
are UEFI and U-boot

536
00:23:36,540 --> 00:23:40,320
So, I gave a similar talk a few weeks ago

537
00:23:40,320 --> 00:23:43,060
and turns out, a lot of non-free

538
00:23:43,060 --> 00:23:45,060
firmware, like, "can I

539
00:23:45,060 --> 00:23:46,920
run that stuff, you know,

540
00:23:46,920 --> 00:23:48,920
purely with free software?"

541
00:23:48,920 --> 00:23:51,260
...And...

542
00:23:51,260 --> 00:23:52,980
So, the thing with ARM is that

543
00:23:52,980 --> 00:23:54,980
there are a lot of different platforms

544
00:23:54,980 --> 00:23:56,980
I'm not sure about all of them,

545
00:23:56,980 --> 00:23:59,460
but some of the platforms

546
00:23:59,460 --> 00:24:01,960
I looked at, yes, you

547
00:24:01,960 --> 00:24:05,320
do need some... There is always something propietary.

548
00:24:06,460 --> 00:24:08,420
So in a lot of cases

549
00:24:08,420 --> 00:24:10,420
I see where you have

550
00:24:10,420 --> 00:24:13,580
you use the proprietary first-stage boot loader,

551
00:24:13,580 --> 00:24:16,160
so the Raspberry Pi is an example,

552
00:24:16,160 --> 00:24:18,540
so, I don't actually have a Raspberry Pi, but

553
00:24:18,540 --> 00:24:20,540
the way I understand it is

554
00:24:20,540 --> 00:24:23,060
you basically put some boot files

555
00:24:23,060 --> 00:24:25,060
in an SD card,

556
00:24:25,060 --> 00:24:27,060
and they are proprietary, and

557
00:24:27,060 --> 00:24:29,060
then they load the kernel.

558
00:24:29,060 --> 00:24:31,500
Or in case of [?]

559
00:24:31,500 --> 00:24:33,500
supported in Debian,

560
00:24:33,500 --> 00:24:35,500
the first stage boot loader would basically

561
00:24:35,500 --> 00:24:37,820
be used to run U-boot,

562
00:24:37,820 --> 00:24:40,140
and then we could use U-boot, and

563
00:24:40,140 --> 00:24:43,880
the U-boot support all of it is free software,

564
00:24:43,880 --> 00:24:46,440
but the first stage boot loader isn't.

565
00:24:46,440 --> 00:24:49,820
I have had, there are some people

566
00:24:49,820 --> 00:24:51,820
working on a free replacement for

567
00:24:51,820 --> 00:24:53,820
the Raspberry Pi, though.

568
00:24:53,820 --> 00:24:55,820
With nVidia Tegra,

569
00:24:55,820 --> 00:24:57,640
which is

570
00:24:57,640 --> 00:24:59,640
something I'm working on at the moment

571
00:24:59,640 --> 00:25:03,040
you also have a tiny first stage boot loader,

572
00:25:03,040 --> 00:25:05,940
but then again, you have U-boot, which is free,

573
00:25:05,940 --> 00:25:08,980
and in that case, you also have some firmware

574
00:25:08,980 --> 00:25:10,980
images for the GPU

575
00:25:10,980 --> 00:25:13,320
and for other stuff.

576
00:25:13,320 --> 00:25:15,980
For the Dragon board,

577
00:25:15,980 --> 00:25:18,980
The Dragon board sounded really interesting

578
00:25:18,980 --> 00:25:20,820
because it actually has a

579
00:25:20,820 --> 00:25:22,820
a graphics chip

580
00:25:22,820 --> 00:25:25,120
which can be used with free software,

581
00:25:25,120 --> 00:25:27,920
so that sounded pretty cool,

582
00:25:27,920 --> 00:25:30,340
but again, it has a

583
00:25:30,340 --> 00:25:32,460
proprietary first

584
00:25:32,460 --> 00:25:34,460
stage boot loader,

585
00:25:34,460 --> 00:25:36,460
and then there is a second stage boot loader

586
00:25:36,460 --> 00:25:38,460
which is actually open source

587
00:25:38,460 --> 00:25:41,520
and then there's actually a U-boot of that,

588
00:25:41,520 --> 00:25:44,600
and then you have some

589
00:25:44,600 --> 00:25:46,600
binary blobs which

590
00:25:46,600 --> 00:25:49,900
also need to be installed in flash to work properly

591
00:25:49,900 --> 00:25:51,900
On the Marvell side, I'm

592
00:25:51,900 --> 00:25:53,900
not really aware of anything.

593
00:25:53,900 --> 00:25:55,900
I have never needed to flash anything

594
00:25:55,900 --> 00:25:57,900
proprietary, but

595
00:25:57,900 --> 00:25:59,900
I'm not sure how U-boot gets started

596
00:25:59,900 --> 00:26:01,900
on Marvell, so maybe there is something.

597
00:26:04,380 --> 00:26:08,180
So the future is all... So NAS devices are

598
00:26:08,180 --> 00:26:09,800
like I said, that's something that's

599
00:26:09,800 --> 00:26:11,800
really been popular in Debian.

600
00:26:11,800 --> 00:26:15,480
Specially on the QNAP devices,

601
00:26:15,480 --> 00:26:17,480
but the problem is, so, QNAP...

602
00:26:17,480 --> 00:26:19,480
so the devices we currently support

603
00:26:19,480 --> 00:26:21,480
are pretty old

604
00:26:21,480 --> 00:26:23,480
nowadays,

605
00:26:23,480 --> 00:26:25,480
and they have some newer devices,

606
00:26:25,480 --> 00:26:27,740
but they are not properly supported

607
00:26:27,740 --> 00:26:29,740
in the upstream kernel.

608
00:26:29,740 --> 00:26:31,740
So, I have no plans

609
00:26:31,740 --> 00:26:33,740
to support Debian on those.

610
00:26:33,740 --> 00:26:36,920
I recently did some work on

611
00:26:36,920 --> 00:26:38,920
Seagate NAS devices

612
00:26:38,920 --> 00:26:42,500
which are actually pretty interesting

613
00:26:42,500 --> 00:26:44,500
but again, they will go out of date

614
00:26:44,500 --> 00:26:46,500
already,

615
00:26:46,500 --> 00:26:48,500
and then there's the whole 64 bit ARM

616
00:26:48,500 --> 00:26:50,500
so I think people are really waiting

617
00:26:50,500 --> 00:26:52,500
for arm64 servers

618
00:26:52,500 --> 00:26:54,720
I think there's going to be a whole lot of

619
00:26:54,720 --> 00:26:56,720
work on that area.

620
00:26:56,720 --> 00:26:59,460
And then, there are all of those development boards

621
00:26:59,460 --> 00:27:01,460
Raspberry Pi,

622
00:27:01,460 --> 00:27:03,460
Pine64,

623
00:27:03,460 --> 00:27:06,200
Allwinder,

624
00:27:06,200 --> 00:27:08,900
Basically, all of them

625
00:27:08,900 --> 00:27:10,900
sound exciting, but if you

626
00:27:10,900 --> 00:27:12,700
look at them, all of them

627
00:27:12,700 --> 00:27:14,700
have some upstream issues, so it's...

628
00:27:14,700 --> 00:27:18,340
It is really quite frustrating at the moment.

629
00:27:18,340 --> 00:27:20,340
But I think things are really

630
00:27:20,340 --> 00:27:22,800
moving [?]

631
00:27:22,800 --> 00:27:25,880
And then there's this 96Board initiative,

632
00:27:26,060 --> 00:27:28,540
which is actually done by Linaro,

633
00:27:28,540 --> 00:27:30,700
and, so, Linaro supports

634
00:27:30,700 --> 00:27:32,880
Linux on ARM, so you'd think, "wow,

635
00:27:32,880 --> 00:27:34,880
there are some really nice boards coming out!"

636
00:27:34,880 --> 00:27:37,340
and they differentiated

637
00:27:37,340 --> 00:27:39,940
between the consumer edition and the enterprise edition

638
00:27:39,940 --> 00:27:42,880
beside, I bought some consumer-edition boards,

639
00:27:42,880 --> 00:27:45,540
and it's really horrible.

640
00:27:45,540 --> 00:27:48,220
So first of all, I had to spend like half a day

641
00:27:48,220 --> 00:27:50,220
just putting the components

642
00:27:50,660 --> 00:27:53,100
because it uses, like, a nonstandard power supply,

643
00:27:53,100 --> 00:27:55,100
a nonstandard serial console,

644
00:27:55,100 --> 00:27:57,820
so finally I found

645
00:27:57,820 --> 00:28:00,280
all the pieces I needed, and then

646
00:28:00,280 --> 00:28:02,820
I was expecting, well, it's from Linaro!

647
00:28:02,820 --> 00:28:05,140
Surely everything just works upstream!

648
00:28:05,140 --> 00:28:07,600
But it doesn't. It's like

649
00:28:07,600 --> 00:28:09,600
yes, I can boot the Linux kernel,

650
00:28:09,600 --> 00:28:11,600
but there's no USB, there's no

651
00:28:11,600 --> 00:28:13,600
Wifi, no nothing...

652
00:28:15,080 --> 00:28:17,080
So, yes, that's a little bit frustrating.

653
00:28:17,080 --> 00:28:19,140
On the enterprise edition,

654
00:28:19,140 --> 00:28:21,140
I think that looks more interesting.

655
00:28:21,140 --> 00:28:23,140
You know, that's more standardized.

656
00:28:23,140 --> 00:28:26,620
But again, there have been some delays.

657
00:28:28,620 --> 00:28:32,620
[audience; unintellegible]

658
00:28:32,620 --> 00:28:34,620
Yes, OK.

659
00:28:34,620 --> 00:28:36,620
So that would be interesting to see.

660
00:28:36,620 --> 00:28:39,420
So, the questions that I actually have nowadays

661
00:28:39,420 --> 00:28:41,420
is, so...

662
00:28:41,420 --> 00:28:43,420
Because of those changes,

663
00:28:43,420 --> 00:28:45,420
because of having, you know,

664
00:28:45,420 --> 00:28:47,420
a mode of U-boot, most of those

665
00:28:47,420 --> 00:28:49,420
new devices having a U-boot

666
00:28:49,420 --> 00:28:50,880
with distro-support,

667
00:28:50,880 --> 00:28:53,040
having a kernel which, you know,

668
00:28:53,040 --> 00:28:55,040
one kernel image that works on all of those

669
00:28:55,040 --> 00:28:57,040
devices which are supported,

670
00:28:57,040 --> 00:28:59,560
it's really easy to support

671
00:28:59,560 --> 00:29:01,560
a new device?

672
00:29:01,560 --> 00:29:04,100
As long as it's supported by the kernel.

673
00:29:04,100 --> 00:29:06,360
But, at the same time, I think it's a big

674
00:29:06,360 --> 00:29:07,740
challenge for Debian.

675
00:29:07,740 --> 00:29:10,280
Because right now, if you look at armhf,

676
00:29:10,280 --> 00:29:12,220
we basically say, well,

677
00:29:12,220 --> 00:29:14,220
hint the installer,

678
00:29:14,220 --> 00:29:16,220
and if there's a device tree,

679
00:29:16,220 --> 00:29:18,220
it's probably going to work.

680
00:29:18,220 --> 00:29:21,180
But, what does that mean, right?

681
00:29:23,180 --> 00:29:25,180
And...

682
00:29:25,180 --> 00:29:28,140
which really work, which means,

683
00:29:28,140 --> 00:29:29,880
so, we have Vagrant

684
00:29:29,880 --> 00:29:31,880
having U-boot support

685
00:29:31,880 --> 00:29:33,880
in Debian, we have

686
00:29:33,880 --> 00:29:36,240
people testing debian-installer,

687
00:29:36,240 --> 00:29:38,240
testing the Debian kernel, so we have

688
00:29:38,240 --> 00:29:40,820
devices which really work, well supported,

689
00:29:40,820 --> 00:29:43,280
and then we have some devices

690
00:29:43,280 --> 00:29:45,580
on the other hand where, well, yes,

691
00:29:45,580 --> 00:29:47,580
there is a device tree, but no one

692
00:29:47,580 --> 00:29:49,580
has ever tried it. And

693
00:29:49,580 --> 00:29:51,580
at the moment, we have no way

694
00:29:51,580 --> 00:29:54,140
for users to differentiate

695
00:29:54,140 --> 00:29:56,540
those use case... Those

696
00:29:56,540 --> 00:29:58,540
support levels.

697
00:29:58,540 --> 00:30:00,540
So I'm wondering if we need

698
00:30:00,540 --> 00:30:02,540
like a table,

699
00:30:02,540 --> 00:30:04,540
somewhere where maybe

700
00:30:04,540 --> 00:30:06,540
some support levels, like green, yellow...

701
00:30:06,540 --> 00:30:08,120
red?

702
00:30:08,120 --> 00:30:10,120
Where green is, "yes, we have Debian

703
00:30:10,120 --> 00:30:12,120
people who have

704
00:30:12,120 --> 00:30:14,120
testing that stuff",

705
00:30:14,120 --> 00:30:16,120
yellow would be, "well, we have heard some report

706
00:30:16,120 --> 00:30:18,120
that it might work", and

707
00:30:18,120 --> 00:30:20,120
green is, you know, doesn't work,

708
00:30:20,120 --> 00:30:22,120
or we haven't tried that it works.

709
00:30:22,120 --> 00:30:24,120
Maybe we need something like that.

710
00:30:24,120 --> 00:30:26,360
But right now,

711
00:30:26,360 --> 00:30:28,360
I see from users

712
00:30:30,360 --> 00:30:32,360
"I want to run Debian on my ARM device", and

713
00:30:32,360 --> 00:30:35,380
they don't know if it's going to work.

714
00:30:35,380 --> 00:30:37,380
Yes, then...

715
00:30:37,380 --> 00:30:43,400
[audience; unintellegible]

716
00:30:43,400 --> 00:30:45,400
Yes, so Ben is saying we also need

717
00:30:45,400 --> 00:30:47,400
to track what the earliest and the latest

718
00:30:47,400 --> 00:30:49,620
kernel versions that there have been tested.

719
00:30:49,620 --> 00:30:51,800
So I think we really need to

720
00:30:51,800 --> 00:30:53,800
come up with some criteria

721
00:30:53,800 --> 00:30:58,920
to have, you know, define those kernel support levels that indicate that

722
00:30:58,920 --> 00:31:01,920
And yes, the other question is related

723
00:31:01,920 --> 00:31:03,260
to, with all those boards,

724
00:31:03,260 --> 00:31:05,260
how do we actually test them?

725
00:31:05,260 --> 00:31:07,000
So, I keep --

726
00:31:07,000 --> 00:31:10,100
it's really... remember [?]

727
00:31:10,100 --> 00:31:12,100
which is great, but also acknowledge

728
00:31:12,100 --> 00:31:14,100
those boards, they are so cheap!

729
00:31:14,100 --> 00:31:16,100
so it's like, "oh, there's a new board!

730
00:31:16,100 --> 00:31:18,100
It's £30! I'll just get it!"

731
00:31:18,100 --> 00:31:21,020
And then we have, like, those piles of boards

732
00:31:21,020 --> 00:31:23,020
and realize, well, I don't have time

733
00:31:23,020 --> 00:31:25,020
for testing all of that stuff!

734
00:31:25,020 --> 00:31:27,200
I think that's going to be a real challenge.

735
00:31:27,200 --> 00:31:29,320
hundreds -- I don't know,

736
00:31:29,320 --> 00:31:31,320
it's really hundreds of boards coming out.

737
00:31:31,320 --> 00:31:33,900
How do we support all of that?

738
00:31:35,460 --> 00:31:38,420
So, I think that's the question I wanted to raise,

739
00:31:38,420 --> 00:31:41,160
and maybe something we can talk about in the BoF

740
00:31:41,160 --> 00:31:43,380
But yes, I'm obviously

741
00:31:43,380 --> 00:31:45,380
open for questions now.

742
00:31:55,520 --> 00:31:57,520
[James / purpleidea:] Hello.

743
00:31:57,520 --> 00:32:00,200
So, don't quote me exactly,

744
00:32:00,200 --> 00:32:02,200
so, I believe

745
00:32:02,200 --> 00:32:04,200
RedHat has this problem as well, obviously,

746
00:32:04,200 --> 00:32:06,200
I mean, they are obviously more interested in the

747
00:32:06,200 --> 00:32:08,580
ARM64-only server stuff,

748
00:32:08,580 --> 00:32:10,580
but I believe the way they are going about it

749
00:32:10,580 --> 00:32:12,880
maybe it's something could collaborate on

750
00:32:12,880 --> 00:32:15,080
is, they are trying to make sure and push

751
00:32:15,080 --> 00:32:17,080
all the vendors to be standardized

752
00:32:17,080 --> 00:32:19,260
because, as you pointed out,

753
00:32:19,260 --> 00:32:21,540
it's just not, it's crazy

754
00:32:21,540 --> 00:32:24,540
with all the different device tree differences and so on,

755
00:32:24,540 --> 00:32:26,540
so I believe their strategy is to

756
00:32:26,540 --> 00:32:28,840
work with the vendors, and

757
00:32:28,840 --> 00:32:30,840
require everything to be upstreamed, and

758
00:32:30,840 --> 00:32:32,840
no device tree

759
00:32:32,840 --> 00:32:34,840
specifically, to push everything to just boot

760
00:32:34,840 --> 00:32:36,840
with one kernel, and so on.

761
00:32:36,840 --> 00:32:38,840
So maybe that could be

762
00:32:38,840 --> 00:32:40,840
sacrifice a few of the

763
00:32:40,840 --> 00:32:42,840
shitty boards, but work with the vendors

764
00:32:42,840 --> 00:32:45,820
that make the ones that are upstreamed.

765
00:32:45,820 --> 00:32:47,820
[Martin:] Yes, so I may be mistaken, but

766
00:32:47,820 --> 00:32:49,820
as far as I know, RedHat

767
00:32:49,820 --> 00:32:51,620
basically says, "we only support

768
00:32:51,620 --> 00:32:53,620
UEFI and ACPI"

769
00:32:53,620 --> 00:32:55,620
and that's fair enough,

770
00:32:55,620 --> 00:32:57,620
and I think that works for them, because

771
00:32:57,620 --> 00:32:59,900
it's just the server world they care about,

772
00:32:59,900 --> 00:33:01,900
but I think in the case of Debian

773
00:33:01,900 --> 00:33:03,900
there are so many boards out there which

774
00:33:03,900 --> 00:33:05,900
don't need those specs,

775
00:33:05,900 --> 00:33:08,600
and we sort of live, like, in the "real world"

776
00:33:08,600 --> 00:33:10,980
so I don't think we can

777
00:33:10,980 --> 00:33:12,980
Well -- I know it's different. I mean,

778
00:33:12,980 --> 00:33:14,980
if RedHat wants to target

779
00:33:14,980 --> 00:33:16,980
the server people, like, the people

780
00:33:16,980 --> 00:33:18,980
which give money

781
00:33:18,980 --> 00:33:20,980
that's fair enough, that makes sense for them

782
00:33:20,980 --> 00:33:22,980
but Debian, we run everywhere

783
00:33:22,980 --> 00:33:24,980
so I think we need to support

784
00:33:24,980 --> 00:33:26,980
all those weird

785
00:33:26,980 --> 00:33:28,980
cases as well.

786
00:33:28,980 --> 00:33:30,980
And maybe if it gets too weird,

787
00:33:30,980 --> 00:33:32,980
I mean,

788
00:33:32,980 --> 00:33:35,360
I put in some work in the Dragonboard,

789
00:33:35,360 --> 00:33:37,360
and then I realized,

790
00:33:37,360 --> 00:33:39,360
am I actually spending the time because

791
00:33:39,360 --> 00:33:41,360
no one, like, I have heard

792
00:33:41,360 --> 00:33:43,360
from no one that they have

793
00:33:43,360 --> 00:33:45,360
that board, I mean, like [?]

794
00:33:45,360 --> 00:33:47,360
for the Raspberry Pi, but I have heard

795
00:33:47,360 --> 00:33:49,360
like, pretty much no one has the

796
00:33:49,360 --> 00:33:51,360
Dragonboard, so maybe,

797
00:33:51,360 --> 00:33:53,920
...it's not worth my while,

798
00:33:53,920 --> 00:33:55,920
but if there's a board

799
00:33:55,920 --> 00:33:57,920
that people want to use it,

800
00:33:57,920 --> 00:34:00,340
I think we should support it in Debian.

801
00:34:00,340 --> 00:34:02,340
And we do have the infrastructure

802
00:34:02,340 --> 00:34:04,340
so we, you know, it doesn't have to be

803
00:34:04,340 --> 00:34:06,340
UEFI and ACPI,

804
00:34:06,340 --> 00:34:08,340
we can support other devices, because

805
00:34:08,340 --> 00:34:10,340
we have done it before.

806
00:34:10,340 --> 00:34:12,340
But I definitively agree with

807
00:34:12,340 --> 00:34:14,960
the point about getting more standardization

808
00:34:14,960 --> 00:34:16,960
and that stuff, so

809
00:34:16,960 --> 00:34:18,960
I agree, yes.

810
00:34:20,360 --> 00:34:22,920
And the whole distro-support

811
00:34:22,920 --> 00:34:25,600
in U-boot, that has really made things easier for us.

812
00:34:33,219 --> 00:34:35,880
[Phil:] I may begin to say some of the same things Steve has, anyway.

813
00:34:35,880 --> 00:34:38,500
Steve]: So, yes, on the

814
00:34:38,500 --> 00:34:41,219
ACPI versus DT thing,

815
00:34:41,219 --> 00:34:43,219
it's more a question

816
00:34:43,219 --> 00:34:45,980
of the quality of the implementation of the

817
00:34:45,980 --> 00:34:48,800
of the firmware,

818
00:34:48,800 --> 00:34:50,800
and the upstream support that is...

819
00:34:50,800 --> 00:34:52,800
DT isn't fundamentally

820
00:34:52,800 --> 00:34:55,260
worse for upstream support

821
00:34:55,260 --> 00:34:57,780
than ACPI is,

822
00:34:57,780 --> 00:35:00,980
RedHat are

823
00:35:00,980 --> 00:35:02,980
have some reasons

824
00:35:02,980 --> 00:35:04,980
[?] of sensibility,

825
00:35:04,980 --> 00:35:06,980
but then, it's not

826
00:35:06,980 --> 00:35:09,380
fundamentally, it doesn't fundamentally stop it

827
00:35:09,380 --> 00:35:11,380
people supporting it, specially

828
00:35:11,380 --> 00:35:13,380
a community distro like Debian.

829
00:35:13,380 --> 00:35:16,340
I was also going to ask Martin,

830
00:35:16,340 --> 00:35:18,340
have you talked to

831
00:35:18,340 --> 00:35:20,560
people like kernel CI

832
00:35:20,560 --> 00:35:24,660
about testing and coverage stuff?

833
00:35:24,660 --> 00:35:26,660
[Martin:] Yes, not really, but

834
00:35:26,660 --> 00:35:29,740
I think there are some things we should look into.

835
00:35:29,740 --> 00:35:31,740
[Steve:] Yes, because the whole --

836
00:35:31,740 --> 00:35:33,740
Obviously, making sure the kernel boots

837
00:35:33,740 --> 00:35:35,740
on random hardware

838
00:35:35,740 --> 00:35:38,080
stuff, is exactly what that's doing

839
00:35:39,740 --> 00:35:42,360
and there's at least infrastructure there that might be

840
00:35:42,360 --> 00:35:44,740
nice to play with.

841
00:35:46,480 --> 00:35:48,480
[Martin:] Yes. I think that's a good idea.

842
00:35:50,480 --> 00:35:52,480
[sledge:] So, on the whole 96Boards thing,

843
00:35:52,480 --> 00:35:54,480
sorry!

844
00:35:54,480 --> 00:35:56,480
Most of the engineers involved

845
00:35:56,480 --> 00:35:58,480
are totally aware of

846
00:35:58,480 --> 00:36:00,480
how [?] it really is.

847
00:36:00,480 --> 00:36:02,480
We tried to tell management

848
00:36:02,480 --> 00:36:04,480
they would --

849
00:36:04,480 --> 00:36:06,480
They don't want to listen.

850
00:36:06,480 --> 00:36:08,480
Umm.. So,

851
00:36:08,480 --> 00:36:10,480
there has been a huge amount of pushback

852
00:36:10,480 --> 00:36:13,000
saying, you know, "we're Linaro

853
00:36:13,000 --> 00:36:15,380
we should make sure this is all upstreamed".

854
00:36:17,380 --> 00:36:19,380
[Martin:] Well, I am aware

855
00:36:19,380 --> 00:36:21,380
it's just, Linaro

856
00:36:21,380 --> 00:36:23,380
has a really good brand,

857
00:36:23,380 --> 00:36:25,380
so people expect, you know, when I saw

858
00:36:25,380 --> 00:36:27,380
96Boards it's Linaro,

859
00:36:27,380 --> 00:36:29,800
obviously that stuff it's going to work!

860
00:36:29,800 --> 00:36:31,800
and that's why I was really disappointed.

861
00:36:31,800 --> 00:36:33,800
[Steve:] One positive thing there

862
00:36:33,800 --> 00:36:35,800
is that the first DE board

863
00:36:35,800 --> 00:36:38,300
the SoC does basically work upstream

864
00:36:38,300 --> 00:36:40,440
already with current upstream kernel

865
00:36:40,440 --> 00:36:42,440
it's not like there's some patches still

866
00:36:42,440 --> 00:36:44,440
to go in. Apart from the PCI, it should basically

867
00:36:44,440 --> 00:36:47,400
work... So, hopefully,

868
00:36:47,400 --> 00:36:49,820
hopefully, that's going to be a much

869
00:36:49,820 --> 00:36:51,820
less spectacular

870
00:36:51,820 --> 00:36:53,820
story than the

871
00:36:53,820 --> 00:36:55,820
consumer-edition boards have been.

872
00:36:55,820 --> 00:36:57,820
As they are unfortunate.

873
00:37:01,860 --> 00:37:03,860
[Sledge:] The first EE board

874
00:37:03,860 --> 00:37:05,860
the [?]board, is due to start shipping

875
00:37:05,860 --> 00:37:07,860
really soon now.

876
00:37:07,860 --> 00:37:09,860
There are examples already out there

877
00:37:09,860 --> 00:37:11,860
with engineers for validation.

878
00:37:11,860 --> 00:37:14,300
Literally, we are talking the next couple of weeks

879
00:37:14,300 --> 00:37:16,300
is what I have been told.

880
00:37:16,300 --> 00:37:18,700
That's the first 96Boards I would

881
00:37:18,700 --> 00:37:20,700
actually spend any time on at all personally,

882
00:37:20,700 --> 00:37:23,240
the CE boards are a joke.

883
00:37:29,020 --> 00:37:31,020
I forgot what else I was going to say. Oh!

884
00:37:31,020 --> 00:37:33,020
Yes! Then...

885
00:37:33,020 --> 00:37:35,380
I guess we will go through a lot of this again

886
00:37:35,380 --> 00:37:37,380
in the ARM BoF later on

887
00:37:37,380 --> 00:37:39,480
in terms of

888
00:37:39,480 --> 00:37:41,480
which things we support.

889
00:37:44,660 --> 00:37:46,660
We will carry on with the discussion.

890
00:37:54,720 --> 00:37:57,560
[Vagrant:] Um... Is this working?

891
00:37:57,560 --> 00:37:59,560
Yes, so...

892
00:37:59,560 --> 00:38:01,560
We have got all this great support for

893
00:38:01,560 --> 00:38:03,560
distro-boot command and U-boot, and

894
00:38:03,560 --> 00:38:05,560
now we are starting to get

895
00:38:05,560 --> 00:38:07,560
to UEFI emulation

896
00:38:07,560 --> 00:38:09,560
in U-boot, so even for boards

897
00:38:09,560 --> 00:38:11,560
that don't have UEFI emulation--

898
00:38:11,560 --> 00:38:13,560
UEFI support, if they support

899
00:38:13,560 --> 00:38:15,560
U-boot, it might work

900
00:38:15,560 --> 00:38:17,560
although that means all the standarization

901
00:38:17,560 --> 00:38:19,560
we worked towards, we throw it away.,

902
00:38:19,560 --> 00:38:21,560
Meh!

903
00:38:23,560 --> 00:38:26,300
[Martin:] Yes, I think that's something we need to figure out,

904
00:38:26,300 --> 00:38:29,240
which one do we want to standardize on,

905
00:38:29,240 --> 00:38:31,240
or is that something we want to

906
00:38:31,240 --> 00:38:33,240
leave up to the user.

907
00:38:33,240 --> 00:38:35,480
but yes,

908
00:38:35,480 --> 00:38:37,560
I mean, I think one

909
00:38:37,560 --> 00:38:39,560
I mean, I guess it was

910
00:38:39,560 --> 00:38:41,560
so confusing, because there are like

911
00:38:41,560 --> 00:38:43,560
all those different ways, but

912
00:38:44,920 --> 00:38:46,920
what I really wanted to show is that

913
00:38:46,920 --> 00:38:48,920
things are getting much more

914
00:38:48,920 --> 00:38:51,100
standardized and much better.

915
00:38:51,100 --> 00:38:53,560
So, it used to be really

916
00:38:53,560 --> 00:38:55,560
pretty horrible, and nowadays,

917
00:38:55,560 --> 00:38:57,560
you know, if a platform

918
00:38:57,560 --> 00:38:59,560
uses a modern

919
00:38:59,560 --> 00:39:01,560
U-boot, if it has

920
00:39:01,560 --> 00:39:03,560
upstream support, then it is

921
00:39:03,560 --> 00:39:05,560
actually pretty trivial to add

922
00:39:05,560 --> 00:39:07,560
Debian support, and

923
00:39:07,560 --> 00:39:09,560
I think that wasn't the case

924
00:39:09,560 --> 00:39:10,660
in the past.

925
00:39:10,660 --> 00:39:12,660
I think Ben had another one?

926
00:39:20,800 --> 00:39:23,580
[Ben:] So, I'm

927
00:39:26,540 --> 00:39:29,960
[laughs]

928
00:39:29,960 --> 00:39:33,280
I'm interested to know how much

929
00:39:33,280 --> 00:39:36,080
how much interest there is among the ARM porters

930
00:39:36,080 --> 00:39:38,500
in graphics support.

931
00:39:38,500 --> 00:39:40,380
GPU support, rather

932
00:39:40,380 --> 00:39:42,380
than settling for dumb framebuffers.

933
00:39:42,380 --> 00:39:44,380
How many...

934
00:39:44,380 --> 00:39:46,380
How many of these boards...

935
00:39:46,380 --> 00:39:48,380
Quite a lot of these boards do have HDMI

936
00:39:48,380 --> 00:39:50,380
and I don't know

937
00:39:50,380 --> 00:39:52,780
to what degree they are actually supported.

938
00:39:52,780 --> 00:39:56,380
Are any current projected work

939
00:39:56,380 --> 00:40:00,280
which definitively is using the

940
00:40:00,280 --> 00:40:04,700
GPU on ARM system, and

941
00:40:04,700 --> 00:40:07,320
what's in Debian,

942
00:40:07,320 --> 00:40:09,520
is the Debian base system

943
00:40:09,780 --> 00:40:12,480
does Debian... What's in Debian does not

944
00:40:12,480 --> 00:40:14,480
support GPU.

945
00:40:14,480 --> 00:40:17,980
[Martin:] So, I can't speak for Vagrant...

946
00:40:17,980 --> 00:40:19,980
I have personally done some work

947
00:40:19,980 --> 00:40:21,980
on the Tegra recently,

948
00:40:21,980 --> 00:40:23,980
and nVidia is actually

949
00:40:23,980 --> 00:40:27,120
working upstream on [?]

950
00:40:27,120 --> 00:40:29,640
so I'm really interested in it

951
00:40:29,640 --> 00:40:31,640
but I think that a lot of

952
00:40:31,640 --> 00:40:33,640
the board used, there's money

953
00:40:33,640 --> 00:40:37,160
GPUs I'm not sure would be

954
00:40:37,160 --> 00:40:40,380
...you can get a [laughs]

955
00:40:40,380 --> 00:40:43,760
can we get a microphone for Steve?

956
00:40:51,780 --> 00:40:53,780
[Sledge:] So, on the Mali front,

957
00:40:53,780 --> 00:40:55,240
there has been a lot of haste where we

958
00:40:55,240 --> 00:40:57,240
have been scared of releasing any of this

959
00:40:57,240 --> 00:40:59,880
in any way, shape or form,

960
00:40:59,880 --> 00:41:01,880
without huge

961
00:41:01,880 --> 00:41:04,580
[?]-relays and all that kind of stuff.

962
00:41:04,580 --> 00:41:06,880
So it's not really distributable.

963
00:41:06,880 --> 00:41:08,880
Even, at all.

964
00:41:08,880 --> 00:41:12,300
We are a long way of it being releasable free,

965
00:41:12,300 --> 00:41:15,640
There are packages coming that we

966
00:41:15,640 --> 00:41:17,640
should be getting shippable in non-free

967
00:41:17,640 --> 00:41:19,640
at least if you want to get full acceleration

968
00:41:19,640 --> 00:41:21,640
on your Mali stuff.

969
00:41:23,640 --> 00:41:25,640
Hopefully, that will solve some of the problems

970
00:41:25,640 --> 00:41:27,640
There is a lot, there are a lot of people

971
00:41:27,640 --> 00:41:29,640
in [?] who are very very keen on

972
00:41:29,640 --> 00:41:32,180
supporting it properly, free and upstreamed.

973
00:41:32,180 --> 00:41:34,620
It's a long fight.

974
00:41:34,620 --> 00:41:35,940
It will take a while.

975
00:41:35,940 --> 00:41:39,040
I mean, most of the Mali driver developers

976
00:41:39,040 --> 00:41:41,040
themselves I have spoken to, would love to

977
00:41:41,040 --> 00:41:43,040
make it free. It just comes down

978
00:41:43,040 --> 00:41:45,040
to legal people

979
00:41:45,040 --> 00:41:47,040
being scared.

980
00:41:53,040 --> 00:41:55,040
[Tobi:] Are there some questions left?

981
00:41:58,780 --> 00:42:00,080
[Martin:] Well, thanks for coming!

982
00:42:00,080 --> 00:42:02,080
And there is going to be the ARM BoF

983
00:42:02,080 --> 00:42:04,080
later today, and

984
00:42:04,080 --> 00:42:06,080
Vagrant is also going to talk about his experience

985
00:42:06,080 --> 00:42:09,760
about running a build network

986
00:42:09,760 --> 00:42:11,760
on armhf boards..

987
00:42:11,760 --> 00:42:13,160
Thanks!

988
00:42:18,060 --> 00:42:20,060
[audience clapping]
