Subtitles for Martin Michlmayr's «Debian on ARM devices» DC16 talk
[debconfsubs/debconfsubs.git] / 2016 / debconf16 / Debian_on_ARM_devices.srt
1 1
2 00:00:03,060 --> 00:00:05,000
3  So, I think we are ready to start
4
5 2
6 00:00:05,020 --> 00:00:08,770
7 So, next talk is from Martin, about Debian on ARM devices.
8
9 3
10 00:00:14,210 --> 00:00:21,530
11 So, it's Debian on ARM devices, it's not about the Debian ARM port itself, or any of the various ARM ports
12
13 4
14 00:00:21,970 --> 00:00:27,130
15 I would say it's sort of a mix of different topics
16
17 5
18 00:00:27,130 --> 00:00:27,280
19 it's basically ---
20
21 6
22 00:00:27,280 --> 00:00:29,130
23 I mean, basically I often get
24 it's basically ---
25
26 7
27 00:00:29,130 --> 00:00:32,020
28 I mean, basically I often get
29
30 8
31 00:00:32,080 --> 00:00:35,240
32 the question from users
33
34 9
35 00:00:35,530 --> 00:00:38,930
36 "Well, Debian works on this particular ARM device,
37
38 10
39 00:00:39,110 --> 00:00:42,080
40 I have a device which is like really really similar,
41
42 11
43 00:00:42,080 --> 00:00:44,860
44 so surely Debian should work on it, right?"
45
46 12
47 00:00:44,860 --> 00:00:48,640
48 And so far, the answer unfortunately was usually "no"
49
50 13
51 00:00:48,640 --> 00:00:53,020
52 and - and it's really frustrating for users
53
54 14
55 00:00:53,020 --> 00:00:55,530
56 because they don't see why.
57
58 15
59 00:00:55,530 --> 00:00:58,570
60 You know, the device is very much the same, so why doesn't it just work.
61
62 16
63 00:00:58,570 --> 00:01:01,310
64 And so, basically what I'm trying to do is
65
66 17
67 00:01:01,310 --> 00:01:04,040
68 to show like a little bit behind the scenes
69
70 18
71 00:01:04,040 --> 00:01:06,510
72 of how Debian on ARM works
73
74 19
75 00:01:07,040 --> 00:01:09,620
76  And there has been a whole lot of progres
77
78 20
79 00:01:09,620 --> 00:01:13,130
80  So I'm going to show how <i>did</i> it work,
81
82 21
83 00:01:13,130 --> 00:01:15,130
84 what are the improvements, and
85
86 22
87 00:01:15,130 --> 00:01:17,600
88 and how is it going to work in the future
89
90 23
91 00:01:19,930 --> 00:01:21,880
92 And it's all more from a develeoper perspective
93
94 24
95 00:01:22,110 --> 00:01:25,880
96 so, it's like, how do we support it in the Debian Installer
97
98 25
99 00:01:26,220 --> 00:01:31,440
100 its' like a mix of stuff, and I should say,
101
102 26
103 00:01:31,680 --> 00:01:35,110
104 I'm really looking at it from somebody who basically
105
106 27
107 00:01:35,110 --> 00:01:37,510
108 adds support for devices in the installer
109
110 28
111 00:01:37,510 --> 00:01:40,460
112 but I'm not like a kernel guy or anything, so
113
114 29
115 00:01:40,460 --> 00:01:45,060
116 there are a lot of people in this room who know a bit more about the technical details
117
118 30
119 00:01:45,400 --> 00:01:48,800
120 but I'm not going to really drill down really deep down anyway
121
122 31
123 00:01:48,800 --> 00:01:51,680
124 But if I'm incorrect, I'm sure that
125
126 32
127 00:01:51,680 --> 00:01:53,680
128 there are plenty of people that will correct me.
129
130 33
131 00:01:54,170 --> 00:02:00,820
132 So, where do you find ARM? So it's pretty much everywhere these days, I mean...
133
134 34
135 00:02:01,150 --> 00:02:05,040
136 Pretty much every phone has an ARM chip in it
137
138 35
139 00:02:07,480 --> 00:02:11,950
140 All those "Internet of Things" gadgets are ARM-based
141
142 36
143 00:02:12,530 --> 00:02:18,480
144 You have NAS devices, and that's really the area I used to focus on
145
146 37
147 00:02:19,020 --> 00:02:22,600
148 those small boxes where you basically add a hard drive
149
150 38
151 00:02:22,600 --> 00:02:26,730
152 and most people just use it for storage, but it's actually a
153
154 39
155 00:02:27,130 --> 00:02:30,150
156 full PC where you can install Debian on it
157
158 40
159 00:02:30,640 --> 00:02:33,930
160 so I always found that to be very interesting
161
162 41
163 00:02:34,280 --> 00:02:37,310
164 and nowadays you have a lot of development boards
165
166 42
167 00:02:37,460 --> 00:02:41,280
168 And I'm not sure whether "development boards" is the right word
169
170 43
171 00:02:41,280 --> 00:02:45,130
172 Because when I hear "development boards" I think of it as really expensive,
173
174 44
175 00:02:45,640 --> 00:02:48,110
176 Like 5K for boards or something
177
178 45
179 00:02:48,420 --> 00:02:52,400
180 But nowadays you have those, maybe, a better board would be like bareboards
181
182 46
183 00:02:52,400 --> 00:02:56,200
184 Like "Raspberry Pi", like basically it's just the board
185
186 47
187 00:02:56,200 --> 00:02:59,820
188 it does not come with a case, you can buy those as well
189
190 48
191 00:02:59,820 --> 00:03:03,060
192 and it's like 30 dollars or something, you can get
193
194 49
195 00:03:03,370 --> 00:03:06,530
196 And that gets pretty much where most of the
197
198 50
199 00:03:06,530 --> 00:03:10,950
200 excitement is going for Debian users at this moment
201
202 51
203 00:03:11,220 --> 00:03:13,930
204 And that can cause a lot of frustration
205
206 52
207 00:03:16,640 --> 00:03:20,150
208 And everybody says that ARM is going to be big on servers
209
210 53
211 00:03:20,150 --> 00:03:24,020
212 and I think that's something we ar going to see
213
214 54
215 00:03:24,020 --> 00:03:26,600
216 But right now, again, it's
217
218 55
219 00:03:26,600 --> 00:03:28,600
220 a little bit frustrating
221
222 56
223 00:03:30,600 --> 00:03:34,000
224 How does it work as a Deban Installer
225
226 57
227 00:03:34,000 --> 00:03:36,000
228  There are basically two
229
230 58
231 00:03:36,970 --> 00:03:40,280
232  ways of installing on those ARM Pi devices
233
234 59
235 00:03:41,020 --> 00:03:44,350
236 So the, like, historic, that we normally
237
238 60
239 00:03:44,350 --> 00:03:47,950
240 would be to install on, like, ascreen
241
242 61
243 00:03:47,950 --> 00:03:49,950
244 can be a serial console,
245
246 62
247 00:03:50,310 --> 00:03:54,550
248 and then you just download via the network
249
250 63
251 00:03:54,750 --> 00:03:58,970
252 and then you just download via the network
253
254 64
255 00:03:58,970 --> 00:04:00,970
256 from a CD image or wherever,
257
258 65
259 00:04:00,970 --> 00:04:04,660
260  But the other method, which we actually use for those
261
262 66
263 00:04:04,660 --> 00:04:07,910
264 net devices was a network console
265
266 67
267 00:04:07,910 --> 00:04:11,460
268 where you basically ssh into the installer
269
270 68
271 00:04:11,730 --> 00:04:14,440
272 and you perform the installation via ssh
273
274 69
275 00:04:15,400 --> 00:04:19,840
276  and that was really the only way, because those mass devices
277
278 70
279 00:04:19,840 --> 00:04:22,950
280 don't have any I/O, so I
281
282 71
283 00:04:23,200 --> 00:04:25,370
284 even in there, you can
285
286 72
287 00:04:25,370 --> 00:04:28,080
288 it's just a serial console, most of them
289
290 73
291 00:04:28,330 --> 00:04:32,000
292 That's something we didn't want to require from the user
293
294 74
295 00:04:33,220 --> 00:04:36,840
296  And the other thing that's coming through, I think that it's basically cool that was announce today,
297
298 75
299 00:04:36,840 --> 00:04:38,840
300  screen support, so basically
301
302 76
303 00:04:40,020 --> 00:04:43,330
304 so you can have multiple sessions with in vi,
305
306 77
307 00:04:43,330 --> 00:04:47,110
308 which can be useful if you have an open shell to debug
309
310 78
311 00:04:49,110 --> 00:04:53,500
312 And so, how -- And so, this is really looking back at
313
314 79
315 00:04:53,500 --> 00:04:55,500
316 like running Debian on NAS devices
317
318 80
319 00:04:55,500 --> 00:04:58,420
320 which is something that used to be really popular
321
322 81
323 00:04:58,420 --> 00:05:02,500
324 And the way it worked was basically
325
326 82
327 00:05:02,500 --> 00:05:05,200
328 that we provided an installer image
329
330 83
331 00:05:05,200 --> 00:05:07,200
332 which was sort of a firmware image
333
334 84
335 00:05:07,200 --> 00:05:09,200
336 as a lot of those NAS devices
337
338 85
339 00:05:09,200 --> 00:05:12,080
340 have like a firmware upgrade mechanism
341
342 86
343 00:05:12,240 --> 00:05:14,180
344 and so we would basically fake
345
346 87
347 00:05:14,180 --> 00:05:17,240
348 we would create a firmware image
349
350 88
351 00:05:17,300 --> 00:05:19,520
352 which the software would accept
353
354 89
355 00:05:19,600 --> 00:05:22,460
356 but instead of a firmware update
357
358 90
359 00:05:22,540 --> 00:05:24,840
360 it would actually contain the Debian installer
361
362 91
363 00:05:24,840 --> 00:05:27,620
364 so you would install that upgrade
365
366 92
367 00:05:27,640 --> 00:05:30,080
368 you would reboot, and
369
370 93
371 00:05:30,080 --> 00:05:32,860
372 you could ssh to the installer
373
374 94
375 00:05:32,920 --> 00:05:36,360
376 and obviously, in order to ssh to the installer
377
378 95
379 00:05:36,360 --> 00:05:38,020
380 it needs to bring up the network
381
382 96
383 00:05:38,020 --> 00:05:41,060
384 and there is a tool called oldsys-preseed
385
386 97
387 00:05:41,060 --> 00:05:43,280
388 that basically reads the network configuration
389
390 98
391 00:05:43,280 --> 00:05:45,280
392 from the device
393
394 99
395 00:05:45,280 --> 00:05:47,280
396 and then sets up the network
397
398 100
399 00:05:47,280 --> 00:05:51,820
400 and it can always recognize the DHCP
401
402 101
403 00:05:51,820 --> 00:05:53,820
404 and then the user connects via ssh
405
406 102
407 00:05:53,820 --> 00:05:57,600
408 again, there would be some indication, maybe
409
410 103
411 00:05:57,600 --> 00:05:59,600
412 you know, there would be a "beep"
413
414 104
415 00:05:59,600 --> 00:06:01,260
416 or maybe change the LED
417
418 105
419 00:06:01,260 --> 00:06:03,260
420 to indicate that the installer is ready
421
422 106
423 00:06:03,260 --> 00:06:05,260
424 and then, the user basically performs
425
426 107
427 00:06:05,260 --> 00:06:07,260
428 a regular installation
429
430 108
431 00:06:07,260 --> 00:06:09,260
432 with normal d-i; they don't have to
433
434 109
435 00:06:09,260 --> 00:06:11,260
436 do anything differently.
437
438 110
439 00:06:12,320 --> 00:06:14,520
440 And at the end, flash-kernel runs
441
442 111
443 00:06:14,520 --> 00:06:17,340
444 to make the system bootable
445
446 112
447 00:06:17,340 --> 00:06:20,460
448 flash-kernel is called that way
449
450 113
451 00:06:20,460 --> 00:06:20,660
452 because it used to support
453 flash-kernel is called that way
454
455 114
456 00:06:20,660 --> 00:06:22,660
457 because it used to support
458
459 115
460 00:06:22,660 --> 00:06:25,380
461 like the initial device it supported
462
463 116
464 00:06:25,380 --> 00:06:27,380
465 booted from flash
466
467 117
468 00:06:27,380 --> 00:06:29,380
469 but it also generates bootable devices
470
471 118
472 00:06:29,380 --> 00:06:31,380
473 bootable images of disk devices
474
475 119
476 00:06:34,180 --> 00:06:36,560
477 so it really, flash-kernel really requires
478
479 120
480 00:06:36,560 --> 00:06:38,560
481 understanding of each device
482
483 121
484 00:06:38,560 --> 00:06:41,080
485 and our philosophy
486
487 122
488 00:06:41,080 --> 00:06:43,080
489 in those cases, with those NAS devices
490
491 123
492 00:06:43,080 --> 00:06:44,040
493 was really,
494
495 124
496 00:06:44,040 --> 00:06:46,040
497 we don't touch anything
498
499 125
500 00:06:46,040 --> 00:06:48,040
501 in the firmware, like
502
503 126
504 00:06:48,040 --> 00:06:50,040
505 in the configuration,
506
507 127
508 00:06:50,040 --> 00:06:52,040
509 so sometimes
510
511 128
512 00:06:52,040 --> 00:06:54,700
513 instead of changing the root device
514
515 129
516 00:06:54,700 --> 00:06:56,700
517 in the u-boot config we would actually
518
519 130
520 00:06:56,700 --> 00:06:58,700
521 hard-code that in the ramdisk
522
523 131
524 00:06:58,700 --> 00:07:02,720
525 just because we wanted people to go back
526
527 132
528 00:07:02,720 --> 00:07:05,160
529 to the original firmware if they had to
530
531 133
532 00:07:05,160 --> 00:07:07,700
533 if they had to send it in for repair or something
534
535 134
536 00:07:07,700 --> 00:07:09,700
537 and
538
539 135
540 00:07:09,700 --> 00:07:12,500
541 and that kind of approach really worked well
542
543 136
544 00:07:12,500 --> 00:07:14,500
545 so I think we really had a lot of
546
547 137
548 00:07:14,500 --> 00:07:16,500
549 people, lot of users running
550
551 138
552 00:07:16,500 --> 00:07:18,500
553 in Debian in those kind of NAS devices
554
555 139
556 00:07:18,500 --> 00:07:20,860
557 and it was really easy to do.
558
559 140
560 00:07:20,860 --> 00:07:22,580
561 You get a firmware image,
562
563 141
564 00:07:22,580 --> 00:07:25,380
565 you connect to the installer via ssh,
566
567 142
568 00:07:25,380 --> 00:07:27,380
569 and it just works, it's a normal
570
571 143
572 00:07:27,380 --> 00:07:28,620
573 debian-installer, the way
574
575 144
576 00:07:28,620 --> 00:07:30,620
577 everybody knows it,
578
579 145
580 00:07:30,620 --> 00:07:32,620
581 because some of the other distros
582
583 146
584 00:07:32,620 --> 00:07:33,820
585 they basically provide, like,
586
587 147
588 00:07:33,820 --> 00:07:35,240
589 tarballs and instructions
590
591 148
592 00:07:35,240 --> 00:07:37,240
593 so you need to partition a disk,
594
595 149
596 00:07:37,240 --> 00:07:39,240
597 need to un-tar it,
598
599 150
600 00:07:39,240 --> 00:07:41,240
601 you need to change those files,
602
603 151
604 00:07:41,240 --> 00:07:43,240
605 and even if it sounds simple,
606
607 152
608 00:07:43,240 --> 00:07:45,240
609 it's so many steps that
610
611 153
612 00:07:45,240 --> 00:07:47,620
613 you always... you often get something wrong
614
615 154
616 00:07:47,620 --> 00:07:50,380
617 and then you put the drive into the
618
619 155
620 00:07:50,380 --> 00:07:52,380
621 NAS device, and it doesn't boot, and you don't know why
622
623 156
624 00:07:52,380 --> 00:07:54,800
625 where did you make that mistake,
626
627 157
628 00:07:54,800 --> 00:07:56,000
629 which step
630
631 158
632 00:07:56,000 --> 00:07:58,000
633 and you basically have to start from scratch
634
635 159
636 00:07:58,000 --> 00:08:00,440
637 so Debian really provided something unique
638
639 160
640 00:08:00,440 --> 00:08:02,440
641 by adding
642
643 161
644 00:08:02,440 --> 00:08:04,440
645 the debian-installer support
646
647 162
648 00:08:04,440 --> 00:08:06,440
649 but anyway, that's the way
650
651 163
652 00:08:06,440 --> 00:08:08,440
653 it sort of used to work.
654
655 164
656 00:08:08,440 --> 00:08:10,440
657 Nowadays, with a lot of those bareboard
658
659 165
660 00:08:10,440 --> 00:08:12,440
661 it's much easier
662
663 166
664 00:08:12,440 --> 00:08:14,440
665 I'll get to that.
666
667 167
668 00:08:15,180 --> 00:08:18,100
669 So at the moment there are three different ARM ports:
670
671 168
672 00:08:18,100 --> 00:08:20,100
673 There is the old armel
674
675 169
676 00:08:20,100 --> 00:08:22,100
677 which used to be the "newer" ARM
678
679 170
680 00:08:22,100 --> 00:08:24,820
681 and now it's old,
682
683 171
684 00:08:24,820 --> 00:08:26,820
685 and one of the discussions
686
687 172
688 00:08:26,820 --> 00:08:28,820
689 that we are probably going to have later today on the BoF
690
691 173
692 00:08:28,820 --> 00:08:31,220
693 is about, should we remove that
694
695 174
696 00:08:31,220 --> 00:08:33,220
697 after Stretch.
698
699 175
700 00:08:33,220 --> 00:08:36,440
701 There is armhf and the arm64
702
703 176
704 00:08:37,640 --> 00:08:40,540
705 and we get basically the question I hope to answer.
706
707 177
708 00:08:40,540 --> 00:08:43,300
709 If, you know, device A works,
710
711 178
712 00:08:43,300 --> 00:08:45,300
713 I have a device which is really similar,
714
715 179
716 00:08:45,300 --> 00:08:47,300
717 but it doesn't work. Why is that?
718
719 180
720 00:08:49,300 --> 00:08:51,300
721 So, heh,
722
723 181
724 00:08:51,300 --> 00:08:53,300
725 There have been a lot of changes
726
727 182
728 00:08:53,300 --> 00:08:58,120
729 in various upstream projects, specially
730
731 183
732 00:08:58,120 --> 00:09:00,120
733 the kernel and U-boot
734
735 184
736 00:09:00,120 --> 00:09:02,120
737 that really make things easier.
738
739 185
740 00:09:02,120 --> 00:09:04,120
741 So, in the past
742
743 186
744 00:09:04,120 --> 00:09:07,260
745 we basically had
746
747 187
748 00:09:07,260 --> 00:09:09,260
749 a kernel image
750
751 188
752 00:09:09,260 --> 00:09:10,780
753 for each platform,
754
755 189
756 00:09:10,780 --> 00:09:12,780
757 where a platform is basically like
758
759 190
760 00:09:12,780 --> 00:09:14,780
761 a SSE family
762
763 191
764 00:09:14,780 --> 00:09:17,660
765 and there would be a different image
766
767 192
768 00:09:17,660 --> 00:09:21,540
769 because ARM takes a long time
770
771 193
772 00:09:21,540 --> 00:09:23,540
773 to compile, there was always some debate
774
775 194
776 00:09:23,540 --> 00:09:26,100
777 about adding a new platform
778
779 195
780 00:09:26,100 --> 00:09:28,100
781 because there would be a new
782
783 196
784 00:09:28,100 --> 00:09:30,600
785 image flavor, which takes some time,
786
787 197
788 00:09:31,740 --> 00:09:33,540
789 and that was just really like,
790
791 198
792 00:09:33,540 --> 00:09:36,280
793 we couldn't just have one ARM kernel
794
795 199
796 00:09:36,280 --> 00:09:38,280
797 which works everywhere.
798
799 200
800 00:09:38,280 --> 00:09:40,280
801 And a lot of people didn't understand
802
803 201
804 00:09:40,280 --> 00:09:42,280
805 why you had a different kernel
806
807 202
808 00:09:42,280 --> 00:09:44,280
809 because different platforms,
810
811 203
812 00:09:44,280 --> 00:09:48,040
813 although there has been a lot of progress upstream,
814
815 204
816 00:09:48,040 --> 00:09:51,580
817 at least nowadays, with armhf
818
819 205
820 00:09:51,580 --> 00:09:54,020
821 and with arm64
822
823 206
824 00:09:54,020 --> 00:09:56,020
825 we just have one kernel.
826
827 207
828 00:09:57,340 --> 00:09:59,980
829 And upstream basically
830
831 208
832 00:09:59,980 --> 00:10:02,740
833 Maybe some of you remember the rant
834
835 209
836 00:10:02,740 --> 00:10:04,740
837 by Niels about
838
839 210
840 00:10:04,740 --> 00:10:06,740
841 the ARM people doing everything
842
843 211
844 00:10:06,740 --> 00:10:08,180
845 in different ways,
846
847 212
848 00:10:08,180 --> 00:10:10,180
849 and there has been a lot of standarization
850
851 213
852 00:10:10,180 --> 00:10:12,180
853 over the years.
854
855 214
856 00:10:12,180 --> 00:10:14,180
857 Basically, the other thing is
858
859 215
860 00:10:14,180 --> 00:10:16,180
861 there used to be for each device
862
863 216
864 00:10:16,180 --> 00:10:18,180
865 there was a board file
866
867 217
868 00:10:18,180 --> 00:10:20,180
869 it was like a C file
870
871 218
872 00:10:20,180 --> 00:10:22,580
873 to initialize the different components,
874
875 219
876 00:10:22,580 --> 00:10:24,580
877 and the boot loader would
878
879 220
880 00:10:24,580 --> 00:10:27,660
881 pass the machine ID to the kernel,
882
883 221
884 00:10:27,660 --> 00:10:30,380
885 and it would load that boot file.
886
887 222
888 00:10:30,380 --> 00:10:32,380
889 And nowadays,
890
891 223
892 00:10:32,380 --> 00:10:34,380
893 there is basically a
894
895 224
896 00:10:34,380 --> 00:10:36,380
897 device tree in the kernel,
898
899 225
900 00:10:36,380 --> 00:10:38,380
901 which is a description of the hardware
902
903 226
904 00:10:40,040 --> 00:10:41,800
905 and it will basically compile it
906
907 227
908 00:10:41,800 --> 00:10:44,580
909 to, like, a binary blob, the .dtb.
910
911 228
912 00:10:44,580 --> 00:10:46,580
913 And, so, basically you just need
914
915 229
916 00:10:46,580 --> 00:10:48,580
917 the kernel image, and
918
919 230
920 00:10:48,580 --> 00:10:51,200
921 the .dtb, which is hardware-specific,
922
923 231
924 00:10:51,200 --> 00:10:53,200
925 and then it boots.
926
927 232
928 00:10:53,200 --> 00:10:55,640
929 And obviously, for us in Debian
930
931 233
932 00:10:55,640 --> 00:10:57,640
933 that makes it much much easier
934
935 234
936 00:10:57,640 --> 00:11:00,540
937 to support a lot of devices.
938
939 235
940 00:11:01,960 --> 00:11:04,560
941 The other thing that changed in U-boot,
942
943 236
944 00:11:06,040 --> 00:11:09,080
945 when you install the Debian kernel image,
946
947 237
948 00:11:09,080 --> 00:11:10,720
949 it creates
950
951 238
952 00:11:10,720 --> 00:11:13,900
953 the vmlinux file
954
955 239
956 00:11:13,900 --> 00:11:16,740
957 and also the RAM disk
958
959 240
960 00:11:16,740 --> 00:11:18,740
961 but with U-boot,
962
963 241
964 00:11:18,740 --> 00:11:20,740
965 you couldn't actually load those files
966
967 242
968 00:11:20,740 --> 00:11:22,740
969 correctly. You basically
970
971 243
972 00:11:22,740 --> 00:11:25,840
973 had to wrap them in a U-boot image
974
975 244
976 00:11:25,840 --> 00:11:28,420
977 and it's not really hard
978
979 245
980 00:11:28,420 --> 00:11:31,440
981 it's just the command initram,
982
983 246
984 00:11:31,440 --> 00:11:33,440
985 but all of the different devices had
986
987 247
988 00:11:33,440 --> 00:11:34,940
989 different load addresses,
990
991 248
992 00:11:34,940 --> 00:11:36,940
993 and, again, that's hardware-specific knowledge
994
995 249
996 00:11:36,940 --> 00:11:39,360
997 that flash-kernel needed to know.
998
999 250
1000 00:11:39,360 --> 00:11:40,820
1001 And nowadays,
1002
1003 251
1004 00:11:40,820 --> 00:11:42,720
1005 there is a command which
1006
1007 252
1008 00:11:42,720 --> 00:11:44,720
1009 directly loads the kernel,
1010
1011 253
1012 00:11:44,720 --> 00:11:48,380
1013 so that, again, was a step to make things easier.
1014
1015 254
1016 00:11:48,380 --> 00:11:52,320
1017 And the last thing which really made
1018
1019 255
1020 00:11:52,320 --> 00:11:54,320
1021 things easier is distro support
1022
1023 256
1024 00:11:54,320 --> 00:11:56,320
1025 in U-boot.
1026
1027 257
1028 00:11:56,320 --> 00:11:58,320
1029 So, basically, in the past
1030
1031 258
1032 00:11:58,320 --> 00:12:00,320
1033 every U-boot, every
1034
1035 259
1036 00:12:00,320 --> 00:12:02,320
1037 devices in U-boot,
1038
1039 260
1040 00:12:02,320 --> 00:12:04,320
1041 booted in a different way,
1042
1043 261
1044 00:12:05,240 --> 00:12:08,700
1045 just in terms on where would it load
1046
1047 262
1048 00:12:08,700 --> 00:12:10,700
1049 the file from, or
1050
1051 263
1052 00:12:10,700 --> 00:12:12,700
1053 what variables would it use, and
1054
1055 264
1056 00:12:12,700 --> 00:12:14,700
1057 nowadays there is something called distro-support
1058
1059 265
1060 00:12:14,700 --> 00:12:16,700
1061 which is basically a standardized way
1062
1063 266
1064 00:12:16,700 --> 00:12:18,700
1065 to boot a Linux distro
1066
1067 267
1068 00:12:19,300 --> 00:12:21,660
1069 with U-boot.
1070
1071 268
1072 00:12:21,660 --> 00:12:23,660
1073 There are basically
1074
1075 269
1076 00:12:23,660 --> 00:12:25,660
1077 two ways, either can
1078
1079 270
1080 00:12:25,660 --> 00:12:27,660
1081 read a config file,
1082
1083 271
1084 00:12:27,660 --> 00:12:29,660
1085 or it can basically run a
1086
1087 272
1088 00:12:29,660 --> 00:12:31,660
1089 boot script, and that's what
1090
1091 273
1092 00:12:31,660 --> 00:12:33,660
1093 we use in Debian, so we basically have
1094
1095 274
1096 00:12:33,660 --> 00:12:35,660
1097 a generic boot script
1098
1099 275
1100 00:12:35,660 --> 00:12:38,100
1101 which loads the kernel,
1102
1103 276
1104 00:12:38,100 --> 00:12:40,100
1105 loads the ramdisk, the .dtb,
1106
1107 277
1108 00:12:40,100 --> 00:12:42,100
1109 and boots Debian.
1110
1111 278
1112 00:12:42,100 --> 00:12:44,100
1113 It can use the generic
1114
1115 279
1116 00:12:44,100 --> 00:12:46,100
1117 bootscript in almost all
1118
1119 280
1120 00:12:46,100 --> 00:12:47,860
1121 of the modern devices.
1122
1123 281
1124 00:12:47,860 --> 00:12:49,860
1125 So nowadays, because of that,
1126
1127 282
1128 00:12:49,860 --> 00:12:51,860
1129 it's much more standard, and
1130
1131 283
1132 00:12:51,860 --> 00:12:53,860
1133 it's much easier to support
1134
1135 284
1136 00:12:53,860 --> 00:12:56,440
1137 those devices.
1138
1139 285
1140 00:12:56,440 --> 00:12:59,980
1141 So here are some examples of flash-kernel
1142
1143 286
1144 00:12:59,980 --> 00:13:02,800
1145 So, basically, flash-kernel has like a database
1146
1147 287
1148 00:13:02,800 --> 00:13:04,800
1149 of devices which it supports
1150
1151 288
1152 00:13:04,800 --> 00:13:07,580
1153 so it's like the machine entry
1154
1155 289
1156 00:13:07,580 --> 00:13:09,580
1157 in /proc/cpuinfo,
1158
1159 290
1160 00:13:09,580 --> 00:13:11,960
1161 and then the kernel flavors
1162
1163 291
1164 00:13:11,960 --> 00:13:13,960
1165 it can run
1166
1167 292
1168 00:13:13,960 --> 00:13:15,960
1169 and, so, this one is
1170
1171 293
1172 00:13:15,960 --> 00:13:17,960
1173 an old device, it still uses
1174
1175 294
1176 00:13:17,960 --> 00:13:19,960
1177 a board file, and it
1178
1179 295
1180 00:13:19,960 --> 00:13:22,400
1181 needs the U-boot wrapper,
1182
1183 296
1184 00:13:22,400 --> 00:13:24,400
1185 So...
1186
1187 297
1188 00:13:24,400 --> 00:13:27,180
1189 You are basically setting the machine ID
1190
1191 298
1192 00:13:27,180 --> 00:13:29,840
1193 those are the flash partitions
1194
1195 299
1196 00:13:29,840 --> 00:13:31,840
1197 where the kernel and the
1198
1199 300
1200 00:13:31,840 --> 00:13:33,840
1201 ramdisk are stored, and
1202
1203 301
1204 00:13:33,840 --> 00:13:35,660
1205 that's the load address for the
1206
1207 302
1208 00:13:35,660 --> 00:13:37,660
1209 U-boot wrapper
1210
1211 303
1212 00:13:39,660 --> 00:13:43,120
1213 And, now, that's a device
1214
1215 304
1216 00:13:43,120 --> 00:13:45,120
1217 which used to have
1218
1219 305
1220 00:13:45,120 --> 00:13:47,120
1221 a boot file,
1222
1223 306
1224 00:13:47,120 --> 00:13:49,120
1225 and which then migrated
1226
1227 307
1228 00:13:49,120 --> 00:13:51,120
1229 to a .dtb,
1230
1231 308
1232 00:13:51,120 --> 00:13:53,120
1233 so basically, heh,
1234
1235 309
1236 00:13:53,120 --> 00:13:56,160
1237 that was really really painful for Debian
1238
1239 310
1240 00:13:56,160 --> 00:13:58,800
1241 so, basically, the kernel people said
1242
1243 311
1244 00:13:58,800 --> 00:14:00,800
1245 "Oh, you are going to move to device tree,
1246
1247 312
1248 00:14:00,800 --> 00:14:02,060
1249 so don't worry,
1250
1251 313
1252 00:14:02,060 --> 00:14:04,460
1253 we are not gonna remove those old board files,
1254
1255 314
1256 00:14:04,460 --> 00:14:06,460
1257 you can still use them."
1258
1259 315
1260 00:14:06,460 --> 00:14:08,800
1261 And then, a few years later they realized
1262
1263 316
1264 00:14:08,800 --> 00:14:11,240
1265 it's really hard to keep both alive,
1266
1267 317
1268 00:14:11,240 --> 00:14:13,760
1269 and they got rid of the board files.
1270
1271 318
1272 00:14:13,760 --> 00:14:16,360
1273 And that was really painful to us
1274
1275 319
1276 00:14:16,360 --> 00:14:18,820
1277 because we had to migrate
1278
1279 320
1280 00:14:18,820 --> 00:14:20,820
1281 So you can see,
1282
1283 321
1284 00:14:20,820 --> 00:14:23,500
1285 here, a kernel version,
1286
1287 322
1288 00:14:23,500 --> 00:14:25,500
1289 and so, from that kernel on,
1290
1291 323
1292 00:14:25,500 --> 00:14:27,500
1293 you needed to use the new way.
1294
1295 324
1296 00:14:29,060 --> 00:14:33,240
1297 And one of the reasons it was painful
1298
1299 325
1300 00:14:33,240 --> 00:14:35,780
1301 specially on the QNAP devices
1302
1303 326
1304 00:14:35,780 --> 00:14:38,400
1305 is because with
1306
1307 327
1308 00:14:38,400 --> 00:14:40,400
1309 they actually have two different CPUs
1310
1311 328
1312 00:14:40,400 --> 00:14:42,400
1313 so there are different barriers
1314
1315 329
1316 00:14:42,400 --> 00:14:44,400
1317 and whilst the board files,
1318
1319 330
1320 00:14:44,400 --> 00:14:46,400
1321 the same board file worked
1322
1323 331
1324 00:14:46,400 --> 00:14:48,400
1325 regardless of the CPU,
1326
1327 332
1328 00:14:48,400 --> 00:14:51,240
1329 because of the way the device tree worked
1330
1331 333
1332 00:14:51,240 --> 00:14:53,240
1333 it actually needed two different device trees
1334
1335 334
1336 00:14:53,240 --> 00:14:55,240
1337 depending on the CPU
1338
1339 335
1340 00:14:55,600 --> 00:14:59,320
1341 so now we basically, you know, something that just worked,
1342
1343 336
1344 00:14:59,320 --> 00:15:01,320
1345 you know, it used to work fine,
1346
1347 337
1348 00:15:01,320 --> 00:15:03,320
1349 you just had one kernel
1350
1351 338
1352 00:15:03,320 --> 00:15:05,740
1353 with the machine ID
1354
1355 339
1356 00:15:05,740 --> 00:15:06,920
1357 at least would work,
1358
1359 340
1360 00:15:06,920 --> 00:15:09,620
1361 and somehow with the device tree
1362
1363 341
1364 00:15:09,620 --> 00:15:11,620
1365 we needed to figure out which one
1366
1367 342
1368 00:15:11,620 --> 00:15:13,620
1369 we need, and so
1370
1371 343
1372 00:15:13,620 --> 00:15:16,960
1373 [?] fortunately did all of that work.
1374
1375 344
1376 00:15:16,960 --> 00:15:18,960
1377 So that's actually a script that runs
1378
1379 345
1380 00:15:18,960 --> 00:15:20,960
1381 to figure out which device tree
1382
1383 346
1384 00:15:20,960 --> 00:15:22,960
1385 that particular device needs.
1386
1387 347
1388 00:15:26,660 --> 00:15:29,160
1389 So now, that's actually
1390
1391 348
1392 00:15:29,160 --> 00:15:31,160
1393 the reason I want to show this is
1394
1395 349
1396 00:15:31,160 --> 00:15:33,160
1397 how simpler things are these days, so
1398
1399 350
1400 00:15:33,160 --> 00:15:35,160
1401 this is an example from
1402
1403 351
1404 00:15:35,160 --> 00:15:38,600
1405 [?] platform, which uses distro-support,
1406
1407 352
1408 00:15:38,600 --> 00:15:40,960
1409 and the only thing you really need is
1410
1411 353
1412 00:15:40,960 --> 00:15:42,960
1413 a machine entry with the name,
1414
1415 354
1416 00:15:42,960 --> 00:15:44,960
1417 and then
1418
1419 355
1420 00:15:44,960 --> 00:15:46,960
1421 like the kernel-flavor,
1422
1423 356
1424 00:15:46,960 --> 00:15:48,960
1425 but that's the same for...
1426
1427 357
1428 00:15:48,960 --> 00:15:50,960
1429 you know, there is only one kernel flavor.
1430
1431 358
1432 00:15:52,740 --> 00:15:55,380
1433 And then, the device tree ID
1434
1435 359
1436 00:15:56,480 --> 00:15:58,360
1437 and, again, all of that stuff is generic,
1438
1439 360
1440 00:15:58,360 --> 00:16:00,760
1441 so it just uses the generic bootscript,
1442
1443 361
1444 00:16:02,180 --> 00:16:03,780
1445 and the generic boot path,
1446
1447 362
1448 00:16:03,780 --> 00:16:05,780
1449 so basically
1450
1451 363
1452 00:16:05,780 --> 00:16:07,780
1453 all it pretty much needs for
1454
1455 364
1456 00:16:07,780 --> 00:16:09,780
1457 a new device is, like,
1458
1459 365
1460 00:16:09,780 --> 00:16:11,780
1461 you know,
1462
1463 366
1464 00:16:11,780 --> 00:16:13,780
1465 these two entries,
1466
1467 367
1468 00:16:13,780 --> 00:16:15,780
1469 it's really really simple.
1470
1471 368
1472 00:16:18,780 --> 00:16:21,260
1473 So here, I just wanted to
1474
1475 369
1476 00:16:21,260 --> 00:16:23,260
1477 tell about the different ARM ports and...
1478
1479 370
1480 00:16:24,200 --> 00:16:26,940
1481 So, for me it was really hard to structure this, because
1482
1483 371
1484 00:16:26,940 --> 00:16:29,460
1485 those changes in the kernel
1486
1487 372
1488 00:16:29,460 --> 00:16:31,460
1489 and U-boot
1490
1491 373
1492 00:16:31,460 --> 00:16:34,640
1493 you know, happen independent of our ARM ports,
1494
1495 374
1496 00:16:36,100 --> 00:16:37,720
1497 But at the same time, because
1498
1499 375
1500 00:16:37,720 --> 00:16:40,340
1501 because the armhf world is much newer,
1502
1503 376
1504 00:16:40,340 --> 00:16:42,340
1505 it works in a different way.
1506
1507 377
1508 00:16:42,340 --> 00:16:45,200
1509 So, basically, the armel
1510
1511 378
1512 00:16:45,200 --> 00:16:49,480
1513 we still have different flavors
1514
1515 379
1516 00:16:49,480 --> 00:16:54,000
1517 but we have already combined the orion and the kirkwood
1518
1519 380
1520 00:16:54,000 --> 00:16:56,000
1521 into one marvell flavor,
1522
1523 381
1524 00:16:56,000 --> 00:16:59,060
1525 and we have the versatile one.
1526
1527 382
1528 00:17:00,860 --> 00:17:03,760
1529 So one of the problems we have in armel is that
1530
1531 383
1532 00:17:03,760 --> 00:17:05,760
1533 a lot of those NAS devices
1534
1535 384
1536 00:17:05,760 --> 00:17:07,760
1537 boot from flash
1538
1539 385
1540 00:17:07,760 --> 00:17:10,180
1541 and they only have, some of them,
1542
1543 386
1544 00:17:10,180 --> 00:17:12,180
1545 3MB for the kernel,
1546
1547 387
1548 00:17:12,180 --> 00:17:15,120
1549 which used to be a lot of space
1550
1551 388
1552 00:17:15,120 --> 00:17:16,660
1553 but nowadays it's not.
1554
1555 389
1556 00:17:16,720 --> 00:17:19,380
1557 So that really puts a lot of restrictions
1558
1559 390
1560 00:17:19,380 --> 00:17:21,380
1561 so basically we disable some stuff
1562
1563 391
1564 00:17:21,380 --> 00:17:23,380
1565 from armel
1566
1567 392
1568 00:17:23,380 --> 00:17:27,180
1569 but I think that armel is really really widely used
1570
1571 393
1572 00:17:27,180 --> 00:17:29,180
1573 because of those NAS devices,
1574
1575 394
1576 00:17:29,180 --> 00:17:31,180
1577 but I think they are slowly getting old,
1578
1579 395
1580 00:17:31,180 --> 00:17:33,680
1581 but there are still a lot of people that use them.
1582
1583 396
1584 00:17:33,680 --> 00:17:37,220
1585 Like I said, it requires the U-boot image
1586
1587 397
1588 00:17:37,700 --> 00:17:40,380
1589 Originally, we used board files
1590
1591 398
1592 00:17:40,380 --> 00:17:43,360
1593 and device tree, most of them
1594
1595 399
1596 00:17:43,360 --> 00:17:45,940
1597 have switched over to device tree
1598
1599 400
1600 00:17:45,940 --> 00:17:48,580
1601 even if some of them still use board files
1602
1603 401
1604 00:17:48,580 --> 00:17:51,540
1605 and adding a new device requires
1606
1607 402
1608 00:17:51,540 --> 00:17:54,200
1609 a number of changes in the installer.
1610
1611 403
1612 00:17:54,200 --> 00:17:57,100
1613 So basically, you needed to map
1614
1615 404
1616 00:17:57,100 --> 00:17:59,100
1617 the device to
1618
1619 405
1620 00:17:59,100 --> 00:18:01,100
1621 the complete image
1622
1623 406
1624 00:18:01,100 --> 00:18:04,200
1625 and there are just there a couple of
1626
1627 407
1628 00:18:04,200 --> 00:18:06,260
1629 things, so basically, any one device
1630
1631 408
1632 00:18:06,280 --> 00:18:08,200
1633 you have to change like five different
1634
1635 409
1636 00:18:08,200 --> 00:18:10,200
1637 places in the installer.
1638
1639 410
1640 00:18:10,200 --> 00:18:12,200
1641 And it was quite confusing for people who wanted
1642
1643 411
1644 00:18:12,200 --> 00:18:14,200
1645 to add new devices
1646
1647 412
1648 00:18:14,200 --> 00:18:17,080
1649 Because it isn't really documented very well
1650
1651 413
1652 00:18:18,480 --> 00:18:21,400
1653 So some examples are a list of three people
1654
1655 414
1656 00:18:21,400 --> 00:18:23,400
1657 who are involved in that port
1658
1659 415
1660 00:18:23,400 --> 00:18:25,400
1661 So, Roger is someone
1662
1663 416
1664 00:18:25,400 --> 00:18:27,400
1665 who is quite new, and who really got
1666
1667 417
1668 00:18:27,400 --> 00:18:29,920
1669 involved into porting those old devices.
1670
1671 418
1672 00:18:31,440 --> 00:18:34,560
1673 And so, armhf is much nicer,
1674
1675 419
1676 00:18:34,560 --> 00:18:36,560
1677 so the majority of
1678
1679 420
1680 00:18:36,560 --> 00:18:39,140
1681 devices support distro-support.
1682
1683 421
1684 00:18:40,440 --> 00:18:42,700
1685 And the other thing we do
1686
1687 422
1688 00:18:44,700 --> 00:18:47,040
1689 is, for some of the devices
1690
1691 423
1692 00:18:47,040 --> 00:18:49,040
1693 we provide SD card images,
1694
1695 424
1696 00:18:49,040 --> 00:18:51,040
1697 which contain
1698
1699 425
1700 00:18:51,040 --> 00:18:55,160
1701 U-boot and the Debian installer
1702
1703 426
1704 00:18:55,160 --> 00:18:57,160
1705 So basically Vagrant
1706
1707 427
1708 00:18:57,160 --> 00:18:59,960
1709 maintains U-boot in Debian, and
1710
1711 428
1712 00:18:59,960 --> 00:19:01,960
1713 a lot of those devices are supported
1714
1715 429
1716 00:19:01,960 --> 00:19:03,960
1717 in U-boot in Debian.
1718
1719 430
1720 00:19:03,960 --> 00:19:05,960
1721 So we just
1722
1723 431
1724 00:19:05,960 --> 00:19:07,960
1725 provide an SD image, so you can just
1726
1727 432
1728 00:19:07,960 --> 00:19:10,480
1729 store it in the SD card, you put it in
1730
1731 433
1732 00:19:10,480 --> 00:19:12,940
1733 and, because of the distro-support,
1734
1735 434
1736 00:19:12,940 --> 00:19:14,940
1737 it just loads debian-installer,
1738
1739 435
1740 00:19:14,940 --> 00:19:17,840
1741 you do the installation, reboot,
1742
1743 436
1744 00:19:17,840 --> 00:19:19,840
1745 and things just work.
1746
1747 437
1748 00:19:19,840 --> 00:19:21,840
1749 So I think it really has gone
1750
1751 438
1752 00:19:21,840 --> 00:19:25,200
1753 ...Come a long way.
1754
1755 439
1756 00:19:27,200 --> 00:19:29,820
1757 So nowadays,
1758
1759 440
1760 00:19:29,820 --> 00:19:31,820
1761 adding a new device
1762
1763 441
1764 00:19:31,820 --> 00:19:34,140
1765 requires much fewer changes
1766
1767 442
1768 00:19:34,140 --> 00:19:36,140
1769 than it used to be.
1770
1771 443
1772 00:19:36,140 --> 00:19:40,980
1773 Because as everything uses the same, like, one kernel flavor,
1774
1775 444
1776 00:19:40,980 --> 00:19:43,900
1777 you don't need to patch all those different places anymore,
1778
1779 445
1780 00:19:45,020 --> 00:19:47,740
1781 and because of distro-support, it just works.
1782
1783 446
1784 00:19:47,740 --> 00:19:52,280
1785 You can pretty much use the generic bootscript.
1786
1787 447
1788 00:19:54,140 --> 00:19:56,140
1789 So, arm64.
1790
1791 448
1792 00:19:56,140 --> 00:19:58,300
1793 So, the problem until recently
1794
1795 449
1796 00:19:58,300 --> 00:20:00,300
1797 is that there simply wasn't any hardware
1798
1799 450
1800 00:20:00,300 --> 00:20:02,300
1801 that people could buy.
1802
1803 451
1804 00:20:02,300 --> 00:20:04,300
1805 And that's changing rapidly now
1806
1807 452
1808 00:20:05,640 --> 00:20:07,540
1809 [?]
1810
1811 453
1812 00:20:07,540 --> 00:20:10,280
1813 We have for example the Raspberry Pi 3
1814
1815 454
1816 00:20:10,280 --> 00:20:13,960
1817 which uses a 64 bit CPU
1818
1819 455
1820 00:20:13,960 --> 00:20:16,620
1821 but the software it ships is only 32 bits,
1822
1823 456
1824 00:20:16,620 --> 00:20:18,620
1825 but most of the work
1826
1827 457
1828 00:20:18,620 --> 00:20:20,620
1829 is now
1830
1831 458
1832 00:20:20,620 --> 00:20:23,680
1833 upstreamed to run 64 bit on it
1834
1835 459
1836 00:20:25,000 --> 00:20:27,600
1837 and there are a lot of
1838
1839 460
1840 00:20:28,120 --> 00:20:31,500
1841 devices which sort of work but not quite
1842
1843 461
1844 00:20:31,960 --> 00:20:35,660
1845 but anyway, so the idea for arm64
1846
1847 462
1848 00:20:35,660 --> 00:20:37,660
1849 is that a lot of the
1850
1851 463
1852 00:20:37,660 --> 00:20:39,660
1853 new hardware
1854
1855 464
1856 00:20:39,660 --> 00:20:41,660
1857 specially on the server side
1858
1859 465
1860 00:20:41,660 --> 00:20:43,660
1861 will use UEFI,
1862
1863 466
1864 00:20:43,660 --> 00:20:45,660
1865 and so you basically just
1866
1867 467
1868 00:20:46,380 --> 00:20:48,100
1869 it just works like a PC.
1870
1871 468
1872 00:20:48,100 --> 00:20:50,100
1873 So you have Grub,
1874
1875 469
1876 00:20:50,100 --> 00:20:53,020
1877 you can run debian-installer from Grub
1878
1879 470
1880 00:20:53,020 --> 00:20:54,900
1881 and you get Grub afterwards.
1882
1883 471
1884 00:20:54,920 --> 00:20:56,480
1885 And just boots like a PC,
1886
1887 472
1888 00:20:56,480 --> 00:20:59,860
1889 and Steve has done a lot of work in that area,
1890
1891 473
1892 00:20:59,860 --> 00:21:01,860
1893 And in theory,
1894
1895 474
1896 00:21:01,860 --> 00:21:03,860
1897 it should just work out of the box.
1898
1899 475
1900 00:21:03,860 --> 00:21:06,220
1901 So, if it uses
1902
1903 476
1904 00:21:06,220 --> 00:21:08,220
1905 UEFI, we don't need to add anything.
1906
1907 477
1908 00:21:08,220 --> 00:21:10,220
1909 It just works.
1910
1911 478
1912 00:21:10,220 --> 00:21:12,220
1913 There's nothing to do.
1914
1915 479
1916 00:21:13,400 --> 00:21:15,300
1917 At least, that's the theory.
1918
1919 480
1920 00:21:15,300 --> 00:21:17,300
1921 So, what I found is
1922
1923 481
1924 00:21:17,300 --> 00:21:19,300
1925 ...I made a disclaimer, so
1926
1927 482
1928 00:21:19,300 --> 00:21:21,300
1929 ...Assuming the kernel
1930
1931 483
1932 00:21:21,300 --> 00:21:23,300
1933 you know, kernel support and stuff...
1934
1935 484
1936 00:21:23,300 --> 00:21:25,300
1937 ...To be honest,
1938
1939 485
1940 00:21:25,300 --> 00:21:28,160
1941 right now, that's a big assumption.
1942
1943 486
1944 00:21:28,160 --> 00:21:30,160
1945 So I've been playing with a few
1946
1947 487
1948 00:21:30,160 --> 00:21:33,200
1949 64 bit ARM boards
1950
1951 488
1952 00:21:33,200 --> 00:21:36,580
1953 and basically, what I found is
1954
1955 489
1956 00:21:36,580 --> 00:21:39,420
1957 there is some support upstream,
1958
1959 490
1960 00:21:39,420 --> 00:21:41,420
1961 so I can boot a kernel,
1962
1963 491
1964 00:21:41,420 --> 00:21:43,700
1965 but, oh! There is no USB support!
1966
1967 492
1968 00:21:43,700 --> 00:21:45,280
1969 there is no Wifi support!
1970
1971 493
1972 00:21:45,280 --> 00:21:48,060
1973 So I cannot actually do anything with it.
1974
1975 494
1976 00:21:48,060 --> 00:21:51,580
1977 But I can get to something that
1978
1979 495
1980 00:21:51,580 --> 00:21:54,980
1981 because arm64 is still farily new.
1982
1983 496
1984 00:21:54,980 --> 00:21:57,640
1985 And there is a lot of work going on upstream
1986
1987 497
1988 00:21:57,640 --> 00:22:00,000
1989 to support the various platforms.
1990
1991 498
1992 00:22:00,000 --> 00:22:03,300
1993 So, I think over time that's really going to be much better.
1994
1995 499
1996 00:22:05,300 --> 00:22:09,440
1997 Even though that UEFI idea is there
1998
1999 500
2000 00:22:09,440 --> 00:22:11,200
2001 in reality,
2002
2003 501
2004 00:22:11,200 --> 00:22:13,200
2005 we are going to see different solutions
2006
2007 502
2008 00:22:13,200 --> 00:22:15,200
2009 for arm64.
2010
2011 503
2012 00:22:15,200 --> 00:22:18,240
2013 So we are going to see UEFI, in particular on servers,
2014
2015 504
2016 00:22:18,240 --> 00:22:20,240
2017 but we will also see U-boot.
2018
2019 505
2020 00:22:20,240 --> 00:22:22,700
2021 So a lot of those bare boards
2022
2023 506
2024 00:22:22,700 --> 00:22:24,700
2025 they have U-boot.
2026
2027 507
2028 00:22:24,700 --> 00:22:26,700
2029 And, so, right now
2030
2031 508
2032 00:22:26,700 --> 00:22:28,700
2033 we can use the distro support
2034
2035 509
2036 00:22:28,700 --> 00:22:31,980
2037 and I think that it works pretty well.
2038
2039 510
2040 00:22:31,980 --> 00:22:34,320
2041 But one thing that SuSE has done
2042
2043 511
2044 00:22:34,320 --> 00:22:36,320
2045 so, they just had the same issue,
2046
2047 512
2048 00:22:36,320 --> 00:22:38,320
2049 they want to support all those devices
2050
2051 513
2052 00:22:38,320 --> 00:22:41,240
2053 but they just want to use the same mechanism everywhere,
2054
2055 514
2056 00:22:41,240 --> 00:22:43,420
2057 so they have actually implemented
2058
2059 515
2060 00:22:43,420 --> 00:22:46,020
2061 UEFI on top of U-boot,
2062
2063 516
2064 00:22:46,020 --> 00:22:49,240
2065 so you can basically use U-boot to load Grub
2066
2067 517
2068 00:22:49,240 --> 00:22:51,720
2069 and then you have Grub
2070
2071 518
2072 00:22:51,720 --> 00:22:54,320
2073 so I think that's something we need to figure out;
2074
2075 519
2076 00:22:54,320 --> 00:22:56,840
2077 do we want to stay with distro-support?
2078
2079 520
2080 00:22:56,840 --> 00:22:58,840
2081 do we want to use
2082
2083 521
2084 00:22:58,840 --> 00:23:01,140
2085 UEFI on top of U-boot?
2086
2087 522
2088 00:23:01,140 --> 00:23:03,140
2089 is that something we want to
2090
2091 523
2092 00:23:03,140 --> 00:23:05,140
2093 give users the option?
2094
2095 524
2096 00:23:05,140 --> 00:23:08,020
2097 And then, Fastboot
2098
2099 525
2100 00:23:08,020 --> 00:23:10,140
2101 is something used
2102
2103 526
2104 00:23:10,140 --> 00:23:12,140
2105 in the Android world
2106
2107 527
2108 00:23:12,140 --> 00:23:14,760
2109 and a lot of those, like, I see a lot of
2110
2111 528
2112 00:23:14,760 --> 00:23:17,800
2113 both bare boards, but also
2114
2115 529
2116 00:23:17,800 --> 00:23:19,940
2117 game consoles and stuff, which
2118
2119 530
2120 00:23:19,940 --> 00:23:21,940
2121 which are sort of Android-oriented,
2122
2123 531
2124 00:23:21,940 --> 00:23:23,940
2125 but which can also run normal Linux,
2126
2127 532
2128 00:23:23,940 --> 00:23:26,840
2129 and they will use like Fastboot or something.
2130
2131 533
2132 00:23:26,840 --> 00:23:30,120
2133 And there are tons of other bootloaders out there
2134
2135 534
2136 00:23:30,120 --> 00:23:32,540
2137 But I would definitively say, like, the good ones
2138
2139 535
2140 00:23:32,540 --> 00:23:34,540
2141 are UEFI and U-boot
2142
2143 536
2144 00:23:36,540 --> 00:23:40,320
2145 So, I gave a similar talk a few weeks ago
2146
2147 537
2148 00:23:40,320 --> 00:23:43,060
2149 and turns out, a lot of non-free
2150
2151 538
2152 00:23:43,060 --> 00:23:45,060
2153 firmware, like, "can I
2154
2155 539
2156 00:23:45,060 --> 00:23:46,920
2157 run that stuff, you know,
2158
2159 540
2160 00:23:46,920 --> 00:23:48,920
2161 purely with free software?"
2162
2163 541
2164 00:23:48,920 --> 00:23:51,260
2165 ...And...
2166
2167 542
2168 00:23:51,260 --> 00:23:52,980
2169 So, the thing with ARM is that
2170
2171 543
2172 00:23:52,980 --> 00:23:54,980
2173 there are a lot of different platforms
2174
2175 544
2176 00:23:54,980 --> 00:23:56,980
2177 I'm not sure about all of them,
2178
2179 545
2180 00:23:56,980 --> 00:23:59,460
2181 but some of the platforms
2182
2183 546
2184 00:23:59,460 --> 00:24:01,960
2185 I looked at, yes, you
2186
2187 547
2188 00:24:01,960 --> 00:24:05,320
2189 do need some... There is always something propietary.
2190
2191 548
2192 00:24:06,460 --> 00:24:08,420
2193 So in a lot of cases
2194
2195 549
2196 00:24:08,420 --> 00:24:10,420
2197 I see where you have
2198
2199 550
2200 00:24:10,420 --> 00:24:13,580
2201 you use the proprietary first-stage boot loader,
2202
2203 551
2204 00:24:13,580 --> 00:24:16,160
2205 so the Raspberry Pi is an example,
2206
2207 552
2208 00:24:16,160 --> 00:24:18,540
2209 so, I don't actually have a Raspberry Pi, but
2210
2211 553
2212 00:24:18,540 --> 00:24:20,540
2213 the way I understand it is
2214
2215 554
2216 00:24:20,540 --> 00:24:23,060
2217 you basically put some boot files
2218
2219 555
2220 00:24:23,060 --> 00:24:25,060
2221 in an SD card,
2222
2223 556
2224 00:24:25,060 --> 00:24:27,060
2225 and they are proprietary, and
2226
2227 557
2228 00:24:27,060 --> 00:24:29,060
2229 then they load the kernel.
2230
2231 558
2232 00:24:29,060 --> 00:24:31,500
2233 Or in case of [?]
2234
2235 559
2236 00:24:31,500 --> 00:24:33,500
2237 supported in Debian,
2238
2239 560
2240 00:24:33,500 --> 00:24:35,500
2241 the first stage boot loader would basically
2242
2243 561
2244 00:24:35,500 --> 00:24:37,820
2245 be used to run U-boot,
2246
2247 562
2248 00:24:37,820 --> 00:24:40,140
2249 and then we could use U-boot, and
2250
2251 563
2252 00:24:40,140 --> 00:24:43,880
2253 the U-boot support all of it is free software,
2254
2255 564
2256 00:24:43,880 --> 00:24:46,440
2257 but the first stage boot loader isn't.
2258
2259 565
2260 00:24:46,440 --> 00:24:49,820
2261 I have had, there are some people
2262
2263 566
2264 00:24:49,820 --> 00:24:51,820
2265 working on a free replacement for
2266
2267 567
2268 00:24:51,820 --> 00:24:53,820
2269 the Raspberry Pi, though.
2270
2271 568
2272 00:24:53,820 --> 00:24:55,820
2273 With nVidia Tegra,
2274
2275 569
2276 00:24:55,820 --> 00:24:57,640
2277 which is
2278
2279 570
2280 00:24:57,640 --> 00:24:59,640
2281 something I'm working on at the moment
2282
2283 571
2284 00:24:59,640 --> 00:25:03,040
2285 you also have a tiny first stage boot loader,
2286
2287 572
2288 00:25:03,040 --> 00:25:05,940
2289 but then again, you have U-boot, which is free,
2290
2291 573
2292 00:25:05,940 --> 00:25:08,980
2293 and in that case, you also have some firmware
2294
2295 574
2296 00:25:08,980 --> 00:25:10,980
2297 images for the GPU
2298
2299 575
2300 00:25:10,980 --> 00:25:13,320
2301 and for other stuff.
2302
2303 576
2304 00:25:13,320 --> 00:25:15,980
2305 For the Dragon board,
2306
2307 577
2308 00:25:15,980 --> 00:25:18,980
2309 The Dragon board sounded really interesting
2310
2311 578
2312 00:25:18,980 --> 00:25:20,820
2313 because it actually has a
2314
2315 579
2316 00:25:20,820 --> 00:25:22,820
2317 a graphics chip
2318
2319 580
2320 00:25:22,820 --> 00:25:25,120
2321 which can be used with free software,
2322
2323 581
2324 00:25:25,120 --> 00:25:27,920
2325 so that sounded pretty cool,
2326
2327 582
2328 00:25:27,920 --> 00:25:30,340
2329 but again, it has a
2330
2331 583
2332 00:25:30,340 --> 00:25:32,460
2333 proprietary first
2334
2335 584
2336 00:25:32,460 --> 00:25:34,460
2337 stage boot loader,
2338
2339 585
2340 00:25:34,460 --> 00:25:36,460
2341 and then there is a second stage boot loader
2342
2343 586
2344 00:25:36,460 --> 00:25:38,460
2345 which is actually open source
2346
2347 587
2348 00:25:38,460 --> 00:25:41,520
2349 and then there's actually a U-boot of that,
2350
2351 588
2352 00:25:41,520 --> 00:25:44,600
2353 and then you have some
2354
2355 589
2356 00:25:44,600 --> 00:25:46,600
2357 binary blobs which
2358
2359 590
2360 00:25:46,600 --> 00:25:49,900
2361 also need to be installed in flash to work properly
2362
2363 591
2364 00:25:49,900 --> 00:25:51,900
2365 On the Marvell side, I'm
2366
2367 592
2368 00:25:51,900 --> 00:25:53,900
2369 not really aware of anything.
2370
2371 593
2372 00:25:53,900 --> 00:25:55,900
2373 I have never needed to flash anything
2374
2375 594
2376 00:25:55,900 --> 00:25:57,900
2377 proprietary, but
2378
2379 595
2380 00:25:57,900 --> 00:25:59,900
2381 I'm not sure how U-boot gets started
2382
2383 596
2384 00:25:59,900 --> 00:26:01,900
2385 on Marvell, so maybe there is something.
2386
2387 597
2388 00:26:04,380 --> 00:26:08,180
2389 So the future is all... So NAS devices are
2390
2391 598
2392 00:26:08,180 --> 00:26:09,800
2393 like I said, that's something that's
2394
2395 599
2396 00:26:09,800 --> 00:26:11,800
2397 really been popular in Debian.
2398
2399 600
2400 00:26:11,800 --> 00:26:15,480
2401 Specially on the QNAP devices,
2402
2403 601
2404 00:26:15,480 --> 00:26:17,480
2405 but the problem is, so, QNAP...
2406
2407 602
2408 00:26:17,480 --> 00:26:19,480
2409 so the devices we currently support
2410
2411 603
2412 00:26:19,480 --> 00:26:21,480
2413 are pretty old
2414
2415 604
2416 00:26:21,480 --> 00:26:23,480
2417 nowadays,
2418
2419 605
2420 00:26:23,480 --> 00:26:25,480
2421 and they have some newer devices,
2422
2423 606
2424 00:26:25,480 --> 00:26:27,740
2425 but they are not properly supported
2426
2427 607
2428 00:26:27,740 --> 00:26:29,740
2429 in the upstream kernel.
2430
2431 608
2432 00:26:29,740 --> 00:26:31,740
2433 So, I have no plans
2434
2435 609
2436 00:26:31,740 --> 00:26:33,740
2437 to support Debian on those.
2438
2439 610
2440 00:26:33,740 --> 00:26:36,920
2441 I recently did some work on
2442
2443 611
2444 00:26:36,920 --> 00:26:38,920
2445 Seagate NAS devices
2446
2447 612
2448 00:26:38,920 --> 00:26:42,500
2449 which are actually pretty interesting
2450
2451 613
2452 00:26:42,500 --> 00:26:44,500
2453 but again, they will go out of date
2454
2455 614
2456 00:26:44,500 --> 00:26:46,500
2457 already,
2458
2459 615
2460 00:26:46,500 --> 00:26:48,500
2461 and then there's the whole 64 bit ARM
2462
2463 616
2464 00:26:48,500 --> 00:26:50,500
2465 so I think people are really waiting
2466
2467 617
2468 00:26:50,500 --> 00:26:52,500
2469 for arm64 servers
2470
2471 618
2472 00:26:52,500 --> 00:26:54,720
2473 I think there's going to be a whole lot of
2474
2475 619
2476 00:26:54,720 --> 00:26:56,720
2477 work on that area.
2478
2479 620
2480 00:26:56,720 --> 00:26:59,460
2481 And then, there are all of those development boards
2482
2483 621
2484 00:26:59,460 --> 00:27:01,460
2485 Raspberry Pi,
2486
2487 622
2488 00:27:01,460 --> 00:27:03,460
2489 Pine64,
2490
2491 623
2492 00:27:03,460 --> 00:27:06,200
2493 Allwinder,
2494
2495 624
2496 00:27:06,200 --> 00:27:08,900
2497 Basically, all of them
2498
2499 625
2500 00:27:08,900 --> 00:27:10,900
2501 sound exciting, but if you
2502
2503 626
2504 00:27:10,900 --> 00:27:12,700
2505 look at them, all of them
2506
2507 627
2508 00:27:12,700 --> 00:27:14,700
2509 have some upstream issues, so it's...
2510
2511 628
2512 00:27:14,700 --> 00:27:18,340
2513 It is really quite frustrating at the moment.
2514
2515 629
2516 00:27:18,340 --> 00:27:20,340
2517 But I think things are really
2518
2519 630
2520 00:27:20,340 --> 00:27:22,800
2521 moving [?]
2522
2523 631
2524 00:27:22,800 --> 00:27:25,880
2525 And then there's this 96Board initiative,
2526
2527 632
2528 00:27:26,060 --> 00:27:28,540
2529 which is actually done by Linaro,
2530
2531 633
2532 00:27:28,540 --> 00:27:30,700
2533 and, so, Linaro supports
2534
2535 634
2536 00:27:30,700 --> 00:27:32,880
2537 Linux on ARM, so you'd think, "wow,
2538
2539 635
2540 00:27:32,880 --> 00:27:34,880
2541 there are some really nice boards coming out!"
2542
2543 636
2544 00:27:34,880 --> 00:27:37,340
2545 and they differentiated
2546
2547 637
2548 00:27:37,340 --> 00:27:39,940
2549 between the consumer edition and the enterprise edition
2550
2551 638
2552 00:27:39,940 --> 00:27:42,880
2553 beside, I bought some consumer-edition boards,
2554
2555 639
2556 00:27:42,880 --> 00:27:45,540
2557 and it's really horrible.
2558
2559 640
2560 00:27:45,540 --> 00:27:48,220
2561 So first of all, I had to spend like half a day
2562
2563 641
2564 00:27:48,220 --> 00:27:50,220
2565 just putting the components
2566
2567 642
2568 00:27:50,660 --> 00:27:53,100
2569 because it uses, like, a nonstandard power supply,
2570
2571 643
2572 00:27:53,100 --> 00:27:55,100
2573 a nonstandard serial console,
2574
2575 644
2576 00:27:55,100 --> 00:27:57,820
2577 so finally I found
2578
2579 645
2580 00:27:57,820 --> 00:28:00,280
2581 all the pieces I needed, and then
2582
2583 646
2584 00:28:00,280 --> 00:28:02,820
2585 I was expecting, well, it's from Linaro!
2586
2587 647
2588 00:28:02,820 --> 00:28:05,140
2589 Surely everything just works upstream!
2590
2591 648
2592 00:28:05,140 --> 00:28:07,600
2593 But it doesn't. It's like
2594
2595 649
2596 00:28:07,600 --> 00:28:09,600
2597 yes, I can boot the Linux kernel,
2598
2599 650
2600 00:28:09,600 --> 00:28:11,600
2601 but there's no USB, there's no
2602
2603 651
2604 00:28:11,600 --> 00:28:13,600
2605 Wifi, no nothing...
2606
2607 652
2608 00:28:15,080 --> 00:28:17,080
2609 So, yes, that's a little bit frustrating.
2610
2611 653
2612 00:28:17,080 --> 00:28:19,140
2613 On the enterprise edition,
2614
2615 654
2616 00:28:19,140 --> 00:28:21,140
2617 I think that looks more interesting.
2618
2619 655
2620 00:28:21,140 --> 00:28:23,140
2621 You know, that's more standardized.
2622
2623 656
2624 00:28:23,140 --> 00:28:26,620
2625 But again, there have been some delays.
2626
2627 657
2628 00:28:28,620 --> 00:28:32,620
2629 [audience; unintellegible]
2630
2631 658
2632 00:28:32,620 --> 00:28:34,620
2633 Yes, OK.
2634
2635 659
2636 00:28:34,620 --> 00:28:36,620
2637 So that would be interesting to see.
2638
2639 660
2640 00:28:36,620 --> 00:28:39,420
2641 So, the questions that I actually have nowadays
2642
2643 661
2644 00:28:39,420 --> 00:28:41,420
2645 is, so...
2646
2647 662
2648 00:28:41,420 --> 00:28:43,420
2649 Because of those changes,
2650
2651 663
2652 00:28:43,420 --> 00:28:45,420
2653 because of having, you know,
2654
2655 664
2656 00:28:45,420 --> 00:28:47,420
2657 a mode of U-boot, most of those
2658
2659 665
2660 00:28:47,420 --> 00:28:49,420
2661 new devices having a U-boot
2662
2663 666
2664 00:28:49,420 --> 00:28:50,880
2665 with distro-support,
2666
2667 667
2668 00:28:50,880 --> 00:28:53,040
2669 having a kernel which, you know,
2670
2671 668
2672 00:28:53,040 --> 00:28:55,040
2673 one kernel image that works on all of those
2674
2675 669
2676 00:28:55,040 --> 00:28:57,040
2677 devices which are supported,
2678
2679 670
2680 00:28:57,040 --> 00:28:59,560
2681 it's really easy to support
2682
2683 671
2684 00:28:59,560 --> 00:29:01,560
2685 a new device?
2686
2687 672
2688 00:29:01,560 --> 00:29:04,100
2689 As long as it's supported by the kernel.
2690
2691 673
2692 00:29:04,100 --> 00:29:06,360
2693 But, at the same time, I think it's a big
2694
2695 674
2696 00:29:06,360 --> 00:29:07,740
2697 challenge for Debian.
2698
2699 675
2700 00:29:07,740 --> 00:29:10,280
2701 Because right now, if you look at armhf,
2702
2703 676
2704 00:29:10,280 --> 00:29:12,220
2705 we basically say, well,
2706
2707 677
2708 00:29:12,220 --> 00:29:14,220
2709 hint the installer,
2710
2711 678
2712 00:29:14,220 --> 00:29:16,220
2713 and if there's a device tree,
2714
2715 679
2716 00:29:16,220 --> 00:29:18,220
2717 it's probably going to work.
2718
2719 680
2720 00:29:18,220 --> 00:29:21,180
2721 But, what does that mean, right?
2722
2723 681
2724 00:29:23,180 --> 00:29:25,180
2725 And...
2726
2727 682
2728 00:29:25,180 --> 00:29:28,140
2729 which really work, which means,
2730
2731 683
2732 00:29:28,140 --> 00:29:29,880
2733 so, we have Vagrant
2734
2735 684
2736 00:29:29,880 --> 00:29:31,880
2737 having U-boot support
2738
2739 685
2740 00:29:31,880 --> 00:29:33,880
2741 in Debian, we have
2742
2743 686
2744 00:29:33,880 --> 00:29:36,240
2745 people testing debian-installer,
2746
2747 687
2748 00:29:36,240 --> 00:29:38,240
2749 testing the Debian kernel, so we have
2750
2751 688
2752 00:29:38,240 --> 00:29:40,820
2753 devices which really work, well supported,
2754
2755 689
2756 00:29:40,820 --> 00:29:43,280
2757 and then we have some devices
2758
2759 690
2760 00:29:43,280 --> 00:29:45,580
2761 on the other hand where, well, yes,
2762
2763 691
2764 00:29:45,580 --> 00:29:47,580
2765 there is a device tree, but no one
2766
2767 692
2768 00:29:47,580 --> 00:29:49,580
2769 has ever tried it. And
2770
2771 693
2772 00:29:49,580 --> 00:29:51,580
2773 at the moment, we have no way
2774
2775 694
2776 00:29:51,580 --> 00:29:54,140
2777 for users to differentiate
2778
2779 695
2780 00:29:54,140 --> 00:29:56,540
2781 those use case... Those
2782
2783 696
2784 00:29:56,540 --> 00:29:58,540
2785 support levels.
2786
2787 697
2788 00:29:58,540 --> 00:30:00,540
2789 So I'm wondering if we need
2790
2791 698
2792 00:30:00,540 --> 00:30:02,540
2793 like a table,
2794
2795 699
2796 00:30:02,540 --> 00:30:04,540
2797 somewhere where maybe
2798
2799 700
2800 00:30:04,540 --> 00:30:06,540
2801 some support levels, like green, yellow...
2802
2803 701
2804 00:30:06,540 --> 00:30:08,120
2805 red?
2806
2807 702
2808 00:30:08,120 --> 00:30:10,120
2809 Where green is, "yes, we have Debian
2810
2811 703
2812 00:30:10,120 --> 00:30:12,120
2813 people who have
2814
2815 704
2816 00:30:12,120 --> 00:30:14,120
2817 testing that stuff",
2818
2819 705
2820 00:30:14,120 --> 00:30:16,120
2821 yellow would be, "well, we have heard some report
2822
2823 706
2824 00:30:16,120 --> 00:30:18,120
2825 that it might work", and
2826
2827 707
2828 00:30:18,120 --> 00:30:20,120
2829 green is, you know, doesn't work,
2830
2831 708
2832 00:30:20,120 --> 00:30:22,120
2833 or we haven't tried that it works.
2834
2835 709
2836 00:30:22,120 --> 00:30:24,120
2837 Maybe we need something like that.
2838
2839 710
2840 00:30:24,120 --> 00:30:26,360
2841 But right now,
2842
2843 711
2844 00:30:26,360 --> 00:30:28,360
2845 I see from users
2846
2847 712
2848 00:30:30,360 --> 00:30:32,360
2849 "I want to run Debian on my ARM device", and
2850
2851 713
2852 00:30:32,360 --> 00:30:35,380
2853 they don't know if it's going to work.
2854
2855 714
2856 00:30:35,380 --> 00:30:37,380
2857 Yes, then...
2858
2859 715
2860 00:30:37,380 --> 00:30:43,400
2861 [audience; unintellegible]
2862
2863 716
2864 00:30:43,400 --> 00:30:45,400
2865 Yes, so Ben is saying we also need
2866
2867 717
2868 00:30:45,400 --> 00:30:47,400
2869 to track what the earliest and the latest
2870
2871 718
2872 00:30:47,400 --> 00:30:49,620
2873 kernel versions that there have been tested.
2874
2875 719
2876 00:30:49,620 --> 00:30:51,800
2877 So I think we really need to
2878
2879 720
2880 00:30:51,800 --> 00:30:53,800
2881 come up with some criteria
2882
2883 721
2884 00:30:53,800 --> 00:30:58,920
2885 to have, you know, define those kernel support levels that indicate that
2886
2887 722
2888 00:30:58,920 --> 00:31:01,920
2889 And yes, the other question is related
2890
2891 723
2892 00:31:01,920 --> 00:31:03,260
2893 to, with all those boards,
2894
2895 724
2896 00:31:03,260 --> 00:31:05,260
2897 how do we actually test them?
2898
2899 725
2900 00:31:05,260 --> 00:31:07,000
2901 So, I keep --
2902
2903 726
2904 00:31:07,000 --> 00:31:10,100
2905 it's really... remember [?]
2906
2907 727
2908 00:31:10,100 --> 00:31:12,100
2909 which is great, but also acknowledge
2910
2911 728
2912 00:31:12,100 --> 00:31:14,100
2913 those boards, they are so cheap!
2914
2915 729
2916 00:31:14,100 --> 00:31:16,100
2917 so it's like, "oh, there's a new board!
2918
2919 730
2920 00:31:16,100 --> 00:31:18,100
2921 It's £30! I'll just get it!"
2922
2923 731
2924 00:31:18,100 --> 00:31:21,020
2925 And then we have, like, those piles of boards
2926
2927 732
2928 00:31:21,020 --> 00:31:23,020
2929 and realize, well, I don't have time
2930
2931 733
2932 00:31:23,020 --> 00:31:25,020
2933 for testing all of that stuff!
2934
2935 734
2936 00:31:25,020 --> 00:31:27,200
2937 I think that's going to be a real challenge.
2938
2939 735
2940 00:31:27,200 --> 00:31:29,320
2941 hundreds -- I don't know,
2942
2943 736
2944 00:31:29,320 --> 00:31:31,320
2945 it's really hundreds of boards coming out.
2946
2947 737
2948 00:31:31,320 --> 00:31:33,900
2949 How do we support all of that?
2950
2951 738
2952 00:31:35,460 --> 00:31:38,420
2953 So, I think that's the question I wanted to raise,
2954
2955 739
2956 00:31:38,420 --> 00:31:41,160
2957 and maybe something we can talk about in the BoF
2958
2959 740
2960 00:31:41,160 --> 00:31:43,380
2961 But yes, I'm obviously
2962
2963 741
2964 00:31:43,380 --> 00:31:45,380
2965 open for questions now.
2966
2967 742
2968 00:31:55,520 --> 00:31:57,520
2969 [James / purpleidea:] Hello.
2970
2971 743
2972 00:31:57,520 --> 00:32:00,200
2973 So, don't quote me exactly,
2974
2975 744
2976 00:32:00,200 --> 00:32:02,200
2977 so, I believe
2978
2979 745
2980 00:32:02,200 --> 00:32:04,200
2981 RedHat has this problem as well, obviously,
2982
2983 746
2984 00:32:04,200 --> 00:32:06,200
2985 I mean, they are obviously more interested in the
2986
2987 747
2988 00:32:06,200 --> 00:32:08,580
2989 ARM64-only server stuff,
2990
2991 748
2992 00:32:08,580 --> 00:32:10,580
2993 but I believe the way they are going about it
2994
2995 749
2996 00:32:10,580 --> 00:32:12,880
2997 maybe it's something could collaborate on
2998
2999 750
3000 00:32:12,880 --> 00:32:15,080
3001 is, they are trying to make sure and push
3002
3003 751
3004 00:32:15,080 --> 00:32:17,080
3005 all the vendors to be standardized
3006
3007 752
3008 00:32:17,080 --> 00:32:19,260
3009 because, as you pointed out,
3010
3011 753
3012 00:32:19,260 --> 00:32:21,540
3013 it's just not, it's crazy
3014
3015 754
3016 00:32:21,540 --> 00:32:24,540
3017 with all the different device tree differences and so on,
3018
3019 755
3020 00:32:24,540 --> 00:32:26,540
3021 so I believe their strategy is to
3022
3023 756
3024 00:32:26,540 --> 00:32:28,840
3025 work with the vendors, and
3026
3027 757
3028 00:32:28,840 --> 00:32:30,840
3029 require everything to be upstreamed, and
3030
3031 758
3032 00:32:30,840 --> 00:32:32,840
3033 no device tree
3034
3035 759
3036 00:32:32,840 --> 00:32:34,840
3037 specifically, to push everything to just boot
3038
3039 760
3040 00:32:34,840 --> 00:32:36,840
3041 with one kernel, and so on.
3042
3043 761
3044 00:32:36,840 --> 00:32:38,840
3045 So maybe that could be
3046
3047 762
3048 00:32:38,840 --> 00:32:40,840
3049 sacrifice a few of the
3050
3051 763
3052 00:32:40,840 --> 00:32:42,840
3053 shitty boards, but work with the vendors
3054
3055 764
3056 00:32:42,840 --> 00:32:45,820
3057 that make the ones that are upstreamed.
3058
3059 765
3060 00:32:45,820 --> 00:32:47,820
3061 [Martin:] Yes, so I may be mistaken, but
3062
3063 766
3064 00:32:47,820 --> 00:32:49,820
3065 as far as I know, RedHat
3066
3067 767
3068 00:32:49,820 --> 00:32:51,620
3069 basically says, "we only support
3070
3071 768
3072 00:32:51,620 --> 00:32:53,620
3073 UEFI and ACPI"
3074
3075 769
3076 00:32:53,620 --> 00:32:55,620
3077 and that's fair enough,
3078
3079 770
3080 00:32:55,620 --> 00:32:57,620
3081 and I think that works for them, because
3082
3083 771
3084 00:32:57,620 --> 00:32:59,900
3085 it's just the server world they care about,
3086
3087 772
3088 00:32:59,900 --> 00:33:01,900
3089 but I think in the case of Debian
3090
3091 773
3092 00:33:01,900 --> 00:33:03,900
3093 there are so many boards out there which
3094
3095 774
3096 00:33:03,900 --> 00:33:05,900
3097 don't need those specs,
3098
3099 775
3100 00:33:05,900 --> 00:33:08,600
3101 and we sort of live, like, in the "real world"
3102
3103 776
3104 00:33:08,600 --> 00:33:10,980
3105 so I don't think we can
3106
3107 777
3108 00:33:10,980 --> 00:33:12,980
3109 Well -- I know it's different. I mean,
3110
3111 778
3112 00:33:12,980 --> 00:33:14,980
3113 if RedHat wants to target
3114
3115 779
3116 00:33:14,980 --> 00:33:16,980
3117 the server people, like, the people
3118
3119 780
3120 00:33:16,980 --> 00:33:18,980
3121 which give money
3122
3123 781
3124 00:33:18,980 --> 00:33:20,980
3125 that's fair enough, that makes sense for them
3126
3127 782
3128 00:33:20,980 --> 00:33:22,980
3129 but Debian, we run everywhere
3130
3131 783
3132 00:33:22,980 --> 00:33:24,980
3133 so I think we need to support
3134
3135 784
3136 00:33:24,980 --> 00:33:26,980
3137 all those weird
3138
3139 785
3140 00:33:26,980 --> 00:33:28,980
3141 cases as well.
3142
3143 786
3144 00:33:28,980 --> 00:33:30,980
3145 And maybe if it gets too weird,
3146
3147 787
3148 00:33:30,980 --> 00:33:32,980
3149 I mean,
3150
3151 788
3152 00:33:32,980 --> 00:33:35,360
3153 I put in some work in the Dragonboard,
3154
3155 789
3156 00:33:35,360 --> 00:33:37,360
3157 and then I realized,
3158
3159 790
3160 00:33:37,360 --> 00:33:39,360
3161 am I actually spending the time because
3162
3163 791
3164 00:33:39,360 --> 00:33:41,360
3165 no one, like, I have heard
3166
3167 792
3168 00:33:41,360 --> 00:33:43,360
3169 from no one that they have
3170
3171 793
3172 00:33:43,360 --> 00:33:45,360
3173 that board, I mean, like [?]
3174
3175 794
3176 00:33:45,360 --> 00:33:47,360
3177 for the Raspberry Pi, but I have heard
3178
3179 795
3180 00:33:47,360 --> 00:33:49,360
3181 like, pretty much no one has the
3182
3183 796
3184 00:33:49,360 --> 00:33:51,360
3185 Dragonboard, so maybe,
3186
3187 797
3188 00:33:51,360 --> 00:33:53,920
3189 ...it's not worth my while,
3190
3191 798
3192 00:33:53,920 --> 00:33:55,920
3193 but if there's a board
3194
3195 799
3196 00:33:55,920 --> 00:33:57,920
3197 that people want to use it,
3198
3199 800
3200 00:33:57,920 --> 00:34:00,340
3201 I think we should support it in Debian.
3202
3203 801
3204 00:34:00,340 --> 00:34:02,340
3205 And we do have the infrastructure
3206
3207 802
3208 00:34:02,340 --> 00:34:04,340
3209 so we, you know, it doesn't have to be
3210
3211 803
3212 00:34:04,340 --> 00:34:06,340
3213 UEFI and ACPI,
3214
3215 804
3216 00:34:06,340 --> 00:34:08,340
3217 we can support other devices, because
3218
3219 805
3220 00:34:08,340 --> 00:34:10,340
3221 we have done it before.
3222
3223 806
3224 00:34:10,340 --> 00:34:12,340
3225 But I definitively agree with
3226
3227 807
3228 00:34:12,340 --> 00:34:14,960
3229 the point about getting more standardization
3230
3231 808
3232 00:34:14,960 --> 00:34:16,960
3233 and that stuff, so
3234
3235 809
3236 00:34:16,960 --> 00:34:18,960
3237 I agree, yes.
3238
3239 810
3240 00:34:20,360 --> 00:34:22,920
3241 And the whole distro-support
3242
3243 811
3244 00:34:22,920 --> 00:34:25,600
3245 in U-boot, that has really made things easier for us.
3246
3247 812
3248 00:34:33,220 --> 00:34:35,880
3249 [Phil:] I may begin to say some of the same things Steve has, anyway.
3250
3251 813
3252 00:34:35,880 --> 00:34:38,500
3253 Steve]: So, yes, on the
3254
3255 814
3256 00:34:38,500 --> 00:34:41,220
3257 ACPI versus DT thing,
3258
3259 815
3260 00:34:41,220 --> 00:34:43,220
3261 it's more a question
3262
3263 816
3264 00:34:43,220 --> 00:34:45,980
3265 of the quality of the implementation of the
3266
3267 817
3268 00:34:45,980 --> 00:34:48,800
3269 of the firmware,
3270
3271 818
3272 00:34:48,800 --> 00:34:50,800
3273 and the upstream support that is...
3274
3275 819
3276 00:34:50,800 --> 00:34:52,800
3277 DT isn't fundamentally
3278
3279 820
3280 00:34:52,800 --> 00:34:55,260
3281 worse for upstream support
3282
3283 821
3284 00:34:55,260 --> 00:34:57,780
3285 than ACPI is,
3286
3287 822
3288 00:34:57,780 --> 00:35:00,980
3289 RedHat are
3290
3291 823
3292 00:35:00,980 --> 00:35:02,980
3293 have some reasons
3294
3295 824
3296 00:35:02,980 --> 00:35:04,980
3297 [?] of sensibility,
3298
3299 825
3300 00:35:04,980 --> 00:35:06,980
3301 but then, it's not
3302
3303 826
3304 00:35:06,980 --> 00:35:09,380
3305 fundamentally, it doesn't fundamentally stop it
3306
3307 827
3308 00:35:09,380 --> 00:35:11,380
3309 people supporting it, specially
3310
3311 828
3312 00:35:11,380 --> 00:35:13,380
3313 a community distro like Debian.
3314
3315 829
3316 00:35:13,380 --> 00:35:16,340
3317 I was also going to ask Martin,
3318
3319 830
3320 00:35:16,340 --> 00:35:18,340
3321 have you talked to
3322
3323 831
3324 00:35:18,340 --> 00:35:20,560
3325 people like kernel CI
3326
3327 832
3328 00:35:20,560 --> 00:35:24,660
3329 about testing and coverage stuff?
3330
3331 833
3332 00:35:24,660 --> 00:35:26,660
3333 [Martin:] Yes, not really, but
3334
3335 834
3336 00:35:26,660 --> 00:35:29,740
3337 I think there are some things we should look into.
3338
3339 835
3340 00:35:29,740 --> 00:35:31,740
3341 [Steve:] Yes, because the whole --
3342
3343 836
3344 00:35:31,740 --> 00:35:33,740
3345 Obviously, making sure the kernel boots
3346
3347 837
3348 00:35:33,740 --> 00:35:35,740
3349 on random hardware
3350
3351 838
3352 00:35:35,740 --> 00:35:38,080
3353 stuff, is exactly what that's doing
3354
3355 839
3356 00:35:39,740 --> 00:35:42,360
3357 and there's at least infrastructure there that might be
3358
3359 840
3360 00:35:42,360 --> 00:35:44,740
3361 nice to play with.
3362
3363 841
3364 00:35:46,480 --> 00:35:48,480
3365 [Martin:] Yes. I think that's a good idea.
3366
3367 842
3368 00:35:50,480 --> 00:35:52,480
3369 [sledge:] So, on the whole 96Boards thing,
3370
3371 843
3372 00:35:52,480 --> 00:35:54,480
3373 sorry!
3374
3375 844
3376 00:35:54,480 --> 00:35:56,480
3377 Most of the engineers involved
3378
3379 845
3380 00:35:56,480 --> 00:35:58,480
3381 are totally aware of
3382
3383 846
3384 00:35:58,480 --> 00:36:00,480
3385 how [?] it really is.
3386
3387 847
3388 00:36:00,480 --> 00:36:02,480
3389 We tried to tell management
3390
3391 848
3392 00:36:02,480 --> 00:36:04,480
3393 they would --
3394
3395 849
3396 00:36:04,480 --> 00:36:06,480
3397 They don't want to listen.
3398
3399 850
3400 00:36:06,480 --> 00:36:08,480
3401 Umm.. So,
3402
3403 851
3404 00:36:08,480 --> 00:36:10,480
3405 there has been a huge amount of pushback
3406
3407 852
3408 00:36:10,480 --> 00:36:13,000
3409 saying, you know, "we're Linaro
3410
3411 853
3412 00:36:13,000 --> 00:36:15,380
3413 we should make sure this is all upstreamed".
3414
3415 854
3416 00:36:17,380 --> 00:36:19,380
3417 [Martin:] Well, I am aware
3418
3419 855
3420 00:36:19,380 --> 00:36:21,380
3421 it's just, Linaro
3422
3423 856
3424 00:36:21,380 --> 00:36:23,380
3425 has a really good brand,
3426
3427 857
3428 00:36:23,380 --> 00:36:25,380
3429 so people expect, you know, when I saw
3430
3431 858
3432 00:36:25,380 --> 00:36:27,380
3433 96Boards it's Linaro,
3434
3435 859
3436 00:36:27,380 --> 00:36:29,800
3437 obviously that stuff it's going to work!
3438
3439 860
3440 00:36:29,800 --> 00:36:31,800
3441 and that's&nbs