[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:20.71,Default,,0000,0000,0000,,{\i1}35C3 preroll music{\i0} Dialogue: 0,0:00:20.71,0:00:27.66,Default,,0000,0000,0000,,Herald: Also Opens Source Firmware ist\Neine wichtige Erfolgsgeschichte der Open- Dialogue: 0,0:00:27.66,0:00:33.97,Default,,0000,0000,0000,,Source-Bewegung gewesen bislang. Und es\Nwird auch zunehmendermaßen wichtig werden Dialogue: 0,0:00:33.97,0:00:44.51,Default,,0000,0000,0000,,für die Buzzword des Tages: IoT. Philipp\Nwird uns von der Entwicklung von Open Dialogue: 0,0:00:44.51,0:00:50.66,Default,,0000,0000,0000,,Source Firmware etwas erzählen, sowie ein\NAusblick auf das, was wir uns erwarten Dialogue: 0,0:00:50.66,0:00:55.55,Default,,0000,0000,0000,,können. Und ich glaube das wird ein sehr\Ninteressanter Talk sein. Ich freue mich, Dialogue: 0,0:00:55.55,0:01:01.83,Default,,0000,0000,0000,,dass ihr alle hier seid. Ja, bitte helft\Nmir dabei ihn zu begrüßen. Dialogue: 0,0:01:01.83,0:01:10.97,Default,,0000,0000,0000,,{\i1}Applaus{\i0} Dialogue: 0,0:01:10.97,0:01:14.24,Default,,0000,0000,0000,,Philipp: Ja. Okay, so, also heute werden Dialogue: 0,0:01:14.24,0:01:18.44,Default,,0000,0000,0000,,wir über Open Source Firmware sprechen, "A\Nlove story". Die Slides sind leider in Dialogue: 0,0:01:18.44,0:01:22.45,Default,,0000,0000,0000,,Englisch. Ich habe versucht sie in Deutsch\Nzu übersetzen, aber es funktioniert nicht. Dialogue: 0,0:01:22.45,0:01:25.78,Default,,0000,0000,0000,,Open Source Firmware oder allgemein\NFirmware-Entwicklung ist halt größtenteils Dialogue: 0,0:01:25.78,0:01:31.27,Default,,0000,0000,0000,,abhängig von englischen Wörtern und die zu\Nübersetzen tut weh und die versteht dann Dialogue: 0,0:01:31.27,0:01:34.99,Default,,0000,0000,0000,,hier auch keiner mehr im Deutschen\Nsozusagen. Erst mal ein bisschen über Dialogue: 0,0:01:34.99,0:01:38.77,Default,,0000,0000,0000,,mich. Ich bin der Head of 9Element Cyber\NSecurity ist so eine kleine Firma in Dialogue: 0,0:01:38.77,0:01:42.35,Default,,0000,0000,0000,,Bochum, nichts Besonderes. Wir haben die\NOpen Source Firmware Conference dieses Dialogue: 0,0:01:42.35,0:01:47.49,Default,,0000,0000,0000,,Jahr ausgerichtet in Erlangen. Ich bin\Nauch coreboot und LinuxBoot Projekt-Member Dialogue: 0,0:01:47.49,0:01:52.55,Default,,0000,0000,0000,,also Entwickler im Endeffekt, aber auch im\NLeadership-Team tätig und vielleicht kennt Dialogue: 0,0:01:52.55,0:01:56.93,Default,,0000,0000,0000,,einer oder der andere von euch mich unten\Naus dem naja, nicht Hackcenter, aber ich Dialogue: 0,0:01:56.93,0:02:02.11,Default,,0000,0000,0000,,mache immer dieses coreboot-Flashing schon\Nseit fünf Jahren beim Kongress. Und ja, Dialogue: 0,0:02:02.11,0:02:07.84,Default,,0000,0000,0000,,ich bin auch im Hackerspace aktiv, mache\Nseit zehn Jahren IT-Security beruflich und Dialogue: 0,0:02:07.84,0:02:11.42,Default,,0000,0000,0000,,ich bin auch Firmware-Entwickler seit fünf\NJahren. Könnt mich gerne bei Twitter adden Dialogue: 0,0:02:11.42,0:02:16.32,Default,,0000,0000,0000,,oder was auch immer über den Firmen-\NAccount. Ist auch nicht so ganz wichtig. Dialogue: 0,0:02:16.32,0:02:20.13,Default,,0000,0000,0000,,Motivation: warum mache ich überhaupt\Ndiesen Talk? Eigentlich wollte ich einen Dialogue: 0,0:02:20.13,0:02:23.59,Default,,0000,0000,0000,,Talk machen erst einmal der Leuten die\Nüberhaupt keine Ahnung von Firmware- Dialogue: 0,0:02:23.59,0:02:26.07,Default,,0000,0000,0000,,Entwicklung haben, die Firmware-\NEntwicklung nahebringen. Das heißt wir Dialogue: 0,0:02:26.07,0:02:29.75,Default,,0000,0000,0000,,wollen auch neue Entwickler haben. Das ist\Nsehr sehr wichtig und das Problem Dialogue: 0,0:02:29.75,0:02:34.26,Default,,0000,0000,0000,,allgemein mit der Firmware-Entwicklung\Nist, dass sehr viel unter NDA- Dialogue: 0,0:02:34.26,0:02:38.32,Default,,0000,0000,0000,,Dokumentation ist, das sehr komplex ist.\NViele Leute sagen "Oh mein Gott Firmware. Dialogue: 0,0:02:38.32,0:02:42.39,Default,,0000,0000,0000,,Das ist ja noch komplexer als Linux-\NKernel-Entwicklung und ja das war einer Dialogue: 0,0:02:42.39,0:02:47.27,Default,,0000,0000,0000,,der Gründe. Der andere Beweggrund war alle\Nsagen immer BIOS und BIOS ist eigentlich Dialogue: 0,0:02:47.27,0:02:52.39,Default,,0000,0000,0000,,Basic Input Output System und das ist\Nschon tot seit dem Jahre 2000 und das Dialogue: 0,0:02:52.39,0:02:57.06,Default,,0000,0000,0000,,bedeutet wir wollen eigentlich mal über\Nmodernere Sachen reden. Zum anderen gibt Dialogue: 0,0:02:57.06,0:03:00.60,Default,,0000,0000,0000,,es auch eine Story dazu.Also warum\Nüberhaupt Open Source Firmware Entwicklung Dialogue: 0,0:03:00.60,0:03:03.88,Default,,0000,0000,0000,,wichtig ist. Dazu gibt's diesen netten\NMann. Den habt ihr wahrscheinlich schon Dialogue: 0,0:03:03.88,0:03:07.88,Default,,0000,0000,0000,,mal gesehen. Das ist Ronald Minnich. Der\Nkommt aus USA. Der arbeitet bei Google. Dialogue: 0,0:03:07.88,0:03:12.73,Default,,0000,0000,0000,,Und damals als er noch bei Los Alamos\NNational Laboratory gearbeitet hat, hatten Dialogue: 0,0:03:12.73,0:03:17.44,Default,,0000,0000,0000,,die einen CPU-Cluster aufgesetzt da waren\Nso 1024 PCs. Das war noch damals, da war Dialogue: 0,0:03:17.44,0:03:21.94,Default,,0000,0000,0000,,noch nicht so viel mit Hardware, also\Nrelativ alles, noch sehr low-levelig. Und Dialogue: 0,0:03:21.94,0:03:25.26,Default,,0000,0000,0000,,die hatten die aufgesetzt, haben die dann\Nalle gestartet und hofften, dass der Dialogue: 0,0:03:25.26,0:03:31.06,Default,,0000,0000,0000,,gesamte Cluster online ging mit den ganzen\NRechnern und dann stellte sich nach fünf Dialogue: 0,0:03:31.06,0:03:36.15,Default,,0000,0000,0000,,Minuten fest, da passierte nichts. Und\Ndann haben sie mal einen Praktikant da Dialogue: 0,0:03:36.15,0:03:39.66,Default,,0000,0000,0000,,hingeschickt. Der sollte mal ein Display\Nanschließen, mal gucken was da los ist. Dialogue: 0,0:03:39.66,0:03:43.53,Default,,0000,0000,0000,,Dann hat der das Display angeschlossen und\Nda stand dann "Press F2 to continue". Dialogue: 0,0:03:43.53,0:03:46.79,Default,,0000,0000,0000,,{\i1}Lachen{\i0}\NDas ist bei vielleicht Serversystemen Dialogue: 0,0:03:46.79,0:03:50.70,Default,,0000,0000,0000,,nicht so die beste Lösung, wenn die\NFirmware halt dann irgendwie noch so einen Dialogue: 0,0:03:50.70,0:03:56.43,Default,,0000,0000,0000,,manuellen Input braucht. Das heißt im\NEndeffekt hält das einen davon ab die Dialogue: 0,0:03:56.43,0:03:59.76,Default,,0000,0000,0000,,ganzen Systeme schön zu starten. Damit\Nhatten die dann jahrelang zu kämpfen. Die Dialogue: 0,0:03:59.76,0:04:02.72,Default,,0000,0000,0000,,Praktikanten mussten immer hingehen zu den\NRechnern, wenn die neu gestartet werden Dialogue: 0,0:04:02.72,0:04:06.57,Default,,0000,0000,0000,,mussten, dann musst du immer "Press F2 to\Ncontinue" machen. Das war nicht sehr schön Dialogue: 0,0:04:06.57,0:04:11.32,Default,,0000,0000,0000,,und das ist einer der Gründe glaube ich\Nauch oder auch eine gute Story, warum man Dialogue: 0,0:04:11.32,0:04:15.42,Default,,0000,0000,0000,,im Endeffekt mal über Open Source Firmware\Nnachdenken sollte. Als allererstes werden Dialogue: 0,0:04:15.42,0:04:19.23,Default,,0000,0000,0000,,wir uns mal ein bisschen was anschauen\Nüber die Hardware. Weil es fängt ja mit Dialogue: 0,0:04:19.23,0:04:23.18,Default,,0000,0000,0000,,der Hardware an und dann werden wir uns\Nauch noch hinterher mal angucken, was ist Dialogue: 0,0:04:23.18,0:04:26.89,Default,,0000,0000,0000,,eigentlich Firmware? Und dann auch noch\Nmal schauen, über was für Firmware wir Dialogue: 0,0:04:26.89,0:04:32.48,Default,,0000,0000,0000,,überhaupt sprechen. Das ist ein Board von\NFacebook, OpenCellular. Das im Endeffekt Dialogue: 0,0:04:32.48,0:04:36.50,Default,,0000,0000,0000,,so ein Open Source Base Station oder auch\NOpen Hardware Base Station. Also die Dialogue: 0,0:04:36.50,0:04:40.51,Default,,0000,0000,0000,,machen wirklich Open Hardware. Man kann\Ndie Schaltpläne im Internet runterladen. Dialogue: 0,0:04:40.51,0:04:45.06,Default,,0000,0000,0000,,Die Board Schemata, es ist alles da. Im\NEndeffekt das könnt ihr bei GitHub einfach Dialogue: 0,0:04:45.06,0:04:49.33,Default,,0000,0000,0000,,tun. Ich hab das jetzt mal als Beispiel\Ngenommen. Dieses Ding hat auch Open Source Dialogue: 0,0:04:49.33,0:04:53.52,Default,,0000,0000,0000,,Firmware. Wie das, wenn man sich mal so\Nein Block Diagramm heutzutage anguckt, was Dialogue: 0,0:04:53.52,0:04:57.02,Default,,0000,0000,0000,,da alles so drin ist, das besteht so aus\Nmehreren Platinen. Das hat so einen Dialogue: 0,0:04:57.02,0:04:59.02,Default,,0000,0000,0000,,Konnektor, die werden so übereinander\Ngestackt. Das ist nicht alles auf einer Dialogue: 0,0:04:59.02,0:05:02.39,Default,,0000,0000,0000,,Platine, sondern auf mehreren. Das hat\Nbestimmte Gründe. Das sei mal Dialogue: 0,0:05:02.39,0:05:05.61,Default,,0000,0000,0000,,dahingestellt. Das obere ist dann der\NHost-Prozessor. Das war das Board gerade, Dialogue: 0,0:05:05.61,0:05:08.24,Default,,0000,0000,0000,,was wir gesehen haben. Dann gibt es die\NPower Supply, das Front-Panel und dann Dialogue: 0,0:05:08.24,0:05:12.06,Default,,0000,0000,0000,,gibt's hier unten, das gehört auch noch so\Nein bisschen zu dem Hauptboard. Das ist Dialogue: 0,0:05:12.06,0:05:15.77,Default,,0000,0000,0000,,auf jeden Fall ein riesen Blockdiagramm,\Nda gibt's mehrere Komponenten und das ist Dialogue: 0,0:05:15.77,0:05:19.38,Default,,0000,0000,0000,,auch alles sehr, sehr komplex und wenn man\Nsich das jetzt nochmal ein bisschen Dialogue: 0,0:05:19.38,0:05:25.09,Default,,0000,0000,0000,,genauer anschaut, dann stellt man relativ\Nschnell fest, da unten steht TIVA, oben Dialogue: 0,0:05:25.09,0:05:29.19,Default,,0000,0000,0000,,steht noch Intel Atom und da hinten steht\Nnoch was von so einem Power Controller und Dialogue: 0,0:05:29.19,0:05:33.89,Default,,0000,0000,0000,,da ist auch noch so ein TPM. Die haben\Nalle Firmware. Das heißt wir haben Dialogue: 0,0:05:33.89,0:05:37.71,Default,,0000,0000,0000,,eigentlich, wenn wir so ein Laptop zum\NBeispiel jetzt haben, ThinkPad wenn ihr Dialogue: 0,0:05:37.71,0:05:42.12,Default,,0000,0000,0000,,den mal seht, da sind dann 15 verschiedene\NProzessoren drauf. Viele davon sind Dialogue: 0,0:05:42.12,0:05:45.99,Default,,0000,0000,0000,,natürlich Mikrocontroller, aber auch\Nvieles ist schon schneller. Es sind dann Dialogue: 0,0:05:45.99,0:05:49.24,Default,,0000,0000,0000,,irgendwelche ARM Cores oder vielleicht\Nsogar x86-Prozessoren. Das heißt momentan Dialogue: 0,0:05:49.24,0:05:53.08,Default,,0000,0000,0000,,ist überall Firmare drin. Das seht ihr nur\Nnicht. Ihr denkt ihr habt so einen Dialogue: 0,0:05:53.08,0:06:00.15,Default,,0000,0000,0000,,Prozessor, da es dann Firmware für das\NBIOS. Ja, Pustekuchen! Da ist im Endeffekt Dialogue: 0,0:06:00.15,0:06:03.54,Default,,0000,0000,0000,,überall Firmware drin und worüber wir\Nheute größtenteils sprechen werden, ist Dialogue: 0,0:06:03.54,0:06:06.98,Default,,0000,0000,0000,,die Host-Prozessor-Firmware, weil wenn ich\Nüber alle Firmwares reden würde das wäre Dialogue: 0,0:06:06.98,0:06:09.35,Default,,0000,0000,0000,,viel zu breit und das würde dann Tage\Ndauern, bis wir da überhaupt mal Dialogue: 0,0:06:09.35,0:06:13.93,Default,,0000,0000,0000,,durchkommen. Generell ist zu sagen so\NHardware wird gefertigt von sogenannten Dialogue: 0,0:06:13.93,0:06:20.47,Default,,0000,0000,0000,,OEMs und ODMs. Das sind Original Equipment\Nor Design Manufacturer. Das ist im Dialogue: 0,0:06:20.47,0:06:23.74,Default,,0000,0000,0000,,Endeffekt wenn ihr euch Lenovo, Dell und\NHP vorstellt, die gehen halt hin und Dialogue: 0,0:06:23.74,0:06:27.74,Default,,0000,0000,0000,,produzieren die Hardware gar nicht mehr\Nselber. Die beauftragten Firmen, die Dialogue: 0,0:06:27.74,0:06:32.23,Default,,0000,0000,0000,,sogenannten ODM, zum Beispiel Vistron und\NQuanta, dass die diese Hardware Dialogue: 0,0:06:32.23,0:06:35.64,Default,,0000,0000,0000,,produzieren und auch die Schaltpläne\Nmachen. Das heißt Lenovo beauftragt das Dialogue: 0,0:06:35.64,0:06:41.86,Default,,0000,0000,0000,,nur und verkauft dann halt die Hardware an\Ndie Kunden. Diese OEM und ODM das sind Dialogue: 0,0:06:41.86,0:06:47.35,Default,,0000,0000,0000,,auch die Kunden von den SoC-Vendoren,\NSystem On Chip Vendoren. Das sind z.B. Dialogue: 0,0:06:47.35,0:06:51.07,Default,,0000,0000,0000,,Intel, AMD, Qualcomm, Cavium und die\Nganzen Prozessor-Hersteller, die ihr so Dialogue: 0,0:06:51.07,0:06:55.96,Default,,0000,0000,0000,,kennt. Intels Kunden sind nicht wir, wenn\Nwir so einen Intel-Rechner kaufen, sondern Dialogue: 0,0:06:55.96,0:06:59.39,Default,,0000,0000,0000,,in Wirklichkeit ist es Lenovo, HP und\Nandere große Firmen, die Hardware Dialogue: 0,0:06:59.39,0:07:04.74,Default,,0000,0000,0000,,produzieren. Dann ist noch wichtig zu\Nsagen: Die meisten dieser OEMs, die haben Dialogue: 0,0:07:04.74,0:07:07.82,Default,,0000,0000,0000,,auch keinen Bock, die Firmware selber zu\Nschreiben für diese Hardware, weil diese Dialogue: 0,0:07:07.82,0:07:12.16,Default,,0000,0000,0000,,Hardware benötigt Firmware und das heißt\Ndie gehen zu sogenannten Independent BIOS Dialogue: 0,0:07:12.16,0:07:16.07,Default,,0000,0000,0000,,Vendors. Das ist auch wieder so ein\Nunschöner Begriff. Eigentlich könnte man Dialogue: 0,0:07:16.07,0:07:19.24,Default,,0000,0000,0000,,es umlabeln in Independent Firmware\NVendors, aber es sind halt Unternehmen, Dialogue: 0,0:07:19.24,0:07:24.44,Default,,0000,0000,0000,,die dann halt Firmware-Entwicklung im\NAuftrag vom OEM machen, die dann halt die Dialogue: 0,0:07:24.44,0:07:29.18,Default,,0000,0000,0000,,Hardware hoch bringen, das Ganze zum\NLaufen bringen und das im Endeffekt so die Dialogue: 0,0:07:29.18,0:07:34.55,Default,,0000,0000,0000,,Logik, die dahinter ist. Was wir uns heute\Nangucken habe ich schon gesagt: Host- Dialogue: 0,0:07:34.55,0:07:37.91,Default,,0000,0000,0000,,Prozessor-Firmware. Das ist ein Flash-\NChip, der hat oben so einen roten Punkt Dialogue: 0,0:07:37.91,0:07:42.52,Default,,0000,0000,0000,,drauf. Das macht man zur Identifikation,\Nist nicht immer der Fall, ab und zu. Das Dialogue: 0,0:07:42.52,0:07:45.99,Default,,0000,0000,0000,,ist jetzt PC Engines APU2. Die kann man\Nganz gut sehen. Dann gibt's auch noch so Dialogue: 0,0:07:45.99,0:07:49.27,Default,,0000,0000,0000,,einen Header, dann kann man den SPI-Flash\Nauch noch auslesen. Aber im Endeffekt Dialogue: 0,0:07:49.27,0:07:53.58,Default,,0000,0000,0000,,diese Flash-Chips, die findet man überall.\Noder auf vielen Systemen, in Routern, in Dialogue: 0,0:07:53.58,0:07:57.69,Default,,0000,0000,0000,,Desktop, in Laptops, in Servern - überall\Ngibt's diese Flash-Chips. Die haben Dialogue: 0,0:07:57.69,0:08:02.97,Default,,0000,0000,0000,,manchmal andere Formfaktoren. Das ist\Njetzt SOIC-8, es gibt noch WSON und was Dialogue: 0,0:08:02.97,0:08:08.11,Default,,0000,0000,0000,,weiß ich alles. Alle möglichen Chip-\NPackages. Und da werden wir heute Dialogue: 0,0:08:08.11,0:08:11.64,Default,,0000,0000,0000,,größtenteils drüber sprechen. Wenn man\Nsich überhaupt mal so Flash-Memory Dialogue: 0,0:08:11.64,0:08:14.37,Default,,0000,0000,0000,,anguckt, also es gibt diesen NOR-Flash von\Ndem ich gerade gesprochen habe und nicht Dialogue: 0,0:08:14.37,0:08:19.14,Default,,0000,0000,0000,,gezeigt habe. Der ist meistens am SPI-Bus\Nangeschlossen, ist auf jeden Fall sehr, Dialogue: 0,0:08:19.14,0:08:23.63,Default,,0000,0000,0000,,sehr schnell, hat hohe Kosten, weil den\Nmuss man zusätzlich auf die Platine Dialogue: 0,0:08:23.63,0:08:27.76,Default,,0000,0000,0000,,sozusagen aufbringen, ist aber auch\Nrelativ easy in der Integration, weil das Dialogue: 0,0:08:27.76,0:08:31.42,Default,,0000,0000,0000,,SPI-Busprotokoll das ist nicht so komplex\Nund es gibt schon für alles Treiber in den Dialogue: 0,0:08:31.42,0:08:38.04,Default,,0000,0000,0000,,entsprechenden SoCs und generell ist es\Nsehr, sehr easy. Dann gibts noch EMMC und Dialogue: 0,0:08:38.04,0:08:41.83,Default,,0000,0000,0000,,das wird mittlerweile teilweise auch für\NFirmware verwendet. Das hat aber so ein Dialogue: 0,0:08:41.83,0:08:46.29,Default,,0000,0000,0000,,paar Probleme. Das heißt das ist sehr\Nlangsam und es ist zwar eine low cost Dialogue: 0,0:08:46.29,0:08:50.61,Default,,0000,0000,0000,,Solution, aber es ist wirklich schwierig\Ndieses Ding im Endeffekt zu Dialogue: 0,0:08:50.61,0:08:53.63,Default,,0000,0000,0000,,initialisieren. Das heißt die Firmware\Nmuss sehr, sehr viel Arbeit machen, damit Dialogue: 0,0:08:53.63,0:08:57.29,Default,,0000,0000,0000,,das alles anläuft und dann sozusagen\Nhochstartet. Also eher sehr selten Dialogue: 0,0:08:57.29,0:09:01.33,Default,,0000,0000,0000,,genutzt, gibt's bei Chromebooks nur ein\Npaar, ist aber nicht Standard. Ihr könnt Dialogue: 0,0:09:01.33,0:09:03.58,Default,,0000,0000,0000,,davon ausgehen, dass fast überall NOR-\NFlash ist. Und dann gibt es noch diese Dialogue: 0,0:09:03.58,0:09:08.07,Default,,0000,0000,0000,,Mikrocontroller wovon ich gesprochen habe.\NDie haben meistens internen Flash. Der hat Dialogue: 0,0:09:08.07,0:09:12.04,Default,,0000,0000,0000,,aber wenig Speicherkapazität. Das sind\Ndann mehrere Kilobyte oder so, aber nicht Dialogue: 0,0:09:12.04,0:09:17.75,Default,,0000,0000,0000,,jetzt halt Megabyte oder vielleicht\NGigabyte. Da unten seht ihr auch so einen Dialogue: 0,0:09:17.75,0:09:21.64,Default,,0000,0000,0000,,externen Flasher. Den benötigt man mal,\Nwenn man darauf das Ding auslesen will und Dialogue: 0,0:09:21.64,0:09:25.42,Default,,0000,0000,0000,,das nicht vom Betriebssystem aus kann oder\Nschreiben kann und doch noch eine Platine Dialogue: 0,0:09:25.42,0:09:29.89,Default,,0000,0000,0000,,mit dieser Klemme. Die sieht man da,\Nkönnt ihr euch auch kaufen. Generell ist Dialogue: 0,0:09:29.89,0:09:34.15,Default,,0000,0000,0000,,zu sagen, über die letzten Jahre hat die\NGröße, oder letzten Jahrzehnte, hat die Dialogue: 0,0:09:34.15,0:09:39.87,Default,,0000,0000,0000,,Größe des NOR-Flash-Speichers zugenommen.\NFrüher zu Zeiten noch, wo halt so 2000 Dialogue: 0,0:09:39.87,0:09:44.31,Default,,0000,0000,0000,,herum gab es noch nicht so viel Speicher\Ndas heißt es gab so maximal 512 Kilobyte Dialogue: 0,0:09:44.31,0:09:49.71,Default,,0000,0000,0000,,oder 1 MB Flash-Speicher. Heutzutage ist\Nin aktuellen Laptops 16 Megabyte Speicher Dialogue: 0,0:09:49.71,0:09:56.55,Default,,0000,0000,0000,,verbaut und Google hat, seit glaub' letzter\NWoche, beim coreboot tree sind die auf 32 Megabyte Dialogue: 0,0:09:56.55,0:10:01.51,Default,,0000,0000,0000,,hochgegangen. Da gab's das erste Board mit\N32 Megabyte SPI NOR-Flash. Das heißt, es wird Dialogue: 0,0:10:01.51,0:10:06.29,Default,,0000,0000,0000,,immer mehr werden und bei Sermon ist es\Nschon aktuell 512 Megabyte. Das heißt, mit Dialogue: 0,0:10:06.29,0:10:10.69,Default,,0000,0000,0000,,512 Megabyte - da kann man echt schon eine\NMenge machen. Da kriegt ihr noch Dialogue: 0,0:10:10.69,0:10:17.06,Default,,0000,0000,0000,,zusätzlich zur Firmware, einen Linux-\NKernel rein, eine initramfs, einen Chrome, Dialogue: 0,0:10:17.06,0:10:24.76,Default,,0000,0000,0000,,den XServer {\i1}Kichern{\i0}, nodejs, was ihr\Nauch wollt. {\i1}Lachen{\i0} Und das heißt die Dialogue: 0,0:10:24.76,0:10:28.06,Default,,0000,0000,0000,,Firmware, die auf unseren Systemen ist, die\Nwächst bei allen Prozessoren immer und Dialogue: 0,0:10:28.06,0:10:30.88,Default,,0000,0000,0000,,immer mehr. Es gibt immer mehr Speicher\Nund das heißt wir werden immer mehr Dialogue: 0,0:10:30.88,0:10:36.54,Default,,0000,0000,0000,,Firmwares kriegen und es wäre echt uncool,\Nwenn die alle Closed Source wären. Dialogue: 0,0:10:36.54,0:10:41.14,Default,,0000,0000,0000,,Wir wollen nochmal ein bisschen kurz über IBVs\Nsprechen. Das kennt ja auch AMI, American Dialogue: 0,0:10:41.14,0:10:45.30,Default,,0000,0000,0000,,Megatrends Incorporation, das habt ihr\Nfrüher immer bei eurem BIOS-Bildschirm Dialogue: 0,0:10:45.30,0:10:47.67,Default,,0000,0000,0000,,gesehen. Mittlerweile ist das ja nicht\Nmehr der Fall, das wird nicht mal so Dialogue: 0,0:10:47.67,0:10:51.36,Default,,0000,0000,0000,,wirklich angezeigt. Dann gibt es noch\NPhoenix Technologies, dann gibt's noch Dialogue: 0,0:10:51.36,0:10:56.52,Default,,0000,0000,0000,,Insyde. Die meisten von denen verkaufen\Nauch das, was die bauen, also diese Closed Dialogue: 0,0:10:56.52,0:10:59.94,Default,,0000,0000,0000,,Source FIrmware als Produkt. Das heißt die\Nproduzieren größtenteils Closed Source Dialogue: 0,0:10:59.94,0:11:03.43,Default,,0000,0000,0000,,Firmware, aber ein paar von denen sind\Necht cool und die machen auch Open Source Dialogue: 0,0:11:03.43,0:11:09.33,Default,,0000,0000,0000,,Firmware so zum Beispiel U-Boot, coreboot,\NTianoCore oder was auch immer Open-Source- Dialogue: 0,0:11:09.33,0:11:15.30,Default,,0000,0000,0000,,Projekte. Ein großes Problem mit diesen\Nganzen IBVs ist, die halt so Closed Source Dialogue: 0,0:11:15.30,0:11:19.80,Default,,0000,0000,0000,,Firmware machen ist, dass es gibt Royality\NFeeds und SDK Costs. Was das ist, ist ganz Dialogue: 0,0:11:19.80,0:11:22.96,Default,,0000,0000,0000,,einfach. Man geht zu denen hin und sagt so\N"Ich habe eine Hardware, ich brauche eine Dialogue: 0,0:11:22.96,0:11:25.96,Default,,0000,0000,0000,,Firmware". Dann fragen die einen aus, was\Nman da alles so hat. Dann geben die einem Dialogue: 0,0:11:25.96,0:11:29.86,Default,,0000,0000,0000,,so ein SDK, das ist so ein Code Dump. Den\Nkann man dann nehmen, seine Firmware Dialogue: 0,0:11:29.86,0:11:33.50,Default,,0000,0000,0000,,kompilieren. Das muss man noch alles selbst\Nmachen, dann noch Support einkaufen. Da Dialogue: 0,0:11:33.50,0:11:38.54,Default,,0000,0000,0000,,kostet das SDK so 20.000 Euro vielleicht,\Nvielleicht sogar mehr. Und dann kommt noch Dialogue: 0,0:11:38.54,0:11:42.31,Default,,0000,0000,0000,,zusätzlich zu diesen SDK-Kosten Royality\NFees. Das bedeutet, diese Royality Feeds Dialogue: 0,0:11:42.31,0:11:48.37,Default,,0000,0000,0000,,sind im Endeffekt sowas wie\NNutzungsgebühren. Das heißt, wenn man Dialogue: 0,0:11:48.37,0:11:52.06,Default,,0000,0000,0000,,hingeht und eine Hardware verkauft, dann\Nkommt auf jede Hardware vielleicht 50 Euro Dialogue: 0,0:11:52.06,0:11:55.76,Default,,0000,0000,0000,,Nutzungsgebühr an AMI. Man verkauft\Nhunderttausend von dieser Hardware, muss Dialogue: 0,0:11:55.76,0:12:01.58,Default,,0000,0000,0000,,man jeweils pro Gerät 50 Euro abdrücken.\NDas ist schon eine Menge Kohle die da so Dialogue: 0,0:12:01.58,0:12:05.23,Default,,0000,0000,0000,,zusammenkommt. Deswegen ist halt auch Open\NSource Firmware vielleicht auch ein Dialogue: 0,0:12:05.23,0:12:08.84,Default,,0000,0000,0000,,bisschen cooler. Ich hab mal so IBV-\NExample hin gemacht, das ein ganz cooles. Dialogue: 0,0:12:08.84,0:12:11.89,Default,,0000,0000,0000,,Das ist von coreboot. Wir haben so eine\NConsulting Services Page. Könnt ihr sehen, Dialogue: 0,0:12:11.89,0:12:15.30,Default,,0000,0000,0000,,da gibt's dann mehrere, die da aufgelistet\Nsind. Das sind dann eher so die guten, Dialogue: 0,0:12:15.30,0:12:19.76,Default,,0000,0000,0000,,sind auch nicht alle immer super, aber das\Nist schon mal besser als die Standard, Dialogue: 0,0:12:19.76,0:12:23.40,Default,,0000,0000,0000,,rudimentäre alte konservative Entwicklung. Dialogue: 0,0:12:24.22,0:12:26.48,Default,,0000,0000,0000,,Ja, wir schauen uns jetzt erstmal nochmal Dialogue: 0,0:12:26.48,0:12:29.60,Default,,0000,0000,0000,,an, wie Firmware funktioniert. Wir wissen\Njetzt, okay wir haben Hardware, das hat so Dialogue: 0,0:12:29.60,0:12:33.27,Default,,0000,0000,0000,,einen Flash-Chip und wir reden über die\NHostprozessor-Firmware. Wie funktioniert Dialogue: 0,0:12:33.27,0:12:37.72,Default,,0000,0000,0000,,überhaupt diese Firmware? Die meisten von\Neuch drucken ja mal beim PC den PC-An- Dialogue: 0,0:12:37.72,0:12:43.94,Default,,0000,0000,0000,,Knopf und irgendwann lädt dann halt Linux\Noder der Bootloader und dann Linux. Damit Dialogue: 0,0:12:43.94,0:12:46.09,Default,,0000,0000,0000,,man erstmal so grob versteht. Also man\Nkann Firmware nicht so einfach Dialogue: 0,0:12:46.09,0:12:49.17,Default,,0000,0000,0000,,kategorisieren, Firmware ist\Nunterschiedlich, auch Open Source Dialogue: 0,0:12:49.17,0:12:53.64,Default,,0000,0000,0000,,Firmware. Nicht alles ist gleich\Nimplementiert, aber es gibt immer so ein Dialogue: 0,0:12:53.64,0:13:00.72,Default,,0000,0000,0000,,paar Grundsachen, die dabei spielen. Das ist\Nerstens mal, es wird ein - {\i1}hustet{\i0} - initialer Code am Dialogue: 0,0:13:00.72,0:13:04.23,Default,,0000,0000,0000,,Reset-Vektor ausgeführt. Das heißt von der\NFirmware gibt's so einen initalen Code, Dialogue: 0,0:13:04.23,0:13:06.85,Default,,0000,0000,0000,,der wird über einen sogenannten Reset-\NVektor ausgführt, da kommen wir hinterher Dialogue: 0,0:13:06.85,0:13:11.63,Default,,0000,0000,0000,,noch zu. Dann wird SRAM und Cache-As-RAM\Ninitialisiert oder halt benutzt, es wird Dialogue: 0,0:13:11.63,0:13:16.74,Default,,0000,0000,0000,,System-Arbeitsspeicher aufgesetzt, danach\Nwerden ganz viele Treiber geladen. Also Dialogue: 0,0:13:16.74,0:13:18.54,Default,,0000,0000,0000,,ihr kennt das beim Linux-Kernel, der hat\Nauch immer ganz viele Treiber, die er lädt Dialogue: 0,0:13:18.54,0:13:24.82,Default,,0000,0000,0000,,bei der Initialisierung. Dann werden\Nbestimmte Mechanismen ausgeführt, die dann Dialogue: 0,0:13:24.82,0:13:28.04,Default,,0000,0000,0000,,benötigt werden für das Betriebssystem.\NDas Betriebssystem hat gewisse Dialogue: 0,0:13:28.04,0:13:31.59,Default,,0000,0000,0000,,Anforderungen. Danach wird der Bootloader\Nin der Firmware geladen, wenn er denn Dialogue: 0,0:13:31.59,0:13:36.52,Default,,0000,0000,0000,,einen in der Firmware hat, und dann wird\Nder Bootloader vor dem Betriebssystem Dialogue: 0,0:13:36.52,0:13:40.10,Default,,0000,0000,0000,,geladen und dann das Betriebssystem\Nselber. Wir schauen uns das jetzt nochmal Dialogue: 0,0:13:40.10,0:13:45.56,Default,,0000,0000,0000,,im Detail an, aber das ist so grob, was es\Ntut. Kommen wir erst einmal wieder zum Dialogue: 0,0:13:45.56,0:13:51.45,Default,,0000,0000,0000,,Flash-Chip. Also der Flash-Chip kann\NPartitionstabellen haben. Manche Dialogue: 0,0:13:51.45,0:13:54.51,Default,,0000,0000,0000,,Hersteller haben sich gedacht, es wäre eine\Ngute Idee, wenn sie schon mal den Leuten Dialogue: 0,0:13:54.51,0:13:59.27,Default,,0000,0000,0000,,erzählen, oder den IBVs erzählen, wie sie\Ndie Partitionierung zu machen haben und es Dialogue: 0,0:13:59.27,0:14:02.83,Default,,0000,0000,0000,,gibt auch gewisse Gründe, warum zum\NBeispiel Intel - deswegen gibt's den Dialogue: 0,0:14:02.83,0:14:07.27,Default,,0000,0000,0000,,sogenannten Intel-Firmware-Deskriptor - \Nwarum die das machen. Dialogue: 0,0:14:07.27,0:14:09.11,Default,,0000,0000,0000,,Die Partitionierung ist so meistens in 4 Dialogue: 0,0:14:09.11,0:14:13.65,Default,,0000,0000,0000,,Partitionen bei Intel und dieser Flash-\NChip wird dann auch sozusagen als Dialogue: 0,0:14:13.65,0:14:18.02,Default,,0000,0000,0000,,Konfigurations-Quelle für die Intel ME\Nverwendet. Das ist nochmal wieder so eine Dialogue: 0,0:14:18.02,0:14:22.38,Default,,0000,0000,0000,,weitere Firmware, da werden wir heute\Nnicht so tief drauf eingehen. Das ist ein Dialogue: 0,0:14:22.38,0:14:27.32,Default,,0000,0000,0000,,ziemlich großes Thema. Aber im großen und\Nganzen kann man sagen: oben FDT ist der Dialogue: 0,0:14:27.32,0:14:32.13,Default,,0000,0000,0000,,Partitionstabellen-Header, wie bei MBR\Noder GPT, kennt ihr auch. Dann habt ihr Dialogue: 0,0:14:32.13,0:14:36.23,Default,,0000,0000,0000,,eine Partition die nennt sich GBE. Das\Nsind die Daten, die ihr für das Gigabit Dialogue: 0,0:14:36.23,0:14:41.75,Default,,0000,0000,0000,,Ethernet Configuration Interface habt. Das\Nheißt im Endeffekt euer LAN-Adapter. Der Dialogue: 0,0:14:41.75,0:14:45.58,Default,,0000,0000,0000,,hat halt Konfigurationsdateien wie die\NMAC-Adresse, die stehen da drin. Dann Dialogue: 0,0:14:45.58,0:14:49.44,Default,,0000,0000,0000,,kommt die Intel ME, das ist so\NSouthbridge-Firmware und dann folgt danach Dialogue: 0,0:14:49.44,0:14:52.39,Default,,0000,0000,0000,,das BIOS, also die eigentliche Firmware\Nsozusagen, die die Plattform- Dialogue: 0,0:14:52.39,0:14:58.12,Default,,0000,0000,0000,,Initialisierung macht. Ist aber nicht\Nüberall der Fall. Das ist wirklich nur auf Dialogue: 0,0:14:58.12,0:15:01.95,Default,,0000,0000,0000,,Intel-System, auf ARM-Systemen, auf AMD-\NSystem, auf irgendwelchen anderen Dialogue: 0,0:15:01.95,0:15:05.82,Default,,0000,0000,0000,,Architekturen wird das meistens nicht\Ngemacht. Da macht die Firmware das selber. Dialogue: 0,0:15:05.82,0:15:12.23,Default,,0000,0000,0000,,Dann gibt's das nächste. Es gibt ROMCC.\NDas ist ein komischer Name. Das ist ein Dialogue: 0,0:15:12.23,0:15:17.16,Default,,0000,0000,0000,,Compiler, also überall wo CC hinten dran\Nsteht ist ja meistens logischerweise ein Dialogue: 0,0:15:17.16,0:15:21.81,Default,,0000,0000,0000,,Compiler und dieser Compiler was der macht\Ndas ist Legacy. Der kompiliert im Dialogue: 0,0:15:21.81,0:15:26.13,Default,,0000,0000,0000,,Endeffekt einen initialen Code von der\NFirmware. Und das wird meistens nur bei Dialogue: 0,0:15:26.13,0:15:30.85,Default,,0000,0000,0000,,oder es wurde nur bei x86 Legacy Platforms\Ngemacht, das heißt älteren x86-Plattformen Dialogue: 0,0:15:30.85,0:15:36.34,Default,,0000,0000,0000,,und der wurde bei Eric Biederman kreiert\Nund ist auch ziemlich groß. Das ist eine Dialogue: 0,0:15:36.34,0:15:39.90,Default,,0000,0000,0000,,C-Datei mit 22'000 Lines of Code. Also das\Nist so ein Monster-Ding. Ich hab da so Dialogue: 0,0:15:39.90,0:15:44.44,Default,,0000,0000,0000,,rechts mal das ASCII-Art sozusagen\Nrausgecuttet. Überal wo ASCII-Art anfängt Dialogue: 0,0:15:44.44,0:15:48.43,Default,,0000,0000,0000,,im Code ist schon mal kein gutes Zeichen.\N{\i1}Lachen{\i0} Dialogue: 0,0:15:48.43,0:15:53.95,Default,,0000,0000,0000,,Was das Ding halt macht ist, ihr müsst\Nwissen bei alten Intel-System gibt es Dialogue: 0,0:15:53.95,0:15:57.63,Default,,0000,0000,0000,,keinen Arbeitsspeicher am Anfang. Es gibt\Nnichts, gar nichts. Was nimmt man denn, Dialogue: 0,0:15:57.63,0:16:01.48,Default,,0000,0000,0000,,wenn man kein Cache als Arbeitsspeicher hat\Noder keinen Arbeitsspeicher hat? Wie macht Dialogue: 0,0:16:01.48,0:16:06.35,Default,,0000,0000,0000,,man denn Speicher-Management? Man nimmt\NRegister. Sehr schön! Wir haben ja CPU- Dialogue: 0,0:16:06.35,0:16:11.49,Default,,0000,0000,0000,,Register. Die sind immer von Anfang an da\Nund der Compiler benutzt CPU-Register und Dialogue: 0,0:16:11.49,0:16:14.56,Default,,0000,0000,0000,,stellt dann sozusagen Speicher damit zur\NVerfügung. Das Ganze hat so ein paar Dialogue: 0,0:16:14.56,0:16:19.45,Default,,0000,0000,0000,,Probleme. Das heißt wenn man zu tief\NFunktionsschachtelung macht, dann ist Dialogue: 0,0:16:19.45,0:16:24.37,Default,,0000,0000,0000,,irgendwann das Register voll und dann gibt\Nes einen Stack Overflow, oder in dem Fall Dialogue: 0,0:16:24.37,0:16:30.33,Default,,0000,0000,0000,,kein Stack, ein Register Overflow. Und das\Nist im Endeffekt das was passiert. Ist Dialogue: 0,0:16:30.33,0:16:33.87,Default,,0000,0000,0000,,eine Erfindung von Coreboot, gibt's\Nnirgendwo anders, könnt ihr euch aber Dialogue: 0,0:16:33.87,0:16:37.53,Default,,0000,0000,0000,,angucken, der Code ist immernoch da, wird\Nbei älteren Systemen verwendet, geht nicht Dialogue: 0,0:16:37.53,0:16:43.16,Default,,0000,0000,0000,,anders. Bei moderneren Systemen,\Nmittlerweile, gibt es das sogenannte SRAM, Dialogue: 0,0:16:43.16,0:16:47.31,Default,,0000,0000,0000,,oder auch Cache-As-RAM und das ist im\NEndeffekt die Plattform selber, der System Dialogue: 0,0:16:47.31,0:16:51.64,Default,,0000,0000,0000,,on Chip, stellt schon Speicher bereit, das\Nheißt man hat so eine Art von Speicher, Dialogue: 0,0:16:51.64,0:16:54.55,Default,,0000,0000,0000,,das ist noch nicht Arbeitsspeicher, aber\Nes ist eine Art von Speicher und es sind Dialogue: 0,0:16:54.55,0:16:57.77,Default,,0000,0000,0000,,auch nur wirklich mehrere Megabyte, also\NCache-As-RAM kann sich glaube ich jeder Dialogue: 0,0:16:57.77,0:17:02.74,Default,,0000,0000,0000,,vorstellen. Jeder kennt CPU Caches hier,\Noder? Das ist, CPU Cache ist da, der ist Dialogue: 0,0:17:02.74,0:17:07.01,Default,,0000,0000,0000,,vielleicht so ein, zwei MB groß, kann man als\NArbeitsspeicher verwenden. Super, ist auch Dialogue: 0,0:17:07.01,0:17:10.29,Default,,0000,0000,0000,,einfach zu initialisieren, dann hat man\Nwenigstens schon mal so'n paar Megabytes Dialogue: 0,0:17:10.29,0:17:14.03,Default,,0000,0000,0000,,von Speicher. Das heißt man kann auch\Nwieder einen normalen Compiler verwenden. Dialogue: 0,0:17:14.03,0:17:18.92,Default,,0000,0000,0000,,Wenn man Stack und Heap hat kann man den\NGCC verwenden, den Clang oder irgendwelche Dialogue: 0,0:17:18.92,0:17:23.44,Default,,0000,0000,0000,,anderen Compiler und, aber Cache-As-RAM\Nist sehr spezifisch für x86 Plattformen. Dialogue: 0,0:17:23.44,0:17:27.09,Default,,0000,0000,0000,,Wenn wir uns jetzt mal dieses Bild\Nanschauen ist ganz einfach: Man hat den Dialogue: 0,0:17:27.09,0:17:32.00,Default,,0000,0000,0000,,System on Chip, also den Prozessor, so\Nungefähr, dann hat man hier den initialen Dialogue: 0,0:17:32.00,0:17:35.96,Default,,0000,0000,0000,,Code-Teil, der ist im SPI Flash, in diesem\NChip, den wir vorhin gesehen haben und der Dialogue: 0,0:17:35.96,0:17:40.26,Default,,0000,0000,0000,,muss irgendwie in dieses SRAM rein, der\Nwird dann sozusagen darüber kopiert in das Dialogue: 0,0:17:40.26,0:17:44.49,Default,,0000,0000,0000,,SRAM und dann später auch noch in den\NArbeitsspeicher gemappt im Endeffekt, als Dialogue: 0,0:17:44.49,0:17:48.49,Default,,0000,0000,0000,,erstes, und darüber funktioniert dieser\Nganze Lade-Mechanismus. Sieht man hier Dialogue: 0,0:17:48.49,0:17:52.33,Default,,0000,0000,0000,,nochmal ein bisschen ganz gut. Das heißt\Nam Anfang, wenn das System eigentlich Dialogue: 0,0:17:52.33,0:17:58.14,Default,,0000,0000,0000,,startet nach dem Reset passiert Folgendes:\NMan hat diesen initialen Code Block, man Dialogue: 0,0:17:58.14,0:18:01.38,Default,,0000,0000,0000,,kopiert diesen initialen Code Block in\Nirgendsoeinen Speicher, den man zur Dialogue: 0,0:18:01.38,0:18:06.18,Default,,0000,0000,0000,,Verfügung hat und der muss an einer\Nbestimmten Stelle stehen und bestimmte Dialogue: 0,0:18:06.18,0:18:10.65,Default,,0000,0000,0000,,Stelle ist Plattform spezifisch. Jede\NPlattform hat eine bestimmte Adresse, wo Dialogue: 0,0:18:10.65,0:18:15.85,Default,,0000,0000,0000,,der Prozessor als erstes hinspringt. Das\Nheißt: Er springt wirklich zu dieser Dialogue: 0,0:18:15.85,0:18:19.93,Default,,0000,0000,0000,,Adresse hin und führt den Code dadrunter\Naus. Und das wird halt im Endeffekt Dialogue: 0,0:18:19.93,0:18:23.04,Default,,0000,0000,0000,,gemacht. Man hat einen CPU-Addressspace,\Nman mappt das entsprechend rein, mit dem Dialogue: 0,0:18:23.04,0:18:27.46,Default,,0000,0000,0000,,SRAM, der CPU springt dann halt zu einer\Nbestimmten Adresse, bei x86 ist es diese Dialogue: 0,0:18:27.46,0:18:30.99,Default,,0000,0000,0000,,hier. Da gibt es noch ein paar Details und\NFeinheiten, aber sagen wir mal so ungefähr Dialogue: 0,0:18:30.99,0:18:34.72,Default,,0000,0000,0000,,ist das und dann wird der Code dort\Nausgeführt. Und das ist alles wie die Dialogue: 0,0:18:34.72,0:18:38.07,Default,,0000,0000,0000,,Initialisierung von der Plattform\Nfunktioniert, das heißt das ist eigentlich Dialogue: 0,0:18:38.07,0:18:42.07,Default,,0000,0000,0000,,total easy. Der kopiert irgendwo was hin,\Nin so'n Speicher der zur Verfügung steht, Dialogue: 0,0:18:42.07,0:18:44.87,Default,,0000,0000,0000,,springt an ne Addresse, das ist so\Nentsprechend gemappt, und dann fängt der Dialogue: 0,0:18:44.87,0:18:50.37,Default,,0000,0000,0000,,erste Code an zu laufen. Das ist der\Nsogenannte Reset-Vektor. Dieser initiale Dialogue: 0,0:18:50.37,0:18:53.69,Default,,0000,0000,0000,,Code, wovon ich gerade gesprochen habe,\Ndas habe ich jetzt mal so ein bisschen Dialogue: 0,0:18:53.69,0:18:58.28,Default,,0000,0000,0000,,aufgeteilt. Die Aufteilung, die ich hier\Ngemacht habe, muss ich sagen, die ist ein Dialogue: 0,0:18:58.28,0:19:04.21,Default,,0000,0000,0000,,bisschen an Coreboot angelehnt. aber das\Nist anders schwerer sonst zu erklären. Es Dialogue: 0,0:19:04.21,0:19:07.39,Default,,0000,0000,0000,,gibt auf jeden Fall den initialen Code\NTeil, der vom Reset-Vektor ausgeführt Dialogue: 0,0:19:07.39,0:19:11.78,Default,,0000,0000,0000,,wird. Dieser Code Teil ist meistens in\NAssem-, früher in Assembly, heutzutage Dialogue: 0,0:19:11.78,0:19:14.84,Default,,0000,0000,0000,,meistens in C-Code geschrieben,\Nmittlerweile, und was der auch noch Dialogue: 0,0:19:14.84,0:19:19.29,Default,,0000,0000,0000,,zusätzlich macht, bei manchen Plattformen,\Nist Cache-As-RAM zu initialisieren, oder Dialogue: 0,0:19:19.29,0:19:23.58,Default,,0000,0000,0000,,er benutzt gleich das SRAM, was zur\NVerfügung steht. Was er auch macht ist, Dialogue: 0,0:19:23.58,0:19:28.16,Default,,0000,0000,0000,,weil wir haben ja ein SPI-Flash, da wo\Ndiese ganzen Firmware-Daten drin sind. Wir Dialogue: 0,0:19:28.16,0:19:32.22,Default,,0000,0000,0000,,haben ja nur ein Teil grad rauskopiert,\Nder benutzten einen SPI Treiber, und den Dialogue: 0,0:19:32.22,0:19:35.94,Default,,0000,0000,0000,,Firmware Fileystem Treiber um auf diesen\NFlash zuzugreifen und weiteren Code Dialogue: 0,0:19:35.94,0:19:39.67,Default,,0000,0000,0000,,nachzuladen. Das heißt wir haben so einen\Ninitialen Code, der kann so ein bisschen Dialogue: 0,0:19:39.67,0:19:44.64,Default,,0000,0000,0000,,was, der lädt dann nochmal Code nach und\Nder setzt dann halt auch noch das Board- Dialogue: 0,0:19:44.64,0:19:47.69,Default,,0000,0000,0000,,Reset auf sozusagen, das ist so'n Basis-\NFeature, dass man Board-Reset machen kann Dialogue: 0,0:19:47.69,0:19:50.87,Default,,0000,0000,0000,,in der Firmware, also ein Reset von der\NPlattform. Kennt jeder, wenn man Aus- und Dialogue: 0,0:19:50.87,0:19:55.46,Default,,0000,0000,0000,,An-Knopf drückt. Dann gibt's Serial\NKonsole, damit man überhaupt Debugging Dialogue: 0,0:19:55.46,0:19:58.68,Default,,0000,0000,0000,,Output hat. Das heißt Irgendwo muss ja\Nmal bisschen was von der Firmware kommen. Dialogue: 0,0:19:58.68,0:20:01.94,Default,,0000,0000,0000,,Wenn man so ein Entwickler ist will man ja\Nauch mal wissen so, was passiert da Dialogue: 0,0:20:01.94,0:20:05.30,Default,,0000,0000,0000,,eigentlich. Ja, und dann gibt es noch\NMicrocode Updates. Das kennt auch jeder Dialogue: 0,0:20:05.30,0:20:08.22,Default,,0000,0000,0000,,von euch, da war auch hier so'n Talk, der\Nist ganz gut, über wie man Microcode Dialogue: 0,0:20:08.22,0:20:13.90,Default,,0000,0000,0000,,Updates exploited. Auf jeden Fall werden\Ndort early Microcode Updates gemacht. Und Dialogue: 0,0:20:13.90,0:20:19.23,Default,,0000,0000,0000,,dieser initiale Code Teil, der verwendet\Nhalt dieses Cache As RAM, oder SRAM. Dialogue: 0,0:20:19.23,0:20:23.03,Default,,0000,0000,0000,,Danach kommt die ROM-Stage, so, was\Npassiert in der ROM-Stage. So, da wir Dialogue: 0,0:20:23.03,0:20:26.22,Default,,0000,0000,0000,,jetzt ja nur Cache-As-RAM oder SRAM\Nhaben, das ist nicht viel, sind 2, 3 Dialogue: 0,0:20:26.22,0:20:29.66,Default,,0000,0000,0000,,Megabyte, wollen wir jetzt auch irgendwie\Nmehr Arbeitsspeicher haben. Wir wollen ja Dialogue: 0,0:20:29.66,0:20:31.91,Default,,0000,0000,0000,,mal den richtigen Arbeitsspeicher\Nverwenden. Also was wir machen ist, wir Dialogue: 0,0:20:31.91,0:20:35.05,Default,,0000,0000,0000,,müssen den RAM trainieren. Wir könnten\Njetzt noch, ich könnte da jetzt noch Dialogue: 0,0:20:35.05,0:20:37.88,Default,,0000,0000,0000,,irgendwie 10 Folien rein machen, wie man\NArbeitsspeicher-Training macht, aber das Dialogue: 0,0:20:37.88,0:20:40.83,Default,,0000,0000,0000,,ist sehr komplex. Im Endeffekt, der\NArbeitsspeicher, wenn er jetzt auf der Dialogue: 0,0:20:40.83,0:20:45.25,Default,,0000,0000,0000,,Platine drauf ist, dann läuft der nicht\Nsofort. Der muss initialisiert werden. Der Dialogue: 0,0:20:45.25,0:20:48.68,Default,,0000,0000,0000,,hat Timings, wenn die Leiterbahnen nicht\Ngleich lang sind, dann gibt's Probleme und Dialogue: 0,0:20:48.68,0:20:51.52,Default,,0000,0000,0000,,man muss den auch noch per Software\Ntrainieren. Das heißt man hat nicht nur Dialogue: 0,0:20:51.52,0:20:55.07,Default,,0000,0000,0000,,eine, sozusagen, man muss die Leiterbahnen\Nnicht nur gleich machen, sondern der muss Dialogue: 0,0:20:55.07,0:20:58.24,Default,,0000,0000,0000,,per Software trainiert werden. Und\Nentweder gibt's schon statische gute Dialogue: 0,0:20:58.24,0:21:03.67,Default,,0000,0000,0000,,anzunehmende Werte vom Hersteller, oder\Nman berechnet halt diese Werte halt über Dialogue: 0,0:21:03.67,0:21:08.97,Default,,0000,0000,0000,,die Firmware. Man hat halt festgelöteten\NRAM, man hat halt RAM den man rausnehmen Dialogue: 0,0:21:08.97,0:21:12.60,Default,,0000,0000,0000,,kann. Da gibt's halt noch zusätzliche\NInformationen, entweder im EPROM oder man Dialogue: 0,0:21:12.60,0:21:16.60,Default,,0000,0000,0000,,muss den von der Firmware laden, je\Nnachdem was das für ein RAM-Typ ist und Dialogue: 0,0:21:16.60,0:21:20.29,Default,,0000,0000,0000,,diese Trainingsdaten, die wir dann\Nberechnen, werden häufig gecached, das Dialogue: 0,0:21:20.29,0:21:24.62,Default,,0000,0000,0000,,heißt in der Firmware selbst, im SPI-\NFlash, speichert man die ab, weil dieses Dialogue: 0,0:21:24.62,0:21:29.00,Default,,0000,0000,0000,,Training, zum Beispiel bei so einer Intel\NApollo Lake-Platform, das ist zum Beispiel Dialogue: 0,0:21:29.00,0:21:34.66,Default,,0000,0000,0000,,so eine embedded Platform, das dauert zehn\NSekunden. Das ist, wenn das bei jedem Dialogue: 0,0:21:34.66,0:21:37.89,Default,,0000,0000,0000,,Start zehn Sekunden dauert, dann ja noch\Nirgendwie weiterladen muss, dann der ganze Dialogue: 0,0:21:37.89,0:21:42.29,Default,,0000,0000,0000,,Bootvorgang 20 Sekunden, das will ja\Nkeiner. Und deswegen werden diese Daten Dialogue: 0,0:21:42.29,0:21:48.34,Default,,0000,0000,0000,,gecached und beim nächsten Start sozusagen\Nwieder verwendet. Auch wichtig, das ist Dialogue: 0,0:21:48.34,0:21:52.17,Default,,0000,0000,0000,,sozusagen das sogenannte Page Table Setup,\Ndas heißt, wenn man größer Speicher 4 Dialogue: 0,0:21:52.17,0:21:55.74,Default,,0000,0000,0000,,Gigabyte verwenden möchte braucht man\Nsogenannte Page Tables. Da könnt Ihr euch Dialogue: 0,0:21:55.74,0:21:58.89,Default,,0000,0000,0000,,mal im Linux Tutorial so ein bisschen\Neingucken, da muss man auch die Memory Dialogue: 0,0:21:58.89,0:22:02.32,Default,,0000,0000,0000,,Management Unit aktivieren, implementiert\Naber nicht alle Firmware und wenn man zum Dialogue: 0,0:22:02.32,0:22:05.11,Default,,0000,0000,0000,,Beispiel 32-Bit Systeme hat, dann\Nfunktioniert das eh nicht, weil da kann Dialogue: 0,0:22:05.11,0:22:09.19,Default,,0000,0000,0000,,man meistens eh nur unter, also in den\NFirmwares wird dann meistens nur kleiner 4 Dialogue: 0,0:22:09.19,0:22:14.91,Default,,0000,0000,0000,,Gigabyte adressiert und nicht mehr. Noch\Nwichtig ist: Man braucht CPU Caching. Das Dialogue: 0,0:22:14.91,0:22:18.53,Default,,0000,0000,0000,,ist noch wirklich ein wichtiger Teil. Wenn\Ndie CPU Caches, wir haben die ja für Dialogue: 0,0:22:18.53,0:22:20.74,Default,,0000,0000,0000,,Arbeitsspeicher verwendet, aber jetzt\Nmüssen die ja wieder an, um mit dem Dialogue: 0,0:22:20.74,0:22:24.23,Default,,0000,0000,0000,,Speicher zu kommunizieren. Also, CPU\NCaches kommunizieren immer mit dem Dialogue: 0,0:22:24.23,0:22:27.70,Default,,0000,0000,0000,,Arbeitsspeicher, damit das alles schneller\Ngeht und das nicht so langsam ist, sonst Dialogue: 0,0:22:27.70,0:22:31.62,Default,,0000,0000,0000,,muss die CPU direkt immer auf den Speicher\Nzugreifen und die Daten darausholen. Das Dialogue: 0,0:22:31.62,0:22:34.62,Default,,0000,0000,0000,,ist nicht so, sagen wir mal das ist nicht\Nso performant. Das ist ziemlich langsam Dialogue: 0,0:22:34.62,0:22:37.90,Default,,0000,0000,0000,,und das ist halt wichtig, das muss auch\Naktiviert werden. Und noch eine andere Dialogue: 0,0:22:37.90,0:22:40.87,Default,,0000,0000,0000,,Geschichte ist: Viele von diesen\NFirmwares, die haben eigene Dialogue: 0,0:22:40.87,0:22:44.44,Default,,0000,0000,0000,,Speicherverwaltung. Also ihr kennt ja bei\NGo oder Rust, die haben, oder bei Go oder Dialogue: 0,0:22:44.44,0:22:47.39,Default,,0000,0000,0000,,Rust nicht, aber sagen wir mal es gibt\NReferenz-Counting und so Features in Dialogue: 0,0:22:47.39,0:22:51.13,Default,,0000,0000,0000,,Programmiersprachen. Das Gleiche haben wir\Nbei der Firmware, ja, die haben so eine Dialogue: 0,0:22:51.13,0:22:54.65,Default,,0000,0000,0000,,Art von Allocator-Pool, wo die Speicher\Nallozieren und den verwalten, wieder Dialogue: 0,0:22:54.65,0:22:58.27,Default,,0000,0000,0000,,freigeben, oder auch nicht. Das wird dann\Nhalt auch alles in dieser sogenannten ROM- Dialogue: 0,0:22:58.27,0:23:02.83,Default,,0000,0000,0000,,Stage initialisiert. Und danach haben wir\NArbeitsspeicher. Dialogue: 0,0:23:03.80,0:23:06.55,Default,,0000,0000,0000,,Ja? ... Endlich. Dialogue: 0,0:23:08.14,0:23:09.14,Default,,0000,0000,0000,,Das heißt, wir Dialogue: 0,0:23:09.14,0:23:13.05,Default,,0000,0000,0000,,können jetzt die ganzen anderen lustige\NDinge tun, die wir noch machen müssen. In Dialogue: 0,0:23:13.05,0:23:18.62,Default,,0000,0000,0000,,dieser Stage ist es meistens so, dass wir\Ndas sogenannte PCI Device Tree Enumeration Dialogue: 0,0:23:18.62,0:23:21.79,Default,,0000,0000,0000,,und Resource Allocation machen müssen, das\Nheißt wenn ihr PCI-Geräte habt, also jeder Dialogue: 0,0:23:21.79,0:23:24.92,Default,,0000,0000,0000,,von euch hat mal lspci benutzt, wenn ihr\Nda ganz viele Geräte dran habt, dann habt Dialogue: 0,0:23:24.92,0:23:29.85,Default,,0000,0000,0000,,ihr einen PCI-Bus. Bei x86 ist das so\NStandard mittlerweile, da muss man so am Dialogue: 0,0:23:29.85,0:23:33.66,Default,,0000,0000,0000,,Bus entlanglaufen, sieht aus wie ein Baum,\Ngeht man so her und sagt so "Oh, Gerät da, Dialogue: 0,0:23:33.66,0:23:37.00,Default,,0000,0000,0000,,an- und abschalten, oder nicht." Habt ihr\Nauch mal in eurem BIOS gesehen. Da könnte Dialogue: 0,0:23:37.00,0:23:41.57,Default,,0000,0000,0000,,man so IO Access oder so kann man\Nabschalten, kann man bestimmte Geräte am Dialogue: 0,0:23:41.57,0:23:46.37,Default,,0000,0000,0000,,PCI-Bus deaktivieren und aktivieren und\Ndas wird dann halt sozusagen da gemacht. Dialogue: 0,0:23:46.37,0:23:49.82,Default,,0000,0000,0000,,Native Grafik-Initialisierung, wenn ihr\Nwas sehen wollt, was eure Firmware Dialogue: 0,0:23:49.82,0:23:53.82,Default,,0000,0000,0000,,irgendwie anzeigt, braucht ihr Grafik. Das\Nwird dann auch dann in dieser Stage Dialogue: 0,0:23:53.82,0:23:58.74,Default,,0000,0000,0000,,gemacht. Option ROMs von irgendwelchen\NLAN-Adaptern oder WLAN oder was auch Dialogue: 0,0:23:58.74,0:24:01.79,Default,,0000,0000,0000,,immer, wo auch immer Option ROMs geladen\Nwerden müssen. Multi Prozessor Dialogue: 0,0:24:01.79,0:24:05.56,Default,,0000,0000,0000,,Initialisierung. Das ist alles so\NGeschichten, die da drin gemacht werden Dialogue: 0,0:24:05.56,0:24:08.70,Default,,0000,0000,0000,,meistens. Kann man auch noch früher\Nmachen. Alles wie gesagt mit Vorsicht zu Dialogue: 0,0:24:08.70,0:24:15.21,Default,,0000,0000,0000,,genießen. ACPI-Tabellen, e820-Tabelle.\NGanz wichtig Device Drivers. Also sind Dialogue: 0,0:24:15.21,0:24:19.58,Default,,0000,0000,0000,,super viele Gerätetreiber drin. Das heißt,\Ndas was Linux auch an Geräten Dialogue: 0,0:24:19.58,0:24:22.70,Default,,0000,0000,0000,,initialisiert, das ist halt sehr sehr\Nwichtig. Dann auch noch jede Menge Dialogue: 0,0:24:22.70,0:24:29.55,Default,,0000,0000,0000,,Firmware-Interfaces. Allgemein ist auch\Nnoch zu sagen als letzter Part der Dialogue: 0,0:24:29.55,0:24:33.91,Default,,0000,0000,0000,,Firmware gibt's den Bootloader und der\NBootloader ist im Endeffekt meistens eine Dialogue: 0,0:24:33.91,0:24:37.99,Default,,0000,0000,0000,,Eigen-Implementierung. Die benutzt halt\Ndiese Geräte-Treiber, die da sind und Dialogue: 0,0:24:37.99,0:24:40.61,Default,,0000,0000,0000,,versucht dann nochmal einen anderen\NBootloader zu laden oder direkt das Dialogue: 0,0:24:40.61,0:24:44.08,Default,,0000,0000,0000,,Betriebssystem. Das heißt die Firmware\Nselbst hat einen Bootloader. Wir haben Dialogue: 0,0:24:44.08,0:24:47.60,Default,,0000,0000,0000,,jetzt schon einen grub als Bootloader,\Ndavor ist noch ein Bootloader. Eigentlich Dialogue: 0,0:24:47.60,0:24:52.95,Default,,0000,0000,0000,,Code-Duplikation. Will man eigentlich auch\Nnicht haben, ist aber so. Bootloader Dialogue: 0,0:24:52.95,0:24:57.42,Default,,0000,0000,0000,,benutzt auch schon Arbeitsspeicher. Ist ja\Nklar, haben wir dann schon. Im großen und Dialogue: 0,0:24:57.42,0:25:01.28,Default,,0000,0000,0000,,ganzen lässt sich die Firmare dann in drei\NTeile einteilen: in Pre RAM, Driver Layer Dialogue: 0,0:25:01.28,0:25:06.25,Default,,0000,0000,0000,,und Bootloader. Das heißt Pre RAM, das ist\Nso IBB on ROM Stage. Driver Layer ist die Dialogue: 0,0:25:06.25,0:25:10.98,Default,,0000,0000,0000,,RAM Stage. Der Driver Layer ist immer\Nriesig. Gerätetreiber bei der Firmware Dialogue: 0,0:25:10.98,0:25:15.99,Default,,0000,0000,0000,,sind monströs groß. Bootloader auch. Das\NPreloader Environment ist meistens klein, Dialogue: 0,0:25:15.99,0:25:22.50,Default,,0000,0000,0000,,weil da auch nicht viel reinpasst. Kommen\Nwir zu Open Source Firmware. Open Source Dialogue: 0,0:25:22.50,0:25:26.89,Default,,0000,0000,0000,,Firmware: Es gibt, würde ich sagen, drei\NLeute, die Open-Source sozusagen erfunden Dialogue: 0,0:25:26.89,0:25:30.16,Default,,0000,0000,0000,,haben oder nicht erfunden aber sie\Nmitbegründet haben. Das waren Stefan Dialogue: 0,0:25:30.16,0:25:34.12,Default,,0000,0000,0000,,Reinauer, Ronald Minich und Wolfgang Denk.\NStefan Reinauer und Ronald Minich haben Dialogue: 0,0:25:34.12,0:25:39.34,Default,,0000,0000,0000,,damals an LinuxBIOS gearbeitet. Heutzutage\Nnennt sich das coreboot. Das gibt es seit Dialogue: 0,0:25:39.34,0:25:44.44,Default,,0000,0000,0000,,1999. Also wir haben nächstes Jahr unser\N20-Jähriges. Das war größtenteils nur für Dialogue: 0,0:25:44.44,0:25:48.42,Default,,0000,0000,0000,,x86-Architekturen gedacht. Heutzutage\Nunterstützen wir deutlich mehr. Beim Dialogue: 0,0:25:48.42,0:25:52.71,Default,,0000,0000,0000,,U-Boot Projekt, das früher PowerPC\NBoot hieß, also die haben halt damals Dialogue: 0,0:25:52.71,0:25:57.58,Default,,0000,0000,0000,,PowerPC unterstützt, war Wolfgang Denk. Der\Nhat das dann umbenannt in U-Boot für Dialogue: 0,0:25:57.58,0:26:02.06,Default,,0000,0000,0000,,Universal Bootloader und das gibt's auch\Nseit, zur gleichen Zeit witzigerweise, Dialogue: 0,0:26:02.06,0:26:06.60,Default,,0000,0000,0000,,1999 und jetzt gibt's diese beiden\NProjekte und die sind eigentlich sozusagen Dialogue: 0,0:26:06.60,0:26:09.87,Default,,0000,0000,0000,,die Anbeginne der Open Source Firmware-\NEntwicklung. Wenn man sich das jetzt mal Dialogue: 0,0:26:09.87,0:26:14.13,Default,,0000,0000,0000,,auf diesen Zeitstrahl sich ein bisschen\Nanguckt: früher gab es das erste BIOS Dialogue: 0,0:26:14.13,0:26:19.92,Default,,0000,0000,0000,,1981, ist schon lange Zeit her. Dann gab\Nes ganz viele Closed Source Firmware da Dialogue: 0,0:26:19.92,0:26:22.92,Default,,0000,0000,0000,,drin. Die hab ich jetzt nicht alle\Naufgezählt. Das kann man gar nicht Dialogue: 0,0:26:22.92,0:26:28.60,Default,,0000,0000,0000,,aufzählen glaube ich. Und gegen 1998 hat\Ndann Apple von Intel EFI bekommen. Also Dialogue: 0,0:26:28.60,0:26:31.19,Default,,0000,0000,0000,,das war nicht das UEFI was ihr heute\Nkennt, sondern die haben schon mal so eine Dialogue: 0,0:26:31.19,0:26:35.51,Default,,0000,0000,0000,,Vorversion bekommen als Fork, damit die\Ndann schon mal ihr EFI-Kram machen können. Dialogue: 0,0:26:35.51,0:26:40.66,Default,,0000,0000,0000,,Ist tatsächlich so gewesen. 1999 kam dann\Nvon coreboot und U-Boot von der Open Dialogue: 0,0:26:40.66,0:26:43.67,Default,,0000,0000,0000,,Source Firmware Community, da gab es schon\Nviele Leute, die das so mit dieser Closed Dialogue: 0,0:26:43.67,0:26:48.83,Default,,0000,0000,0000,,Source Firmware genervt hat und UEFI wurde\Ndann 2006 von Intel releast. Darauf zwei Dialogue: 0,0:26:48.83,0:26:53.05,Default,,0000,0000,0000,,Jahre später Open Source gemacht.\NJedenfalls nicht alles, aber ein Teil der Dialogue: 0,0:26:53.05,0:26:56.64,Default,,0000,0000,0000,,Implementierung. Es gab eine Open-Source-\NImplementierung. Die wurde sozusagen von Dialogue: 0,0:26:56.64,0:27:02.26,Default,,0000,0000,0000,,Intel bereitgestellt im Jahre 2008. Danach\Ngab es noch 2014 Hostboot bei IBM. Das ist Dialogue: 0,0:27:02.26,0:27:07.09,Default,,0000,0000,0000,,dann für so PowerPCs, da kommen wir noch\Nspäter dazu. Heute noch 2018 LinuxBoot. Dialogue: 0,0:27:07.09,0:27:12.84,Default,,0000,0000,0000,,Wenn man sich das so anguckt: es gibt\Njetzt immer mehr Open-Source-Firmware. Es Dialogue: 0,0:27:12.84,0:27:15.54,Default,,0000,0000,0000,,gibt sogar noch deutlich mehr, als ich\Naufgelistet habe. Aber warum will man Dialogue: 0,0:27:15.54,0:27:18.41,Default,,0000,0000,0000,,eigentlich Open-Source-Firmware haben? Es\Ngibt da mehrere Gründe für zum anderen. Dialogue: 0,0:27:18.41,0:27:22.03,Default,,0000,0000,0000,,Zum einen gibt es viele kleine Firmen, die\Nzum Beispiel auch bei der Open Hardware Dialogue: 0,0:27:22.03,0:27:29.37,Default,,0000,0000,0000,,Association, das ist OSHWA. Die arbeiten\Nan Open Hardware und die brauchen Dialogue: 0,0:27:29.37,0:27:32.86,Default,,0000,0000,0000,,eigentlich Open Source Firmware. Das macht\Nja sonst keinen Sinn, wenn man das Dialogue: 0,0:27:32.86,0:27:39.30,Default,,0000,0000,0000,,irgendwie macht. Zum anderen: viele Closed\NSource Firmware ist halt meistens schlecht Dialogue: 0,0:27:39.30,0:27:43.40,Default,,0000,0000,0000,,programmiert. Das heißt die schicken zum\NBeispiel Code via E-Mails durch die Dialogue: 0,0:27:43.40,0:27:49.37,Default,,0000,0000,0000,,Gegend, in zip-Dateien, die Manager machen\NReviews. Ich habe da Storys gehört. Das Dialogue: 0,0:27:49.37,0:27:52.37,Default,,0000,0000,0000,,ist echt nicht mehr schön. Und das will\Nman alles nicht. Das ist alles super Dialogue: 0,0:27:52.37,0:27:54.93,Default,,0000,0000,0000,,schlecht auf dem Software Development\NStandpunkt her. Es gibt keine CI, keine Dialogue: 0,0:27:54.93,0:27:59.73,Default,,0000,0000,0000,,QA, keine Tests, kein gar nichts. Außerdem\Nwenn große Firmen zum Beispiel flexible Dialogue: 0,0:27:59.73,0:28:04.21,Default,,0000,0000,0000,,Lösungen haben wollen, besonders wenn man\Nso einen fragmentierten Firmware-Landscape, Dialogue: 0,0:28:04.21,0:28:08.20,Default,,0000,0000,0000,,nenne ich das jetzt mal, hat. Das heißt\Nwenn Facebook z.B. 1 Million Server hat, Dialogue: 0,0:28:08.20,0:28:11.65,Default,,0000,0000,0000,,dann sind die alle unterschiedlicher\NHersteller und die haben alle Dialogue: 0,0:28:11.65,0:28:14.37,Default,,0000,0000,0000,,unterschiedliche Firmware, die haben alle\Nunterschiedliche Update-Mechanismen, die Dialogue: 0,0:28:14.37,0:28:19.20,Default,,0000,0000,0000,,haben alle unterschiedliche Bugs. Das will\Nniemand mehr. Unterschiedliche Interfaces, Dialogue: 0,0:28:19.20,0:28:24.94,Default,,0000,0000,0000,,wie der Bootvorgang abläuft und auch\NSoftware-Debugging. Das ist die Hölle die Dialogue: 0,0:28:24.94,0:28:31.00,Default,,0000,0000,0000,,Firmware zu debuggen. Das ist nicht so\Neasy mehr. Dann zum anderen: wichtig ist Dialogue: 0,0:28:31.00,0:28:34.86,Default,,0000,0000,0000,,man kann Features sharen zwischen\NCompanies. Das heißt, wenn ich etwas Dialogue: 0,0:28:34.86,0:28:39.22,Default,,0000,0000,0000,,implementiere von unserer Firma, kann das\Nzum Beispiel Google benutzen. Es gibt Open Dialogue: 0,0:28:39.22,0:28:43.12,Default,,0000,0000,0000,,Continuous Integration. Es gibt Open\NQuality Assurance. Es gibt Open Code Dialogue: 0,0:28:43.12,0:28:48.62,Default,,0000,0000,0000,,Review. Das ist zwar nicht perfekt, aber\Ndas hilft schon immens. Zum anderen kann Dialogue: 0,0:28:48.62,0:28:53.83,Default,,0000,0000,0000,,man auch ganz viele Open Source-Entwickler\Ndann anstellen bei der Firma, was ganz gut Dialogue: 0,0:28:53.83,0:29:00.09,Default,,0000,0000,0000,,ist und es gibt auch im Endeffekt durch\Ndie Free Software Licenses wie GPL, gibt Dialogue: 0,0:29:00.09,0:29:03.82,Default,,0000,0000,0000,,es die Möglichkeit, dass Firmen mehr dazu\Ngepusht werden, das ganze Open Source zu Dialogue: 0,0:29:03.82,0:29:07.92,Default,,0000,0000,0000,,machen. Ist ein wichtiger Standpunkt. Dann\Nkommen wir nochmal kurz auf Security. Dialogue: 0,0:29:07.92,0:29:12.06,Default,,0000,0000,0000,,Security ist ein Riesenproblem, weil die\Nmeisten Security Features sollten Dialogue: 0,0:29:12.06,0:29:15.18,Default,,0000,0000,0000,,auditable sein. Das heißt man sollte\Nreingucken können, es sollte Dialogue: 0,0:29:15.18,0:29:21.90,Default,,0000,0000,0000,,Dokumentationen geben. Gibt es nämlich\Nnicht bei den meisten Security Features. Dialogue: 0,0:29:21.90,0:29:28.33,Default,,0000,0000,0000,,Reverse Engineering von der Firma ist\Nnicht das, was man eigentlich will. Es Dialogue: 0,0:29:28.33,0:29:32.36,Default,,0000,0000,0000,,gibt bei der Measured Boot Functionality,\Nalso wenn man sich Measured Boot Dialogue: 0,0:29:32.36,0:29:36.15,Default,,0000,0000,0000,,Mechanismus anguckt oder Trusted Boot, das\Nist im Endeffekt das gleiche, man hasht da Dialogue: 0,0:29:36.15,0:29:39.47,Default,,0000,0000,0000,,Sachen. Man weiß gar nicht was man\Nheutzutage hasht. Ich habe hier rechts mal Dialogue: 0,0:29:39.47,0:29:43.43,Default,,0000,0000,0000,,so ein Bild gemacht bei einem Output vom\NKernel. Was da jetzt so gehasht ist das Dialogue: 0,0:29:43.43,0:29:46.33,Default,,0000,0000,0000,,sagt mir jetzt Firmware-technisch nicht so\Nviel. Da kann man noch ein paar mehr Dialogue: 0,0:29:46.33,0:29:49.66,Default,,0000,0000,0000,,Informationen rausziehen, aber das ist\Nsehr sehr schwer herauszufinden was da Dialogue: 0,0:29:49.66,0:29:53.29,Default,,0000,0000,0000,,eigentlich gemeasured wird. Besonders wenn\Ndas Ding überall Blobs hat. Da kommen wir Dialogue: 0,0:29:53.29,0:29:57.63,Default,,0000,0000,0000,,noch später zu. Auch Security Issues zu\Nfixen ist sehr, sehr schwer bei Closed Dialogue: 0,0:29:57.63,0:30:01.50,Default,,0000,0000,0000,,Source Firmware. Wird nicht immer richtig\Ngemacht. Da gab es auch von Tremell Hudson richtig Dialogue: 0,0:30:01.50,0:30:04.50,Default,,0000,0000,0000,,viele Talks. Könnt ihr euch dann mal\Nangucken. Dieses Thema fasse ich dnan Dialogue: 0,0:30:04.50,0:30:10.19,Default,,0000,0000,0000,,jetzt nicht so tief an, aber schaut euch\Ndas mal an! Dann ist zu sagen wir kämpfen Dialogue: 0,0:30:10.19,0:30:13.70,Default,,0000,0000,0000,,gegen Blobs. Ich habe gerade schon Blobs\Ngesagt. Wollte ich eigentlich noch nicht Dialogue: 0,0:30:13.70,0:30:16.93,Default,,0000,0000,0000,,so früh sagen, aber im Endeffekt gibt es\NBinary Large Objects, kennt jeder von Dialogue: 0,0:30:16.93,0:30:19.98,Default,,0000,0000,0000,,euch. Habt ihr ja schon mal gehört. Das\Nist im Endeffekt Code, der Intellectual Dialogue: 0,0:30:19.98,0:30:23.85,Default,,0000,0000,0000,,Property, also der irgendwie Wissen\Nenthält von einer Firma, wo die glauben Dialogue: 0,0:30:23.85,0:30:27.81,Default,,0000,0000,0000,,der ist schützenswert und der wird einfach\Nnur kompiliert. Das ist dann sozusagen Dialogue: 0,0:30:27.81,0:30:32.11,Default,,0000,0000,0000,,eine Executable. Die muss dann von der\NOpen Source Firmware ausgeführt werden zum Dialogue: 0,0:30:32.11,0:30:37.79,Default,,0000,0000,0000,,Beispiel. Die hat eine API meistens. Das\NGanze gibt's auch nur noch bei modernen Dialogue: 0,0:30:37.79,0:30:43.94,Default,,0000,0000,0000,,Plattformen. Das heißt bis auf RISC V und\NIBM Power Systems gibt es keine Open Dialogue: 0,0:30:43.94,0:30:48.87,Default,,0000,0000,0000,,Source Firmware mehr, die keinen Blob\Nlädt. Das gibt's einfach nicht mehr. Das Dialogue: 0,0:30:48.87,0:30:52.27,Default,,0000,0000,0000,,heißt die Hersteller haben diesen IP-Code\Nsozusagen da rein gepackt und das ist ein Dialogue: 0,0:30:52.27,0:30:56.10,Default,,0000,0000,0000,,Riesenproblem. Die meisten Hersteller\Nwissen aber auch gar nicht, warum sie das Dialogue: 0,0:30:56.10,0:31:00.69,Default,,0000,0000,0000,,so machen. Das heißt das haben sie immer\Nschon so gemacht. An dem Bild sieht man Dialogue: 0,0:31:00.69,0:31:05.23,Default,,0000,0000,0000,,das hier ganz gut: FSP_M und FSP_S ist bei\Ncoreboot zum Beispiel Blobs, die einfach Dialogue: 0,0:31:05.23,0:31:09.13,Default,,0000,0000,0000,,in unterschiedlichen Punkten von ROM- und\NRAM-Stage geladen werden. Da gibt es sogar Dialogue: 0,0:31:09.13,0:31:14.40,Default,,0000,0000,0000,,noch mehr. Diese ganzen Blobs im Endeffekt\Nwerden immer im Pre RAM Environment Dialogue: 0,0:31:14.40,0:31:17.58,Default,,0000,0000,0000,,geladen. Wir haben gerade über dieses Pre\NRAM Environment gesprochen. Da werden die Dialogue: 0,0:31:17.58,0:31:22.100,Default,,0000,0000,0000,,meisten geladen. Der IP-Code ist meistens\Nunter NDA, weil der von unterschiedlichen Dialogue: 0,0:31:22.100,0:31:26.61,Default,,0000,0000,0000,,Companies kommt. Das heißt die bauen den\NCode teilweise nicht selber. Die haben Dialogue: 0,0:31:26.61,0:31:30.12,Default,,0000,0000,0000,,Secret Bits. Das heißt die dürfen diese\Nbösen Secret Bits nicht offen machen und Dialogue: 0,0:31:30.12,0:31:34.12,Default,,0000,0000,0000,,das hat manchmal tatsächlich Gründe. Dass\Nman hingegen kann und die Hardware kaputt Dialogue: 0,0:31:34.12,0:31:38.73,Default,,0000,0000,0000,,machen kann. Und auch jede Dokumentation\Nbei Intel ist zum Beispiel standardmäßig Dialogue: 0,0:31:38.73,0:31:43.83,Default,,0000,0000,0000,,Confidential. Das heißt es gibt nicht so\Nwirklich Open Source Dokumentation. Es Dialogue: 0,0:31:43.83,0:31:46.72,Default,,0000,0000,0000,,gibt die natürlich, aber wenn Intel\NHardware-Dokumentation macht, ist die Dialogue: 0,0:31:46.72,0:31:51.21,Default,,0000,0000,0000,,standardmäßig erstmal geschützt unter NDA.\NHat natürlich auch gewisse Vorteile, aber Dialogue: 0,0:31:51.21,0:31:54.68,Default,,0000,0000,0000,,die haben auch ein sehr konservatives\NManagement, all diese Firmen, und die haben Dialogue: 0,0:31:54.68,0:31:57.70,Default,,0000,0000,0000,,auch Legal Deparments, die nicht so auf\Nden neuesten Stand sind oder denen es Dialogue: 0,0:31:57.70,0:32:01.43,Default,,0000,0000,0000,,schwerfällt, sich zu ändern. Das ist nichts\NSchlimmes, aber das ist einfach so und wir Dialogue: 0,0:32:01.43,0:32:05.94,Default,,0000,0000,0000,,machen wirklich diesen Kampf schon\Neigentlich seit 20 Jahren. Wir kämpfen Dialogue: 0,0:32:05.94,0:32:13.36,Default,,0000,0000,0000,,seit 20 Jahren gegen diesen ganzen\NLockdown der Firmware und versuchen das zu Dialogue: 0,0:32:13.36,0:32:16.35,Default,,0000,0000,0000,,behelfen. Viele Probleme die auch mit so\NBlobs kommen, wenn man die benutzt, ist Dialogue: 0,0:32:16.35,0:32:19.35,Default,,0000,0000,0000,,halt; man eine Code-Duplikation hat. Man hat\Ndie Implementierung in coreboot, dann hat Dialogue: 0,0:32:19.35,0:32:23.76,Default,,0000,0000,0000,,man die Implementierung z.B. in diesem\NBlob. Man kann das nicht selbst fixen. Es Dialogue: 0,0:32:23.76,0:32:27.82,Default,,0000,0000,0000,,gibt keine Debugging-Möglichkeiten. Alles.\NDokumentation ist unter NDA releast und Dialogue: 0,0:32:27.82,0:32:32.43,Default,,0000,0000,0000,,das ist ein Riesenproblem. Die Blob-\NInterfaces zum Beispiel. Wir zum Beispiel Dialogue: 0,0:32:32.43,0:32:36.59,Default,,0000,0000,0000,,bei coreboot callen einen Blob und der\NBlob ist dann einfach irgendwann fertig Dialogue: 0,0:32:36.59,0:32:40.50,Default,,0000,0000,0000,,und wir können weitermachen. Aber was im\NEndeffekt jetzt demnächst passieren soll - Dialogue: 0,0:32:40.50,0:32:43.89,Default,,0000,0000,0000,,die callen zurück Das heißt, das ist ein\NProblem mit den Free Software Licenses. Dialogue: 0,0:32:43.89,0:32:47.54,Default,,0000,0000,0000,,Das müssen wir dann erst zum Legal\NDepartment schicken, dann muss das wieder Dialogue: 0,0:32:47.54,0:32:51.52,Default,,0000,0000,0000,,geklärt werden, ob das überhaupt geht, mit\Nder GPL vereinbar. Das ist alles wirklich Dialogue: 0,0:32:51.52,0:32:56.00,Default,,0000,0000,0000,,nicht so schön und meistens auch der\NSupport von diesen Vendors für diese Dialogue: 0,0:32:56.00,0:32:59.71,Default,,0000,0000,0000,,Blobs, die die wirklich da haben überhaupt\Nnicht existent. Das heißt man fragt da Dialogue: 0,0:32:59.71,0:33:03.13,Default,,0000,0000,0000,,nach und kriegt nach drei Monaten eine\NAntwort. Und man muss halt super viele Dialogue: 0,0:33:03.13,0:33:06.90,Default,,0000,0000,0000,,Blobs müssen gewrappt werden mit so API-\NSchichten. So Code-Wrappers nenne ich das Dialogue: 0,0:33:06.90,0:33:10.38,Default,,0000,0000,0000,,mal und das ist ja eigentlich nicht das,\Nwas Open Source Firmware machen sollte. Dialogue: 0,0:33:10.38,0:33:14.90,Default,,0000,0000,0000,,Ist dann halt schwierig. Wenn wir uns\Njetzt mal anschauen was so auf Intel- Dialogue: 0,0:33:14.90,0:33:18.57,Default,,0000,0000,0000,,Plattformen benötigt wird an Blobs. Ihr\Nkönnt das sehen, ich hab hier rechts so Dialogue: 0,0:33:18.57,0:33:22.19,Default,,0000,0000,0000,,mal, könnt ihr euch hinterher nochmal\Nanschauen in den Slides, so eine Übersicht Dialogue: 0,0:33:22.19,0:33:25.58,Default,,0000,0000,0000,,gegeben von Intel. Im Endeffekt haben die\NMicrocode Updates, dann haben die FSP-T. Dialogue: 0,0:33:25.58,0:33:30.39,Default,,0000,0000,0000,,Das ist Cache-As-RAM Init. FSP-M\NMemory Init. FSP-S das ist ein Teil des Dialogue: 0,0:33:30.39,0:33:35.48,Default,,0000,0000,0000,,RAM-Stage Parts. Macht überhaupt keinen\NSinn. Intel ME, Intel Audio Blobs, VGA Dialogue: 0,0:33:35.48,0:33:40.18,Default,,0000,0000,0000,,Option ROMs. Das heißt, man lädt eigentlich\Nnur noch ein Sammelsurium von Blobs und Dialogue: 0,0:33:40.18,0:33:43.57,Default,,0000,0000,0000,,das ist nicht das, was man eigentlich als\NZiel hat, weil das macht viele Dinge super Dialogue: 0,0:33:43.57,0:33:48.54,Default,,0000,0000,0000,,schwierig und will man nicht. Aber kommen\Nwir jetzt mal zu den schönen Dingen: im Dialogue: 0,0:33:48.54,0:33:51.75,Default,,0000,0000,0000,,Endeffekt gibt's ganz ganz viele Open-\NSource-Projekte. Unter anderem coreboot. Dialogue: 0,0:33:51.75,0:33:55.75,Default,,0000,0000,0000,,Das hab ich jetzt schon häufig erwähnt,\Nweil ich da halt tätig bin. Wir supporten Dialogue: 0,0:33:55.75,0:34:01.74,Default,,0000,0000,0000,,halt x86, ARM, ARM64, RISC V, PowerPC, was\Nauch immer. Wir haben nicht so gute Dialogue: 0,0:34:01.74,0:34:04.78,Default,,0000,0000,0000,,Dokumentationen, müssen wir von uns selbst\Nsagen. Ist leider so. Versuchen das gerade Dialogue: 0,0:34:04.78,0:34:08.20,Default,,0000,0000,0000,,zu ändern. Wir haben eine große Community.\NBei uns im IRC-Channel hängen so 300 Leute Dialogue: 0,0:34:08.20,0:34:13.26,Default,,0000,0000,0000,,ab, also nicht gerade wenig. Irgendwas so\Num die 200 Entwickler. Wir haben eine Dialogue: 0,0:34:13.26,0:34:17.64,Default,,0000,0000,0000,,Public Continuous Integration, wir haben\NPublic Review mit Gerrit Review und Dialogue: 0,0:34:17.64,0:34:21.44,Default,,0000,0000,0000,,demnächst auch eine wirkliche QA. Das\Nheißt wir können remote Hardware testen, Dialogue: 0,0:34:21.44,0:34:25.32,Default,,0000,0000,0000,,wenn in die CI der Code generiert wird für\Neine Firmware wird der direkt zum Gerät Dialogue: 0,0:34:25.32,0:34:30.74,Default,,0000,0000,0000,,gepusht und getestet. coreboot selbst hat\Nkeinen Bootloader, aber es lädt einen Dialogue: 0,0:34:30.74,0:34:34.76,Default,,0000,0000,0000,,Payload und dieser Payload kann vieles\Nsein: SeaBIOS, GRUB, TianoCore. Man kann Dialogue: 0,0:34:34.76,0:34:38.67,Default,,0000,0000,0000,,auch andere Firmwares laden, U-Boot oder\NLinuxBoot. Das heißt wir haben so einen Dialogue: 0,0:34:38.67,0:34:43.21,Default,,0000,0000,0000,,Payload-Mechanismus, um Bootloader\Nnachzuladen. Dann gibt es noch U-Boot, ist Dialogue: 0,0:34:43.21,0:34:47.09,Default,,0000,0000,0000,,auch so ein Community-Projekt. Macht\Nungefähr genau die gleichen Architekturen Dialogue: 0,0:34:47.09,0:34:52.01,Default,,0000,0000,0000,,wie coreboot. Hat auch Dokumentation\Nimmerhin in git und das auch deutlich Dialogue: 0,0:34:52.01,0:34:55.58,Default,,0000,0000,0000,,besser und es ist auch eine riesen\NCommunity. Die haben auch Public CI und Dialogue: 0,0:34:55.58,0:34:59.40,Default,,0000,0000,0000,,Review. Die haben eine eigene Bootloader-\NImplementierung. Ich glaube sie können Dialogue: 0,0:34:59.40,0:35:03.27,Default,,0000,0000,0000,,auch zusätzlich noch was lesen und\Nneuerdings - ganz cool - haben sie eine Dialogue: 0,0:35:03.27,0:35:10.02,Default,,0000,0000,0000,,EFI-Runtime gebaut. Das heißt im Endeffekt\Ndiese EFI-Runtime kann benutzt werden, um Dialogue: 0,0:35:10.02,0:35:15.08,Default,,0000,0000,0000,,UEFI-Interface zu spiegeln. Das heißt das\Ngaukelt halt sozusagem dem Windows ein Dialogue: 0,0:35:15.08,0:35:20.86,Default,,0000,0000,0000,,komplettes EFI-Interface vor. Coole Sache!\NTianoCore gibt's. Das ist eine offene Dialogue: 0,0:35:20.86,0:35:24.59,Default,,0000,0000,0000,,UEFI-Implementierung mit einer\NSpezifikation, extrem guter Dokumentation. Dialogue: 0,0:35:24.59,0:35:32.11,Default,,0000,0000,0000,,Irgendwie so 20'000 Seiten. ARM ist in dem\Nganzen Projekt auch aktiv geworden. Das Dialogue: 0,0:35:32.11,0:35:35.23,Default,,0000,0000,0000,,heißt ARM, wirklich als Firma, ist\Ndahingegangen hat und hat gesagt: Wir Dialogue: 0,0:35:35.23,0:35:39.32,Default,,0000,0000,0000,,machen das jetzt auch für unsere Firma.\NFür ARM64 größtenteils. Wir haben aber Dialogue: 0,0:35:39.32,0:35:43.69,Default,,0000,0000,0000,,eine relativ kleine Community, sind auch\Nsehr konservativ noch. Noch keine CI, noch Dialogue: 0,0:35:43.69,0:35:47.51,Default,,0000,0000,0000,,keine QA. Aber es gibt seit ein paar\NWochen oder Monaten einen Community- Dialogue: 0,0:35:47.51,0:35:51.10,Default,,0000,0000,0000,,Manager. Der Stefano Cetola. Der hat da\Njetzt angefangen und die ändern das Dialogue: 0,0:35:51.10,0:35:54.65,Default,,0000,0000,0000,,gerade. Das heißt die werden jetzt auch\Nmehr offen. Die haben eine eigene Dialogue: 0,0:35:54.65,0:35:59.39,Default,,0000,0000,0000,,Bootloader-Implementierung. Kann jeder\Nnachlesen, das ist der sogenannte Boot Dialogue: 0,0:35:59.39,0:36:03.32,Default,,0000,0000,0000,,Device Service BDS. Microsoft hat jetzt\Nauch gesagt sie benutzen TianoCore für Dialogue: 0,0:36:03.32,0:36:07.38,Default,,0000,0000,0000,,ihre Surface-Notebooks. Das Ganze nennt\Nsich Project Mu, könnt ihr euch dann mal Dialogue: 0,0:36:07.38,0:36:15.72,Default,,0000,0000,0000,,angucken. Dann gibt es noch Hostboot von\NIBM. Das ist für OpenPOWER bestimmt. Das Dialogue: 0,0:36:15.72,0:36:19.60,Default,,0000,0000,0000,,würde ich sagen ist die wirklich offenste\NArchitektur, die ihr so findet, von der Dialogue: 0,0:36:19.60,0:36:24.13,Default,,0000,0000,0000,,Firmware-Seite her. Da sind wirklich keine\NBlobs oder fast keine Blobs würde ich Dialogue: 0,0:36:24.13,0:36:27.13,Default,,0000,0000,0000,,sagen. Das ist aber auch wirklich nur\NPowerPC. Das heißt die unterstützen Dialogue: 0,0:36:27.13,0:36:32.27,Default,,0000,0000,0000,,wirklich nur PowerPC. Das ist genau für\Nderen Hardware zugeschnitten. Die haben Dialogue: 0,0:36:32.27,0:36:36.40,Default,,0000,0000,0000,,aber auch so einen Payload-Mechanismus wie\Nbei coreboot. Die haben eine gute Dialogue: 0,0:36:36.40,0:36:39.48,Default,,0000,0000,0000,,Dokumentation. IBM macht halt sehr viel\NDoku. Kennt ja jeder. Die sind dafür Dialogue: 0,0:36:39.48,0:36:44.24,Default,,0000,0000,0000,,bekannt. Keine public CI und QA leider\Nund Review kann man halt bei github machen. Dialogue: 0,0:36:47.70,0:36:48.70,Default,,0000,0000,0000,,Oh. Dialogue: 0,0:36:49.38,0:36:50.38,Default,,0000,0000,0000,,Entschuldigung. Dialogue: 0,0:36:51.88,0:36:56.52,Default,,0000,0000,0000,,Dann gibt es noch im Endeffekt ARM\NTrusted Firmware, Slimbootloader, OpenBMC, Dialogue: 0,0:36:56.52,0:37:02.47,Default,,0000,0000,0000,,u-bmc, Sound Open Firmware Project. Es\Ngibt noch so viele andere Firmwares. Die Dialogue: 0,0:37:02.47,0:37:04.65,Default,,0000,0000,0000,,könnt ihr euch alle mal angucken im\NEndeffekt. Ich hab da ja so ein paar Dialogue: 0,0:37:04.65,0:37:08.49,Default,,0000,0000,0000,,gelistet, aber es gibt, wenn ihr wirklich\Nmal danach sucht, ihr findet welche. Immer Dialogue: 0,0:37:08.49,0:37:14.03,Default,,0000,0000,0000,,mehr Leute machen das. Nochmal bezüglich\NSecurity-Frameworks. Davon gibts nicht so Dialogue: 0,0:37:14.03,0:37:17.80,Default,,0000,0000,0000,,viele in Firmare. In Firmware wird immer\Nalles neu programmiert. Genauso wie Dialogue: 0,0:37:17.80,0:37:20.51,Default,,0000,0000,0000,,Treiber. Das ist halt total ungeil und ich\Ndachte so: Gibt's denn ein Security- Dialogue: 0,0:37:20.51,0:37:22.81,Default,,0000,0000,0000,,Framework, was alle Firmwares so\Nverwenden, das wäre doch total cool? Dialogue: 0,0:37:22.81,0:37:27.91,Default,,0000,0000,0000,,Gibt's nicht. Es gibt so UEFI Secure Boot.\NDas haben die gebaut, wurde größtenteils Dialogue: 0,0:37:27.91,0:37:32.71,Default,,0000,0000,0000,,für Microsoft Windows gebaut, gute\NDokumentation. Hat auch Measured Boot Dialogue: 0,0:37:32.71,0:37:35.95,Default,,0000,0000,0000,,Support, wurde aber wirklich nur für UEFI\Nentwickelt. Ist keine Library, kann man Dialogue: 0,0:37:35.95,0:37:40.33,Default,,0000,0000,0000,,nicht raus nehmen. Hat aber ein End User\NModell. Das heißt der User wie ihr könnt Dialogue: 0,0:37:40.33,0:37:44.13,Default,,0000,0000,0000,,bei eurem Laptop hingehen und eigene Keys\Nin die UEFI-Firmare reinladen. Ist gar Dialogue: 0,0:37:44.13,0:37:48.25,Default,,0000,0000,0000,,nicht mal so schlecht. Der ganze\NMechanismus des Schutzes basiert auf Flash Dialogue: 0,0:37:48.25,0:37:52.83,Default,,0000,0000,0000,,Protection Mechanismus von der Plattform.\NDas heißt man kann dem Prozessor sagen, Dialogue: 0,0:37:52.83,0:37:56.44,Default,,0000,0000,0000,,schütz diesen SPI-Flash-Bereich, dann ist\Nder nicht schreibbar, dann ist der Dialogue: 0,0:37:56.44,0:38:01.42,Default,,0000,0000,0000,,geschützt und das ganze wird mit\NX.509-Zertifikaten gemacht. Ist halt so. Dialogue: 0,0:38:01.42,0:38:06.29,Default,,0000,0000,0000,,Dann gibts noch ein Security Framework\NGoogle Verified Boot. Das benutzt Google. Dialogue: 0,0:38:06.29,0:38:11.67,Default,,0000,0000,0000,,Das wurde in coreboot, U-Boot und auch\NOpenBMC eingebaut. Leider teilweise nicht Dialogue: 0,0:38:11.67,0:38:16.37,Default,,0000,0000,0000,,komplett, ist eine Library, hat aber\Nkeinen Measured Boot Support. Wenig Dialogue: 0,0:38:16.37,0:38:20.53,Default,,0000,0000,0000,,Dokumentation leider und ist auch sehr\Nadaptiert an diese ganzen google Chrome OS Dialogue: 0,0:38:20.53,0:38:24.17,Default,,0000,0000,0000,,Geschichten, weil das größtenteils für\NChrome OS entwickelt wurde. Hat auch das Dialogue: 0,0:38:24.17,0:38:27.39,Default,,0000,0000,0000,,Problem, dass es multiple Kopien in der\NFirmware hat. Hat auch Vorteile, weil dann Dialogue: 0,0:38:27.39,0:38:32.49,Default,,0000,0000,0000,,hat man sowas wie ein Failure System. Das\Nheißt man kann einfach von einer Kopie zur Dialogue: 0,0:38:32.49,0:38:35.97,Default,,0000,0000,0000,,nächsten zurück springen und es gibt auch\Neine Read Only Kopie. Das heißt die wird Dialogue: 0,0:38:35.97,0:38:39.10,Default,,0000,0000,0000,,niemals geändert. Read-Writeable A und B\Nwird für Updates benutzt. Das ist Dialogue: 0,0:38:39.10,0:38:44.37,Default,,0000,0000,0000,,eigentlich dieses A/B Update Scheme oder\NA/B/C Update Scheme. Sehr, sehr gut gemacht Dialogue: 0,0:38:44.37,0:38:48.00,Default,,0000,0000,0000,,und im Endeffekt ist das halt eine\NLibrary. Die Schutzmechanismen basieren Dialogue: 0,0:38:48.00,0:38:52.14,Default,,0000,0000,0000,,halt auf dem Flash-Chip selber. Die gehen\Nnicht davon aus, dass man SoC-Mechanismen Dialogue: 0,0:38:52.14,0:38:56.09,Default,,0000,0000,0000,,benutzt, weil die sagen das ist halt nicht\Nsonderlich sicher. Man möchte den SPI- Dialogue: 0,0:38:56.09,0:39:00.91,Default,,0000,0000,0000,,Schutz direkt nehmen. Es gibt so SPI-NOR-\NFlash-Schutz. Dieser Chip hat eigene Dialogue: 0,0:39:00.91,0:39:04.98,Default,,0000,0000,0000,,Schutzmechanismen, die man benutzt. Das\Nganze basiert auf kryptographischen Keys. Dialogue: 0,0:39:04.98,0:39:12.00,Default,,0000,0000,0000,,Ganz normale Keys, keine Zertifikate.\NJetzt kommen wir noch zum letzten Teil: An Dialogue: 0,0:39:12.00,0:39:17.11,Default,,0000,0000,0000,,old idea for a new approach. Im Endeffekt\NLinuxBoot, hab ich noch gar nicht erwähnt. Dialogue: 0,0:39:17.11,0:39:20.91,Default,,0000,0000,0000,,Habt ihr wahrscheinlich schon überall\Ngehört. Kam viel in den Nachrichten. Sehr Dialogue: 0,0:39:20.91,0:39:27.11,Default,,0000,0000,0000,,beliebt und wo es da im Endeffekt darum\Ngeht ist, dass LinuxBoot - in diesem Dialogue: 0,0:39:27.11,0:39:31.46,Default,,0000,0000,0000,,Projekt das wurde auch bei Google\Nentwickelt. GPLv2- und BSD-Lizenzen und so Dialogue: 0,0:39:31.46,0:39:35.55,Default,,0000,0000,0000,,weiter. Aber es geht prinzipiell darum,\Neinen Teil der Firmware mit dem Linux- Dialogue: 0,0:39:35.55,0:39:41.35,Default,,0000,0000,0000,,Kernel zu ersetzen. Das heißt den Treiber-\NLayer, den man so kennt den kann man mit Dialogue: 0,0:39:41.35,0:39:45.30,Default,,0000,0000,0000,,dem Linux-Kernel ersetzen, weil es da\Nschon Treiber drin gibt. Der Kernel Dialogue: 0,0:39:45.30,0:39:47.88,Default,,0000,0000,0000,,besteht nur aus Treibern. Der wird seit\NJahren mit Treibern weiter und weiter Dialogue: 0,0:39:47.88,0:39:50.48,Default,,0000,0000,0000,,entwickelt. So viele Treiber wie der\NLinux-Kernel hat, hat glaube ich kein Dialogue: 0,0:39:50.48,0:39:54.84,Default,,0000,0000,0000,,anderer Kernel. Da kann man den kompletten\NTreiber-Layer mit ersetzen. Zum anderen Dialogue: 0,0:39:54.84,0:39:57.84,Default,,0000,0000,0000,,findet man einfache Entwickler. Das heißt\Nso Linux Entwickler oder Linux User Space Dialogue: 0,0:39:57.84,0:40:01.97,Default,,0000,0000,0000,,Entwickler, die Linux-Applikationen bauen\Nsind total easy zu finden. Firmware- Dialogue: 0,0:40:01.97,0:40:03.90,Default,,0000,0000,0000,,Entwickler sind eher irgendwie weit weg,\Nman findet die nie und schwer Dialogue: 0,0:40:03.90,0:40:08.43,Default,,0000,0000,0000,,aufzutreiben. Man hat wenig\NCodeduplikation, es gibt auch well-tested Dialogue: 0,0:40:08.43,0:40:13.64,Default,,0000,0000,0000,,Treiber, dass bedeutet, sie sind gut\Ngetestet, also "gut". Aber sie Dialogue: 0,0:40:13.64,0:40:17.73,Default,,0000,0000,0000,,funktionieren immerhin besser als die von\Nder Firmware, und man kann den Bootloader Dialogue: 0,0:40:17.73,0:40:23.83,Default,,0000,0000,0000,,auch noch ersetzen. Man braucht sozusagen\Nden Bootloader vom System nicht mehr. Man Dialogue: 0,0:40:23.83,0:40:27.66,Default,,0000,0000,0000,,kann auch den Bootloader von der Firmware\Nersetzen. Und das sieht ganz so aus. Man Dialogue: 0,0:40:27.66,0:40:29.93,Default,,0000,0000,0000,,geht dann hin, man hat das Pre-Ram-\NEnvironment noch, streicht den Driver Dialogue: 0,0:40:29.93,0:40:33.54,Default,,0000,0000,0000,,Layer durch, macht einen Linux Kernel\Ndorthin, streicht den Bootloader durch und Dialogue: 0,0:40:33.54,0:40:37.39,Default,,0000,0000,0000,,macht einen Linux Userspace dahin. Dann\Nsagt ihr so, wie geht das denn? Jeder von Dialogue: 0,0:40:37.39,0:40:42.30,Default,,0000,0000,0000,,euch kennt einen Linux Kernel, jeder von\Neuch kennt eine initramfs, initramfs ist Dialogue: 0,0:40:42.30,0:40:45.91,Default,,0000,0000,0000,,Linux Userspace, Linux Kernel ist Linux\NKernel. Dass heißt, man packt tatsächlich Dialogue: 0,0:40:45.91,0:40:50.19,Default,,0000,0000,0000,,einen kompletten Linux-Kernel da rein, man\Npackt da einfach eine initramfs da rein, Dialogue: 0,0:40:50.19,0:40:56.20,Default,,0000,0000,0000,,und dann läuft das Ganze. Hört sich\Neinfach an, ist nicht unbedingt so. Aber Dialogue: 0,0:40:56.20,0:40:59.72,Default,,0000,0000,0000,,wenn man sich anschaut, oben ist die\NFirmware, coreboot, U-Boot, TianoCore, Dialogue: 0,0:40:59.72,0:41:05.37,Default,,0000,0000,0000,,Hostboot, und dann gibt's die Linux-Boot\NGeschichten hier. Das funktioniert. Aber Dialogue: 0,0:41:05.37,0:41:09.70,Default,,0000,0000,0000,,es gibt leider Limitierungen und es gibt\Nnoch Todos, die wir machen müssen. Zum Dialogue: 0,0:41:09.70,0:41:13.66,Default,,0000,0000,0000,,einen ist das, wir müssen die PCI device\Nenumeration noch anschalten. Die ist Dialogue: 0,0:41:13.66,0:41:14.90,Default,,0000,0000,0000,,aktuell noch nicht aktiviert, die gibt's\Naber schon im Kernel, dass heißt, diesen Dialogue: 0,0:41:14.90,0:41:18.29,Default,,0000,0000,0000,,ganzen Kram können wir wegnehmen. System\NManagement Mode für x86 gibts leider auch Dialogue: 0,0:41:18.29,0:41:21.71,Default,,0000,0000,0000,,keinen Treiber für, native Grafik\NInitialisierung geht schon mit dem Linux- Dialogue: 0,0:41:21.71,0:41:24.34,Default,,0000,0000,0000,,Kernel. Ich kann den Kernel in die\NFirmware tun, die initialisiert den Dialogue: 0,0:41:24.34,0:41:27.47,Default,,0000,0000,0000,,gesamten graphics stack. Da habe ich schon\Ndirekt Ausgabe, sozusagen, in der Firmware Dialogue: 0,0:41:27.47,0:41:33.51,Default,,0000,0000,0000,,haben wir Grafikausgabe, und kann auch\Ndirekt 3D-Beschleunigung machen. {\i1}Lachen{\i0} Dialogue: 0,0:41:33.51,0:41:39.20,Default,,0000,0000,0000,,Super. Das einzige Problem ist, ACPI\NTabellen und e820 Tabelle, die sind halt Dialogue: 0,0:41:39.20,0:41:42.19,Default,,0000,0000,0000,,ein Requirement für den Kernel, die sind\Nhalt noch nicht da, da muss man sich noch Dialogue: 0,0:41:42.19,0:41:45.45,Default,,0000,0000,0000,,etwas überlegen, da sind wir uns noch\Nnicht so sicher. Und, es gibt bis jetzt Dialogue: 0,0:41:45.45,0:41:51.10,Default,,0000,0000,0000,,nur eine Bootloader Implementierung\Nleider. Da komme ich jetzt zu. Die Dialogue: 0,0:41:51.10,0:41:53.29,Default,,0000,0000,0000,,initramfs, also wir haben jetzt über\NLinux-Kernel gesprochen, wir nehmen den Dialogue: 0,0:41:53.29,0:41:57.55,Default,,0000,0000,0000,,standard Linux-Kernel, initramfs is\Nu-root, das ist eine golang-basierte Dialogue: 0,0:41:57.55,0:42:02.12,Default,,0000,0000,0000,,initramfs-Generator. Der funktioniert so\Nwie busybox, der kann auch Binaries aus Dialogue: 0,0:42:02.12,0:42:05.36,Default,,0000,0000,0000,,dem System hinzufügen. Ihr generiert\Neinfach eine initrd. Ihr kennt schon super Dialogue: 0,0:42:05.36,0:42:09.08,Default,,0000,0000,0000,,viele, der ist Go geschreiben und das\Ncoole ist, man kann Go-Code schreiben. Und Dialogue: 0,0:42:09.08,0:42:11.67,Default,,0000,0000,0000,,der unterstützt mittlerweile auch schon\NMultiboot Version 1 kexec support, Dialogue: 0,0:42:11.67,0:42:15.85,Default,,0000,0000,0000,,komplett in golang implementiert. Das\Nheißt, man kann da komplett wirklich Dialogue: 0,0:42:15.85,0:42:21.25,Default,,0000,0000,0000,,irgendwelche Betriebssysteme laden: BSD,\NWindows, Linux, was auch immer. Das Ganze Dialogue: 0,0:42:21.25,0:42:25.33,Default,,0000,0000,0000,,hat auch noch ein Tooling, fuefi, coreboot\N4 Interface Support gibt es auch schon, Dialogue: 0,0:42:25.33,0:42:29.27,Default,,0000,0000,0000,,und einen TPM Software Stack in Go wurde\Nauch schon programmiert. Systemboot ist Dialogue: 0,0:42:29.27,0:42:32.32,Default,,0000,0000,0000,,der Bootloader, von dem ich gesprochen\Nhabe, komplett in golang implementiert. Dialogue: 0,0:42:32.32,0:42:36.18,Default,,0000,0000,0000,,Das ist die erste Implementierung,\Nsozusagen, in golang, glaube ich, es gibt Dialogue: 0,0:42:36.18,0:42:41.00,Default,,0000,0000,0000,,da keine andere. Das Ganze basiert dann\Nauf u-root, so auf diesem busybox-, Dialogue: 0,0:42:41.00,0:42:47.20,Default,,0000,0000,0000,,initrd-Generator, und da kann man dann im\NEndeffekt von der Festplatte über GRUB, Dialogue: 0,0:42:47.20,0:42:51.61,Default,,0000,0000,0000,,GRUB2 und Syslinux configs booten, und\Nhalt auch per DHCP. Das heißt man kann so Dialogue: 0,0:42:51.61,0:42:56.02,Default,,0000,0000,0000,,eine boot URL da mitgeben und dann macht\Nder einen kexec und bootet halt in das Dialogue: 0,0:42:56.02,0:42:58.02,Default,,0000,0000,0000,,Betriebssystem rein. Das funktioniert auch\Nwirklich schon, es gibt einen verified- Dialogue: 0,0:42:58.02,0:43:02.10,Default,,0000,0000,0000,,und measured boot-Mechanismus. Es gibt\Nauch Firmware Variablen, leider nur für Dialogue: 0,0:43:02.10,0:43:04.74,Default,,0000,0000,0000,,coreboot, UEFI haben wir noch nicht\Neingebaut. Aber wenn ihr da mal Interesse Dialogue: 0,0:43:04.74,0:43:08.79,Default,,0000,0000,0000,,habt, guckt es euch an, wirklich, ist\Ntotal easy. Ist ja Go, und ein paar 100 Dialogue: 0,0:43:08.79,0:43:12.42,Default,,0000,0000,0000,,Zeilen, da kann man schon die Welt mit in\NGo irgendwie erschaffen, oder irgendwie, Dialogue: 0,0:43:12.42,0:43:17.15,Default,,0000,0000,0000,,keine Ahnung, Grafikausgabe machen oder\Nsowas, nicht sonderlich schwer. Kommen wir Dialogue: 0,0:43:17.15,0:43:22.38,Default,,0000,0000,0000,,zum Fazit im Endeffekt. Es gibt jede Menge\NOpen Source Firmware Hardware. Open Dialogue: 0,0:43:22.38,0:43:24.84,Default,,0000,0000,0000,,Compute Project, das ist ein\NRiesenprojekt. Da wollen die jetzt Server Dialogue: 0,0:43:24.84,0:43:27.96,Default,,0000,0000,0000,,Hardware mit Linux boot und coreboot\Nbauen. Das wird gerade gemacht, da werdet Dialogue: 0,0:43:27.96,0:43:32.05,Default,,0000,0000,0000,,ihr demnächst noch mehr von hören. Open\NCellular zum Beispiel, gibt's auch. Diese Dialogue: 0,0:43:32.05,0:43:34.98,Default,,0000,0000,0000,,Open Source Playstations. Purism, die\Nmachen Laptops mit coreboot, Google Dialogue: 0,0:43:34.98,0:43:37.88,Default,,0000,0000,0000,,Chromebooks ist alles coreboot, Open\NEmbedded Controllers haben die auch, und Dialogue: 0,0:43:37.88,0:43:43.43,Default,,0000,0000,0000,,Open Source TPM Firmware. Total geil. PC\NEngines APU, die günstig, 90 Euro, da Dialogue: 0,0:43:43.43,0:43:47.28,Default,,0000,0000,0000,,läuft auch coreboot drauf, könnte man mit\Nrumspielen. Scaleway ist so ein Hosting Dialogue: 0,0:43:47.28,0:43:51.40,Default,,0000,0000,0000,,Provider, der hat auch auf coreboot\Numgewechselt auf den x86 Systemen. Raptor Dialogue: 0,0:43:51.40,0:43:57.03,Default,,0000,0000,0000,,Computing Systems, die bauen halt diese\NTALOS IBM Open PowerPCs. Da gibt's nicht Dialogue: 0,0:43:57.03,0:44:00.62,Default,,0000,0000,0000,,nur PCs sondern auch Server. Die könnt ihr\Nauch kaufen, sind noch ein bisschen teuer, Dialogue: 0,0:44:00.62,0:44:04.61,Default,,0000,0000,0000,,aber die gehen jetzt, glaube ich, auf 1000\NEuro runter für das Mainboard. Das wird Dialogue: 0,0:44:04.61,0:44:08.65,Default,,0000,0000,0000,,also, so langsam kann man sich das kaufen.\NMicrosoft Surface verwendet Dialogue: 0,0:44:08.65,0:44:13.05,Default,,0000,0000,0000,,das Projekt Mu. Da wird auch eine Menge gemacht. Und\Njede Menge embedded boards. Also wenn ihr Dialogue: 0,0:44:13.05,0:44:16.42,Default,,0000,0000,0000,,mal mit Firmware-Entwicklung was machen\Nwollt, macht das. Und die Bilder sind echt Dialogue: 0,0:44:16.42,0:44:21.30,Default,,0000,0000,0000,,alles was man hat, wie ihr da sieht, ist\Nman schon komplett von Open Source Dialogue: 0,0:44:21.30,0:44:27.59,Default,,0000,0000,0000,,Software supported. Ich habe halt die Open\NSource Firmware Konferenz gegründet. Die Dialogue: 0,0:44:27.59,0:44:31.11,Default,,0000,0000,0000,,haben wir letztes Jahr gehabt, da hatten\Nwir schon wahnsinnige Sponsoren: Google, Dialogue: 0,0:44:31.11,0:44:34.09,Default,,0000,0000,0000,,Intel, Facebook, Arm, Sekonet, Siemens.\NAlso große Namen, Open Suse war auch Dialogue: 0,0:44:34.09,0:44:38.98,Default,,0000,0000,0000,,dabei. 150 Attendees. War in Deutschland,\Nhier in Erlangen. Coreboot, LinuxBoot und Dialogue: 0,0:44:38.98,0:44:42.74,Default,,0000,0000,0000,,jede Menge andere Firmware hatten wir so,\Ndie da war. Dieses Jahr wird sie in Dialogue: 0,0:44:42.74,0:44:45.41,Default,,0000,0000,0000,,Silicon Valley sein, wenn ihr da auch\Nhinwollt und ihr seid so FOSS-Entwickler Dialogue: 0,0:44:45.41,0:44:49.12,Default,,0000,0000,0000,,oder Student, da können wir Ausnahmen\Nmachen und können auch die Leute auch Dialogue: 0,0:44:49.12,0:44:53.48,Default,,0000,0000,0000,,ankarren. Ist geplant für Mitte September.\NJa, und das wird dann auch nochmal alles Dialogue: 0,0:44:53.48,0:44:58.94,Default,,0000,0000,0000,,ein bisschen größer werden. Letzte Slide:\Nkommt gerne zu unserem 35C3 OSF Assembly, Dialogue: 0,0:44:58.94,0:45:04.35,Default,,0000,0000,0000,,wir haben unten Assembly, so wie alle\NJahre wieder. Diesmal mit 30 Sitzplätzen. Dialogue: 0,0:45:04.35,0:45:07.46,Default,,0000,0000,0000,,Ihr könnt eure Hardware flashen lassen\Nwenn ihr Thinkpads habt, die supported Dialogue: 0,0:45:07.46,0:45:12.06,Default,,0000,0000,0000,,sind. Wir machen auch Workshops oder ihr\Nkönnt Leute fragen, die euch dabei helfen. Dialogue: 0,0:45:12.06,0:45:16.80,Default,,0000,0000,0000,,Wir haben auch ein Demo-Setup, wo ihr\Nrumspielen könnt. Und das Ganze machen wir Dialogue: 0,0:45:16.80,0:45:22.38,Default,,0000,0000,0000,,für coreboot, TianoCore, U-Boot,\NLinuxBoot, Systemboot und u-root. Ja! Dialogue: 0,0:45:22.38,0:45:25.66,Default,,0000,0000,0000,,Kommt vorbei und schaut's euch an! Das\Nwar's. Dialogue: 0,0:45:25.66,0:45:41.13,Default,,0000,0000,0000,,{\i1}Applaus{\i0} Dialogue: 0,0:45:41.13,0:45:42.48,Default,,0000,0000,0000,,Herald-Angel: Ich bin froh, dass ich nicht Dialogue: 0,0:45:42.48,0:45:47.74,Default,,0000,0000,0000,,mehr mit Toggle-Switches booten muss. Das\Nist schon mal ganz gut. Gibt es Dialogue: 0,0:45:47.74,0:45:53.93,Default,,0000,0000,0000,,irgendwelche Fragen nach diesen\Nspannenden, sehr, sehr lehrreichen Talk. Dialogue: 0,0:45:53.93,0:46:00.53,Default,,0000,0000,0000,,Bitte kommt zu den Mikrofonen. Wir haben\Nim Raum 1, 2, 3, 4 Mikrofone und ich sehe Dialogue: 0,0:46:00.53,0:46:07.49,Default,,0000,0000,0000,,eine jetzt schon bei Mikrofon 4. Genau,\Nvielleicht sollte ich spezifizieren: Dialogue: 0,0:46:07.49,0:46:15.32,Default,,0000,0000,0000,,Fragen. Eine Frage ist ein Satz mit einem\NFragezeichen dahinter. Und er beinhaltet Dialogue: 0,0:46:15.32,0:46:18.34,Default,,0000,0000,0000,,nicht deinen ganzen Lebenslauf. Schieß\Nlos. Dialogue: 0,0:46:18.34,0:46:24.76,Default,,0000,0000,0000,,Mikrofon 4: Wie ist das ganze mit RISC-V\Nintegriert? Habt ihr irgendwelche Pläne Dialogue: 0,0:46:24.76,0:46:27.04,Default,,0000,0000,0000,,für das?\Nzaolin: Also wie ist das mit RISC-V Dialogue: 0,0:46:27.04,0:46:30.15,Default,,0000,0000,0000,,integriert? Also es gibt ja verschiedene\NOpen Source Firmware. Aktuell gibt es, Dialogue: 0,0:46:30.15,0:46:34.46,Default,,0000,0000,0000,,u-boot kriegt gerade Support für RISC-V.\NDas heißt, dort kann man schon tatsächlich Dialogue: 0,0:46:34.46,0:46:37.85,Default,,0000,0000,0000,,auch was mit machen. coreboot hat schon\NRISC-V Support. Dass heißt, wenn du halt Dialogue: 0,0:46:37.85,0:46:42.64,Default,,0000,0000,0000,,mit RISC-V rumspielen willst, holst du dir\Ncoreboot als Firmware, würde ich sagen. Dialogue: 0,0:46:42.64,0:46:44.67,Default,,0000,0000,0000,,Bei u-boot kann das noch ein bisschen\Ndauern, kannst du aber auch schon mal Dialogue: 0,0:46:44.67,0:46:47.91,Default,,0000,0000,0000,,ausprobieren. Die sind gerade dabei. Das\Nheißt in diesen beiden Firmwares gibt Dialogue: 0,0:46:47.91,0:46:50.72,Default,,0000,0000,0000,,schon RISC-V Support, ja.\NMikrofon 4: Dankeschön. Dialogue: 0,0:46:50.72,0:46:54.54,Default,,0000,0000,0000,,Herald: Wir haben, glaube ich, eine Frage bei\NMikrofon 1, hier. Dialogue: 0,0:46:54.54,0:46:58.97,Default,,0000,0000,0000,,Mikrofon 1: Mich würde interessieren, wie\Ndas bei solchen normalen Consumer- Dialogue: 0,0:46:58.97,0:47:04.41,Default,,0000,0000,0000,,Produkten aussieht? Also, du hast\NThinkPads selbst angesprochen. Bei den Dialogue: 0,0:47:04.41,0:47:09.65,Default,,0000,0000,0000,,neueren gab es da ja das Problem mit Intel\NBoot Guard. Da kann ich ja gar nicht so Dialogue: 0,0:47:09.65,0:47:14.73,Default,,0000,0000,0000,,ohne Weiteres ein coreboot draufspielen.\NWie verhält es sich denn damit? Dialogue: 0,0:47:14.73,0:47:18.05,Default,,0000,0000,0000,,zaolin: OK, also wie das mit neueren\NLaptops aussieht, mit coreboot zum Dialogue: 0,0:47:18.05,0:47:22.46,Default,,0000,0000,0000,,Beispiel, oder anderer Firmware? \NDas Ding ist: die modernen Laptops Dialogue: 0,0:47:22.46,0:47:25.44,Default,,0000,0000,0000,,haben halt ein Feature von Intel bekommen.\NDas nennt sich Intel Boot Guard und damit Dialogue: 0,0:47:25.44,0:47:29.73,Default,,0000,0000,0000,,gibt Intel halt Dell, Lenovo und HP die\NMöglichkeit, die Firmware sozusagen zu Dialogue: 0,0:47:29.73,0:47:33.33,Default,,0000,0000,0000,,schützen, dass sie vor Modifikationen\Ngeschützt wird durch einen Secure Boot Dialogue: 0,0:47:33.33,0:47:36.85,Default,,0000,0000,0000,,Mechanismus von der Southbridge aus. Das\Nheißt das können wir nicht aushebeln aber Dialogue: 0,0:47:36.85,0:47:40.98,Default,,0000,0000,0000,,es gibt Laptops, wo das abgeschaltet ist,\Nweil der Hersteller sagt wir möchten da Dialogue: 0,0:47:40.98,0:47:45.32,Default,,0000,0000,0000,,coreboot drauf machen. Das heißt du kannst\Nbei Purism zum Beispiel Laptops kaufen. Du Dialogue: 0,0:47:45.32,0:47:47.76,Default,,0000,0000,0000,,kannst bei anderen Herstellern bestimmt,\Ndas kommt noch in Zukunft, bestimmt Dialogue: 0,0:47:47.76,0:47:50.82,Default,,0000,0000,0000,,deutlich mehr Herstellern Laptops kaufen,\Ndu kannst Chromebooks kaufen, die alle Dialogue: 0,0:47:50.82,0:47:55.37,Default,,0000,0000,0000,,schon mal coreboot kommen. Da hast du die\Nfreie Möglichkeit was mit zu machen ja. Dialogue: 0,0:47:55.37,0:48:00.65,Default,,0000,0000,0000,,Herald: Also noch haben wir keine Fragen aus\Ndem Internet. Also die Mikrofon-Nummer Dialogue: 0,0:48:00.65,0:48:05.33,Default,,0000,0000,0000,,3 da hinten.\NMikrofon 3: Die Frage zum Workflow, wenn ich Dialogue: 0,0:48:05.33,0:48:11.96,Default,,0000,0000,0000,,LinuxBoot verwende als Firmware. Wenn ich\Nmit LinuxBoot boote, ist denn der Kernel, Dialogue: 0,0:48:11.96,0:48:17.12,Default,,0000,0000,0000,,der als Firmware agiert auch der, den ich\Ndann sozusagen zum Einsatz der Maschine Dialogue: 0,0:48:17.12,0:48:21.30,Default,,0000,0000,0000,,verwende? Also ist der gleiche wie ein\NServer-Kernel oder ein Laptop-Kernel oder Dialogue: 0,0:48:21.30,0:48:24.41,Default,,0000,0000,0000,,ersetzt er sich selber später mit einem,\Nder zum Beispiel von der Festplatte Dialogue: 0,0:48:24.41,0:48:28.32,Default,,0000,0000,0000,,geladen wird?\Nzaolin: Also ob sich bei Linux-Kernel sozusagen Dialogue: 0,0:48:28.32,0:48:32.00,Default,,0000,0000,0000,,später ersetzt durch einen weiteren\NKernel? Das stimmt, also ja, das tut es. Dialogue: 0,0:48:32.00,0:48:35.05,Default,,0000,0000,0000,,Der Linux-Bootkernel, den man hat, das ist\Nim Endeffekt wirklich nur für die Dialogue: 0,0:48:35.05,0:48:38.48,Default,,0000,0000,0000,,Hardware-Initialisierung, weil der sollte\Nklein sein. Also man hat da so begrenzten Dialogue: 0,0:48:38.48,0:48:42.81,Default,,0000,0000,0000,,Speicher noch auf dem SPI-NOR-Flash von\Nein paar MB und der sollte nicht so groß Dialogue: 0,0:48:42.81,0:48:46.04,Default,,0000,0000,0000,,sein und der lädt später via kexec dann\Neinen anderen Kernel, ja. Dialogue: 0,0:48:47.59,0:48:52.08,Default,,0000,0000,0000,,Herald: Gibt es weitere Fragen? Nein? Dialogue: 0,0:48:54.33,0:49:00.93,Default,,0000,0000,0000,,Dann helft mir dabei, Philipp für diesen\Ngenialen Talk zu danken. Dialogue: 0,0:49:01.79,0:49:07.90,Default,,0000,0000,0000,,{\i1}Applaus{\i0} Dialogue: 0,0:49:07.90,0:49:11.15,Default,,0000,0000,0000,,Herald (unter Applaus): Also hier vorne haben wir \Nschon einmal Standing Ovation. Dialogue: 0,0:49:11.15,0:49:14.15,Default,,0000,0000,0000,,Das ist schon mal ganz gut. \NMacht weiter so! Dialogue: 0,0:49:14.88,0:49:15.90,Default,,0000,0000,0000,,Okay, vielen Dank. Dialogue: 0,0:49:15.90,0:49:19.42,Default,,0000,0000,0000,,{\i1}postroll music{\i0} Dialogue: 0,0:49:19.42,0:49:39.00,Default,,0000,0000,0000,,Untertitel erstellt von c3subtitles.de\Nim Jahr 2019. Mach mit und hilf uns!