minimal linux live
TRANSCRIPT
© 2016 Software AG. All rights reserved.
Minimal Linux LiveИван ДавидовSenior software engineerSoftware AG
2 | © 2016 Software AG. All rights reserved.
Програма
Подходи при сглобяване на Linux базирани операционни системи
Minimal Linux Live в сравнение с други подобни проекти
Архитектура на Minimal Linux Live
История и еволюция на Minimal Linux Live
Q & A
3 | © 2016 Software AG. All rights reserved.
Програма
Подходи при сглобяване на Linux базирани операционни системи
Minimal Linux Live в сравнение с други подобни проекти
Архитектура на Minimal Linux Live
История и еволюция на Minimal Linux Live
Q & A
4 | © 2016 Software AG. All rights reserved.
Програма
Подходи при сглобяване на Linux базирани операционни системи
Minimal Linux Live в сравнение с други подобни проекти
Архитектура на Minimal Linux Live
История и еволюция на Minimal Linux Live
Q & A
5 | © 2016 Software AG. All rights reserved.
Програма
Подходи при сглобяване на Linux базирани операционни системи
Minimal Linux Live в сравнение с други подобни проекти
Архитектура на Minimal Linux Live
История и еволюция на Minimal Linux Live
Q & A
6 | © 2016 Software AG. All rights reserved.
Програма
Подходи при сглобяване на Linux базирани операционни системи
Minimal Linux Live в сравнение с други подобни проекти
Архитектура на Minimal Linux Live
История и еволюция на Minimal Linux Live
Q & A
7 | © 2016 Software AG. All rights reserved.
Как се сглобява Linux базирана операционна система
Необходими са сериозни технически познания за Linux на ниско ниво. Например:– връзка между boot loader, kernel и initramfs.– превключване на rootfs (pivot_root и switch_root).– процес на зареждане на shared libraries при dynamic loading.
Имаме пълен контрол над всички елементи и процеси по време на сглобяването:– можем да променяме и/или оптимизираме абсолютно всичко.– трябва да знаем как се работи с GNU C/C++ компилаторите.
От нулата / From scratch
8 | © 2016 Software AG. All rights reserved.
Как се сглобява Linux базирана операционна система
Необходимо е да познаваме архитектурата на базовата операционна система.
С по-малко усилия можем да постигнем значителни резултати:– смяна на името, логото и wallpaper-ите придава уникален вид.
Не винаги е лесно да променяме или добавяме елементи (features):– remastering техниките дават възможност за “препакетиране” на базовата OS.– за почти всичко останало е необходимо да приложим “from scratch” техники.
Remaster / Remix
© 2016 Software AG. All rights reserved.
Проекти от тип “From scratch”
10 | © 2016 Software AG. All rights reserved.
Linux From Scratch
http://linuxfromscratch.org
• Онлайн книга, която описва как да сглобим Linux базирана операционна система от сорсове, директно върху дял на твърдия диск.
• Предимства:– много подробни указания за работа.
• Недостатъци:– твърде много указания за работа.
11 | © 2016 Software AG. All rights reserved.
Buildroot
http://buildroot.org
• Билд система, базирана на Makefile, която генерира bootable ISO image.
• Предимства:– много гъвкава система за създаване на embedded Linux OS.– лесна за използване - необходими са само две поредни shell команди.
• Недостатъци:– build процесът е труден за разбиране и модифициране.– начинаещите няма да научат връзката между отделните компоненти.
12 | © 2016 Software AG. All rights reserved.
Minimal Linux Live
http://minimal.linux-bg.org
• Build система, базирана на shell script файлове:– всеки script файл изпълнява само една задача.
• Крайният продукт е bootable ISO image:– операционната система е с много малки размери (~7MB).
• Предлага може би най-добрата документация на тема live Linux OS:– tutorial, който подробно обяснява всички стъпки от build процеса.– всички script файлове съдържат подробни технически коментари.
13 | © 2016 Software AG. All rights reserved.
Minimal Linux Live
• MLL генерира bootable ISO image.
• Документацията на MLL може да се прочете за по-малко от един час.
• MLL съдържа само най-основните Linux OS компоненти.
vs. Linux From Scratch
14 | © 2016 Software AG. All rights reserved.
• MLL е базиран на shell script файлове.
• MLL може лесно да се модифицира (от програмисти).
• Документацията на MLL е създадена от програмисти за програмисти.
• Download размерът на Buildroot e ~5MB, докато размерът на MLL e ~20KB.
Minimal Linux Live vs. Buildroot
15 | © 2016 Software AG. All rights reserved.
Колко усилия са необходими, за да сглобимедна проста операционна система?
16 | © 2016 Software AG. All rights reserved.
1) wget http://kernel.org/pub/linux/kernel/v4.x/linux-4.6.2.tar.xz
2) wget http://busybox.net/downloads/busybox-1.24.2.tar.bz23) tar -xvf linux-4.6.2.tar.xz4) tar -xvf busybox-1.24.2.tar.bz25) cd busybox-1.24.26) make distclean defconfig7) sed -i "s/.*CONFIG_STATIC.*/CONFIG_STATIC=y/" .config8) make busybox install9) cd _install10)rm -f linuxrc11)mkdir dev proc sys12)echo '#!/bin/sh' > init13)echo 'dmesg -n 1' >> init14)echo 'mount -t devtmpfs none /dev' >> init15)echo 'mount -t proc none /proc' >> init16)echo 'mount -t sysfs none /sys' >> init17)echo 'setsid cttyhack /bin/sh' >> init18)chmod +x init19)find . | cpio -R +0:+0 -H newc -o | gzip >
../../rootfs.cpio.gz20)cd ../../linux-4.6.221)make mrproper defconfig bzImage22)make isoimage FDINITRD=../rootfs.cpio.gz23)cp arch/x86/boot/image.iso ../minimal_linux_live.iso24)cd ..
Необходими са само 24 реда!
http://github.com/ivandavidov/minimal-linux-script
• Проектът “Minimal Linux Script” е базиран на първата версия на MLL.
• Показва в съвсем сбит вид пълния процес по сглобяване на проста Linux базирана операционна система.
17 | © 2016 Software AG. All rights reserved.
Архитектура на Minimal Linux Live
Host OS Build toolchain (make, GCC, ...)
Build Folder
Linux kernel Linux headers
GNU C Library BusyBox
Syslinux
ISO Image
Linux kernel
Initramfs
Isolinux files
/src
/minimal
© 2016 Software AG. All rights reserved.
Демонстрация
© 2016 Software AG. All rights reserved.
Еволюцията на Minimal Linux Live
20 | © 2016 Software AG. All rights reserved.
Първа версия (28-Jul-2014)
• Bootable ISO с Linux kernel и BusyBox.
• Busybox е статично линкнат с GLIBC от host OS:– като следствие DNS функционалността не работи.
• Компресираният сорс код е 2.9KB.
21 | © 2016 Software AG. All rights reserved.
Втора версия (25-Aug-2014)
• Надграждане на инициализацията от /init към /sbin/init (SysV init).
• Четири конзоли с възможност за превключване между тях.
• DNS функционалността все още не работи.
• Компресираният сорс код е 3.7KB.
22 | © 2016 Software AG. All rights reserved.
Трета версия (07-Feb-2015)
• Ъпгрейд на Kernel и BusyBox без други съществени промени.
• DNS функционалността все още не работи.
• Компресираният сорс код все още е 3.7KB.
23 | © 2016 Software AG. All rights reserved.
Четвърта версия (14-Sep-2015)
• Оптимизации за скорост на build процеса.
• MLL получава IP адрес през DHCP.
• DNS функционалността все още не работи.
• Компресираният сорс код е 10KB:– експериментални проекти за решаване на проблема с неработещия DNS.
24 | © 2016 Software AG. All rights reserved.
Пета версия (03-Apr-2016)
• Цялостна ревизия на архитектурата и build процеса:– GNU C Library (glibc)– динамично генериране на kernel headers– компилиране на BusyBox с dynamic linking към glibc– цялостен ъпдейт на initramfs
• Като следствие DNS функционалността работи.
• Компресираният сорс код е 17KB.
25 | © 2016 Software AG. All rights reserved.
Шеста версия (current development) – 1 от 3
• Syslinux като download dependency.• Подобрен boot процес:
– избор на графичен режим.– изход към rescue shell.
• Overlay & persistence support.• Допълнителен софтуер:
– текстов браузър (Links)– SSH server / client (Dropbear SSH)– Oracle JDK– Apache Felix OSGi Framework– GNU C Library (пълна версия)
26 | © 2016 Software AG. All rights reserved.
Шеста версия (current development) – 2 от 3
• Initramfs в отделна директорийна структура.• Предварително конфигуриране на kernel и BusyBox.• Подобрен shutdown процес.• Допълнителни tool скриптове:
– за генериране на виртуален твърд диск.– за управление на QEMU стартирането.– Makefile за по-мързеливи програмисти.
• GCC флагове за съвместимост с host OS.• Оптимизация на размера на ISO image файла.
– преди ~12MB / сега ~7MB
27 | © 2016 Software AG. All rights reserved.
Шеста версия (current development) – 3 от 3
• Използване на предварително свалени сорсове.• Избор дали (и къде) да се записват src файловете.• Подобрени директорийни структури.• Включване/изключване на boot логото.• ANSI escape sequences (цветен текст).• PC емулатор в браузъра.
• Компресираният сорс код е 22KB.
• Всичко това подлежи на промяна.
© 2016 Software AG. All rights reserved.
Q & A
© 2016 Software AG. All rights reserved.
Благодаря!