minimal linux live

29
Minimal Linux Live Иван Давидов Senior software engineer Software AG d [email protected] © 2016 Software AG. All rights reserved.

Upload: ivan-davidov

Post on 12-Jan-2017

223 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Minimal linux live

© 2016 Software AG. All rights reserved.

Minimal Linux LiveИван ДавидовSenior software engineerSoftware AG

[email protected]

Page 2: Minimal linux live

2 | © 2016 Software AG. All rights reserved.

Програма

Подходи при сглобяване на Linux базирани операционни системи

Minimal Linux Live в сравнение с други подобни проекти

Архитектура на Minimal Linux Live

История и еволюция на Minimal Linux Live

Q & A

Page 3: Minimal linux live

3 | © 2016 Software AG. All rights reserved.

Програма

Подходи при сглобяване на Linux базирани операционни системи

Minimal Linux Live в сравнение с други подобни проекти

Архитектура на Minimal Linux Live

История и еволюция на Minimal Linux Live

Q & A

Page 4: Minimal linux live

4 | © 2016 Software AG. All rights reserved.

Програма

Подходи при сглобяване на Linux базирани операционни системи

Minimal Linux Live в сравнение с други подобни проекти

Архитектура на Minimal Linux Live

История и еволюция на Minimal Linux Live

Q & A

Page 5: Minimal linux live

5 | © 2016 Software AG. All rights reserved.

Програма

Подходи при сглобяване на Linux базирани операционни системи

Minimal Linux Live в сравнение с други подобни проекти

Архитектура на Minimal Linux Live

История и еволюция на Minimal Linux Live

Q & A

Page 6: Minimal linux live

6 | © 2016 Software AG. All rights reserved.

Програма

Подходи при сглобяване на Linux базирани операционни системи

Minimal Linux Live в сравнение с други подобни проекти

Архитектура на Minimal Linux Live

История и еволюция на Minimal Linux Live

Q & A

Page 7: Minimal linux live

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

Page 8: Minimal linux live

8 | © 2016 Software AG. All rights reserved.

Как се сглобява Linux базирана операционна система

Необходимо е да познаваме архитектурата на базовата операционна система.

С по-малко усилия можем да постигнем значителни резултати:– смяна на името, логото и wallpaper-ите придава уникален вид.

Не винаги е лесно да променяме или добавяме елементи (features):– remastering техниките дават възможност за “препакетиране” на базовата OS.– за почти всичко останало е необходимо да приложим “from scratch” техники.

Remaster / Remix

Page 9: Minimal linux live

© 2016 Software AG. All rights reserved.

Проекти от тип “From scratch”

Page 10: Minimal linux live

10 | © 2016 Software AG. All rights reserved.

Linux From Scratch

http://linuxfromscratch.org

• Онлайн книга, която описва как да сглобим Linux базирана операционна система от сорсове, директно върху дял на твърдия диск.

• Предимства:– много подробни указания за работа.

• Недостатъци:– твърде много указания за работа.

Page 11: Minimal linux live

11 | © 2016 Software AG. All rights reserved.

Buildroot

http://buildroot.org

• Билд система, базирана на Makefile, която генерира bootable ISO image.

• Предимства:– много гъвкава система за създаване на embedded Linux OS.– лесна за използване - необходими са само две поредни shell команди.

• Недостатъци:– build процесът е труден за разбиране и модифициране.– начинаещите няма да научат връзката между отделните компоненти.

Page 12: Minimal linux live

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 файлове съдържат подробни технически коментари.

Page 13: Minimal linux live

13 | © 2016 Software AG. All rights reserved.

Minimal Linux Live

• MLL генерира bootable ISO image.

• Документацията на MLL може да се прочете за по-малко от един час.

• MLL съдържа само най-основните Linux OS компоненти.

vs. Linux From Scratch

Page 14: Minimal linux live

14 | © 2016 Software AG. All rights reserved.

• MLL е базиран на shell script файлове.

• MLL може лесно да се модифицира (от програмисти).

• Документацията на MLL е създадена от програмисти за програмисти.

• Download размерът на Buildroot e ~5MB, докато размерът на MLL e ~20KB.

Minimal Linux Live vs. Buildroot

Page 15: Minimal linux live

15 | © 2016 Software AG. All rights reserved.

Колко усилия са необходими, за да сглобимедна проста операционна система?

Page 16: Minimal linux live

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 базирана операционна система.

Page 17: Minimal linux live

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

Page 18: Minimal linux live

© 2016 Software AG. All rights reserved.

Демонстрация

Page 19: Minimal linux live

© 2016 Software AG. All rights reserved.

Еволюцията на Minimal Linux Live

Page 20: 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.

Page 21: Minimal linux live

21 | © 2016 Software AG. All rights reserved.

Втора версия (25-Aug-2014)

• Надграждане на инициализацията от /init към /sbin/init (SysV init).

• Четири конзоли с възможност за превключване между тях.

• DNS функционалността все още не работи.

• Компресираният сорс код е 3.7KB.

Page 22: Minimal linux live

22 | © 2016 Software AG. All rights reserved.

Трета версия (07-Feb-2015)

• Ъпгрейд на Kernel и BusyBox без други съществени промени.

• DNS функционалността все още не работи.

• Компресираният сорс код все още е 3.7KB.

Page 23: Minimal linux live

23 | © 2016 Software AG. All rights reserved.

Четвърта версия (14-Sep-2015)

• Оптимизации за скорост на build процеса.

• MLL получава IP адрес през DHCP.

• DNS функционалността все още не работи.

• Компресираният сорс код е 10KB:– експериментални проекти за решаване на проблема с неработещия DNS.

Page 24: Minimal linux live

24 | © 2016 Software AG. All rights reserved.

Пета версия (03-Apr-2016)

• Цялостна ревизия на архитектурата и build процеса:– GNU C Library (glibc)– динамично генериране на kernel headers– компилиране на BusyBox с dynamic linking към glibc– цялостен ъпдейт на initramfs

• Като следствие DNS функционалността работи.

• Компресираният сорс код е 17KB.

Page 25: Minimal linux live

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 (пълна версия)

Page 26: Minimal linux live

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

Page 27: Minimal linux live

27 | © 2016 Software AG. All rights reserved.

Шеста версия (current development) – 3 от 3

• Използване на предварително свалени сорсове.• Избор дали (и къде) да се записват src файловете.• Подобрени директорийни структури.• Включване/изключване на boot логото.• ANSI escape sequences (цветен текст).• PC емулатор в браузъра.

• Компресираният сорс код е 22KB.

• Всичко това подлежи на промяна.

Page 28: Minimal linux live

© 2016 Software AG. All rights reserved.

Q & A

Page 29: Minimal linux live

© 2016 Software AG. All rights reserved.

Благодаря!