+ All Categories
Home > Documents > IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux...

IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux...

Date post: 30-May-2020
Category:
Upload: others
View: 7 times
Download: 0 times
Share this document with a friend
34
IPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 1 / 34 John Ogness Linutronix GmbH IPL+UBI: Flexible and Reliable with Linux as the Bootloader
Transcript
Page 1: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

1 / 34

John OgnessLinutronix GmbH

IPL+UBI: Flexible and Reliablewith Linux as the Bootloader

Page 2: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

2 / 34

Embedded Board Trends

• MMC / SD• CompactFlash• SATA• USB (OTG)• Firewire• RFID• Ethernet (wireless)

• TFT LCD• Touchscreen• Audio• Sensors

‣ temperature‣ brightness‣ proximity‣ accelerometer

Page 3: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

3 / 34

Embedded Board Trends

• MMC / SD• CompactFlash• SATA• USB (OTG)• Firewire• RFID• Ethernet (wireless)

• TFT LCD• Touchscreen• Audio• Sensors

‣ temperature‣ brightness‣ proximity‣ accelerometer

Linux DriversLinux DriversNecessaryNecessary

Page 4: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

4 / 34

Embedded Board Trends

• MMC / SD• CompactFlash• SATA• USB (OTG)• Firewire• RFID• Ethernet (wireless)

• TFT LCD• Touchscreen• Audio• Sensors

‣ temperature‣ brightness‣ proximity‣ accelerometer

... but what about... but what aboutthe bootloader?the bootloader?

Page 5: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

5 / 34

Bootloader Responsiblities

• init low-level hardware (RAM, MTD)• load/run kernel from MTD

Page 6: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

6 / 34

Bootloader Responsiblities

• init low-level hardware (RAM, MTD)• load/run kernel from MTD‣ failsafe boot environment

Page 7: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

7 / 34

Bootloader Responsiblities

• init low-level hardware (RAM, MTD)• load/run kernel from MTD

⁃ show a splash screen⁃ play startup music⁃ BIOS-like application (user interaction)⁃ load/run kernel from external device (USB / MMC / SATA / ethernet)

‣ failsafe boot environment

Page 8: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

8 / 34

Bootloader Responsiblities

• init low-level hardware (RAM, MTD)• load/run kernel from MTD

⁃ show a splash screen⁃ play startup music⁃ BIOS-like application (user interaction)⁃ load/run kernel from external device (USB / MMC / SATA / ethernet)

‣ failsafe boot environment

Do we really want toimplement all these driversagain for the bootloader?

Page 9: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

9 / 34

Yes!

Yes! Yes!

NO!

Original icons (Restroom_symbols.svg) copyright Amy Youngunder the Creative Commons Attribution-ShareAlike 3.0 License.

Page 10: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

10 / 34

Drivers in Bootloaders

Advantage• early access to hardware

Page 11: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

11 / 34

Drivers in Bootloaders

Advantage• early access to hardware

Disadvantages• less availability• less tested• less maintained• often incomplete• less support for out-of-tree drivers

Page 12: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

12 / 34

What if we use LinuxWhat if we use Linuxas the bootloader?as the bootloader?

Page 13: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

13 / 34

Linux as Bootloader

• use a minimal kernel (to reduce startup times)

• load drivers on demand as needed

• BIOS-like application runs in a Linux userspace environment

• load final kernel from wherever

• use kexec to run final kernel

Page 14: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

14 / 34

... but how does the Linux... but how does the Linuxbootloader get loaded?bootloader get loaded?

Page 15: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

15 / 34

IPL (Initial Program Load)

• also known as “X-Loader” or “Stage One Bootloader”

• less than 16KB in size

• performs minimal tasks required to start the bootloader

Page 16: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

16 / 34

Bootloader Responsiblities

• init low-level hardware (RAM, MTD)• load/run kernel from MTD

⁃ show a splash screen⁃ play startup music⁃ BIOS-like application (user interaction)⁃ load/run kernel from external device (USB / MMC / SATA / ethernet)

‣ failsafe boot environment

Page 17: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

17 / 34

Bootloader Responsiblities

• init low-level hardware (RAM, MTD)• load/run kernel from MTD

⁃ show a splash screen⁃ play startup music⁃ BIOS-like application (user interaction)⁃ load/run kernel from external device (USB / MMC / SATA / ethernet)

‣ failsafe boot environment

IPL

Page 18: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

18 / 34

Bootloader Responsiblities

• init low-level hardware (RAM, MTD)• load/run kernel from MTD

⁃ show a splash screen⁃ play startup music⁃ BIOS-like application (user interaction)⁃ load/run kernel from external device (USB / MMC / SATA / ethernet)

‣ failsafe boot environment

LinuxBootloader

Page 19: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

19 / 34

Boot Procedure

1. boot ROM loads and runs IPL

2. IPL loads its configuration from MTD

3. IPL loads and runs minimal kernel from MTD

4. BIOS-like application runs (initramfs)

5. load and run final kernel from wherever

Page 20: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

20 / 34

Boot Procedure

1. boot ROM loads and runs IPL

2. IPL loads its configuration from MTD

3. IPL loads and runs minimal kernel from MTD

4. BIOS-like application runs (initramfs)

5. load and run final kernel from wherever

Page 21: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

21 / 34

NAND (MTD)

Page 22: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

22 / 34

NAND (MTD)• data organized in addressable pages

‣ 512, 2048, or 4096 bytes per page (+ spare bytes for ECC)

• pages organized in erase blocks‣ 32, 64, or 128 pages per erase block

• individual pages may be programmed

• to reprogram a page, the entire erase block must first be erased

• limited program-erase cycles

Page 23: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

23 / 34

NAND (effective use)• wear-leveling

‣ wear down the entire MTD evenly

• bad block management‣ NAND erase blocks will go bad

• error correction code‣ bit-flips when reading NAND will occur

• data scrubbing ‣ keep data on “healthy” erase blocks

Page 24: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

24 / 34

UBI (Unsorted Block Images)• volume management system for raw flash devices

• maps logical erase blocks to physical erase blocks

• transparently implements effective MTD usage

• additional data integrity features ‣ erase block checksums ‣ erase block sequence numbers

Page 25: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

25 / 34

UBI (a few nice features)• supports multiple volumes within a single MTD partition

• supports static volumes ‣ useful for storing data blobs (e.g. kernel)

• supports dynamic volumes ‣ used for filesystems (e.g. UBIFS)

• individual volumes may be updated ‣ ... with effective MTD usage

Page 26: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

26 / 34

UBI (how it works)• UBI management “attaches” to a specified MTD partition

• UBI scans the MTD partition ‣ LEB/PEB mapping created in RAM ‣ erase block checksums and sequence

numbers used to identify valid data ‣ “global” sequence number set to the

highest valid erase block sequence number found (in RAM)

Page 27: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

27 / 34

UBI (in Linux)• device nodes are created for each UBI volume ‣ static volumes can be read ‣ dynamic volumes can be mounted

• userspace UBI tools available ‣ ubiformat ‣ ubiattach / ubidetach ‣ ubinfo ‣ ubinize / ubimkvol / ubirmvol ‣ ubiupdatevol

Page 28: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

28 / 34

Boot Procedure

1. boot ROM loads and runs IPL

2. IPL loads its configuration from MTD

3. IPL loads and runs minimal kernel from MTD

4. BIOS-like application runs (initramfs)

5. load and run final kernel from wherever

Page 29: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

29 / 34

Boot Procedure

1. boot ROM loads and runs IPL

2. IPL loads its configuration from an UBI static volume (MTD)

3. IPL loads and runs minimal kernel from an UBI static volume (MTD)

4. BIOS-like application runs (initramfs)

5. load and run final kernel from wherever

Page 30: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

30 / 34

IPL+UBI (example)• 1st MTD partition = 4 erase blocks ‣ each has a copy of the IPL

• 2nd MTD partition = 10 MB, UBI managed with (at least?) 4 static UBI volumes ‣ IPL config ‣ minimal kernel ‣ production kernel ‣ failsafe kernel

• 3rd MTD partition = “the rest” ‣ most likely also UBI managed ;-)

Page 31: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

31 / 34

IPL+UBI (example cont.)• OMAP3530 (ARM Cortex A8 @ 720 MHz)

• 64 MB NAND (0.5 KB pages, 32 PPB)

• IPL size = 12 KB ‣ includes simple UBI library

• IPL config size = 0.1 KB

• “minimal” kernel size = 940 KB ‣ compressed using LZMA ‣ includes drivers for NAND, UBI, display

‣ includes initramfs with busybox and kexec

Page 32: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

32 / 34

IPL+UBI (example cont.)Startup time until Tux visible:

• UBI scan (2nd MTD partition) = 180 ms

• load IPL config = 2 ms

• load minimal kernel = 700 ms

• kernel startup (until Tux) ≈ 3000 ms ‣ decompress kernel = 1000 ms ‣ boot until Tux visible ≈ 2000 ms

Total time to Tux ≈ 4 seconds

Page 33: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

33 / 34

Total Time to Tux

IPL+UBI882 ms

Linux Startup~3000 ms

Page 34: IPL+UBI: Flexible and Reliable with Linux as the BootloaderIPL+UBI: Flexible and Reliable with Linux as the Bootloader CELF Embedded Linux Conference Europe 2010 7 / 34 Bootloader

IPL+UBI: Flexible and Reliable with Linux as the BootloaderCELF Embedded Linux Conference Europe 2010

34 / 34

Questions / CommentsRCPT TO:<[email protected]>

Other Presentations On This Topic09:45 - The Right Approach to Minimal Boot Times

11:00 - Barebox: Booting Linux Fast and Fancy

15:20 - Flash Filesystem Benchmarks

16:10 - YAFFS Updates


Recommended