Ï ÖÒÖ ÚÓÐÙØÓÒ Ì ÄÒÙÜ +ÒÒ ÁÒØÐ ÄÁÄǸ ÞÁÑ ÇÚÖÚÛ ÐÓÔÔ Ð Ö Ö ÐÑ× ¿ Ý ÓØ× Ó Ê%Å ÊÍ#¸ ÓÓØ ÓÓØ Ø '×( ÄÒÙÜ × ØÓ Ô ÓÓØ ÖÓ Ó ×× ÖÓ Ø º ´ÒØÖ'µ Ö¸ ¬Ð ÓÓØÒ Ó ÇÚÖÚÛ Ð ËÓ ×Ý×ØÑ ÄÒÙÜ Ì À×ØÓ ÖÝ Ò Ø ÙØÙÖ ½ Ï ÖÒÖ Ð Ö Ö ÐÑ× Hardware/Firmware Load & run boot loader Initialize hardware ÓÓØ Ó Mount it Find root file system Ready driver(s) Boot loader ÓÓØÒ Ó ÄÒÙÜ Pass parameters Load additional data Load kernel Mount root file system Ô Ì Ó ×× ÖÓ À×ØÓ ÖÝ Ò Ø User space ÙØÙÖ etc. Run init ¾ Ï ÖÒÖ Ð Ö Ö ÐÑ× 0x90000 0x7c00 1MB End 0 ÄÓÒ Boot sector Started by BIOS ÓÓØÒ Ó ÄÒÙÜ e.g. LILO on MBR 2nd stage Ì ÞÁÑ À×ØÓ ÖÝ Ò Ø Parameters ÙØÙÖ bzImage Setup ¿ Ï ÖÒÖ Ð Ö Ö ÐÑ× 0x90000 1MB End 4kB 8kB 0 ËØ Kernel text+data (gzip) Kernel extractor ÖØÒ ÓÓØÒ Ó Setup ÄÒÙÜ Low Ì ÞÁÑ High À×ØÓ ÖÝ Ò Mover Ø ÙØÙÖ Kernel Ï ÖÒÖ Ð Ö Ö ÐÑ× Linux system architecture advances ÐÐÒ× New hard− and firmware ÓÓØÒ Ó ÄÒÙÜ process Boot Ì À×ØÓ configurations More complex ÖÝ Ò Ø ÙØÙÖ Ï ÖÒÖ Ð ËÓ ÐÓÔÔ Æ'× ÃÖÒÐ ÊÕÙÖ× ÓÓØ× #Ó ÃÖÒÐ ÇÒ ÓØ× #Ó Ð Ö Ö ÐÑ× Ý ÚÓÐÙØÓÒ ( ÓÓØ ÖÒÐ ¿Ö' .ÖÓÑ .ÖÓÑ Ô Ô ÅÒÜ ÖÑØÖ ÖÑØÖ Ô × ØÓ ÔÖ Á1 ÓÔÔ ÖØ Ý ¬Ð ÓÔÔ Ö ÓÓØ '×(× Ý Ò× Ò× ÒÒÒ× '×(× ×Ý×ØÑ ÓÓØÒ Ó Ý ×Ð ØÓ ÄÒÙÜ Ú Ú Ö Ì ÖÚ ÖÚ Ì À×ØÓ ÖÝ Ò ÙÑÐ Ø ÙØÙÖ Ï ÖÒÖ Ð Ö Ö ÐÑ× Ð Journaling "modern" Unix Fully featured Limited Unix ×Ý×ØÑ ÓÓØÒ Ó ÄÒÙÜ xf i ii Xiafs Big Minix extfs x3XSJFS XFS ext3 ext2 Ì Reiser À×ØÓ ×ØÓ Minix ÖÝ ? Ò Ø ÙØÙÖ ÖÝ
Ï ÖÒÖ ËÓÐÙØÓÒ4 ÈÖÓÐÑ4 ËÓÐÙØÓÒ4 Ð ËÓ Ð Ö Ö ÐÑ× ÈÖÓÐÑ Ò'' ÖÕÙÖ' ÐØ Ø ØÖ ÜØÖ Ø ÓÓØ Ö ( Ô ÖÒÐ ÅÒÜ ×Ó ÖØØÓÒ ÓÓØÒ Ó ÐÓ'Ö ÑÒÝ 'Ó Ë ÆÓÒ¹ÅÒÜ ÛØ Ø ÄÒÙÜ ØÓ Ó. ÑÔÔÒ ÐÓ' ØÑ ÅÒÜ Ì À×ØÓ .ÖÓÑ Ë ÖÝ Ò ÓØÖ Ø Ë ÙØÙÖ ÓÓØ ÖÓ ! Ï ÆÓ ÖÒÖ Û ÁÒ ÐÙ'× ÓØ #Ó ÓØ× #Ó ÓØ× #Ó Ð× ÑÒØÒ' Ð Ö Ö ÐÑ× ÓÑÑÒ' Ö .ÖÓÑ .ÖÓÑ ÓÓØ ÑÔ '7 6ÑÔÔ ÓÔÔ ´ÐÑÓ×ص ×Ð ØÓ Ý ÐÒ Ý ÂÓÒ Ó Ö Ö ÓÓØÒ Ó ÄÁÄÇ ÒÝ ÖØÖ +Ó«ÑÒº ÄÒÙÜ ÖÝ Ö' ¬Ð '×( Ì ×Ý×ØÑ ³&¾ (ÒÓ À×ØÓ ÛÒ ÖÝ Ò ØÓ Ø #ÁÇË ÙØÙÖ " Ï Ð ÖÒÖ Ð Ö Ö ÐÑ× ×Ý×ØÑ Disk Kernel Meta data ext2 ÓÓØÒ Ó Kernel image Û ÄÒÙÜ Kernel image data Ì Ö¸ À×ØÓ loader Boot ÖÝ ºº Ò ext2(ro) Ø ÙØÙÖ *ÊÍ ½¼ Ï ÖÒÖ Ð Ö Ö ÐÑ× Disk Kernel Ð Meta data Kernel image data ×Ý×ØÑ ext2 ÓÓØÒ Ó Map Kernel image ÄÒÙÜ Ì À×ØÓ Meta data (map file) loader Boot ÙÒ ÖÝ Ò read list Ø Û ÙØÙÖ Ö ½½ Ï ÖÒÖ %ÙØÓÒÓÑÝ +ÓÒ××ØÒ Ý ÅÓ×Ø ´ºº +ÓÒ¬ÙÖØÓÒ 'ØÓ Ð È ( ´ºº À Ð Ö Ö ÐÑ× Ö'Û ÓÔÐ Ô ×Ý×ØÑ ÒÝ Ö¸ .Ó Ê%Å Ö Ö Ï ÓÑÑÒ' ( ÐÑØØÓÒ× ÖÒÐ ( 'ÓÒ³Ø '×(¸ ÏØ³× ÒÚØÓÒ ÖÓ ¬Ð Û×Ö¸ Æ˵ ÒÓØ ÓÓØÒ Ó ÐÒµ = ÄÒÙÜ ØØÖ Ì À×ØÓ ÖÝ Ò Ø . ÙØÙÖ ½¾ Ï ÖÒÖ SysLinux Netboot nuni LOADLIN LILO GRUB Floppy boot Etherboot Ð Ö Ö ÐÑ× ... /Ò ÓÓØÒ Ó i386,ia64 (Ultra)SPARC SuperH S390 PPC MIPS(64) m68k ARM Alpha ... ÄÒÙÜ 0ØÙÖ× Ì À×ØÓ ÖÝ Ò kernel Linux Ø ÙØÙÖ interface Narrow, stable space User ½¿ Ï ÖÒÖ ËÓÐÙØÓÒ4 ÈÖÓÐÑ4 ËÓÐÙØÓÒ4 À 1ÖÚÖ À Ö'Û Ð Ö Ö ÐÑ× ÈÖÓÐÑ 6ÒÖ Ö'Û Ö Ñ Ö ÓÓØ ÐÓ' ÙØÓ¹'Ø ØÓÒ ÛØ Ý ? ( Ñ×¹'Ø Ø ÖÒÐ7 Ñ 'ÖÚÖ ÐÓ'Ö . Ý 'ÖÚÖ Ó ( ÐÓ × Ó'ÙÐ× ÑÓ ÓÓØÒ Ó ÐÓ'× ÒÓØ ÙÔ .Ó × Ö 1ÖÚÖ Ö'Û ÛÒ ÔÓ××Ð ÄÒÙÜ ÙÒÖÐÐ4 ÓÓØ ÖÓ Ê%Å ÛÒ Ö Ì ¬Ð Ô '×( ÖÓÒ ? À×ØÓ Ò'' ×Ý×ØÑ × × ÖÝ @¸ Ò .Ó ÔÓ ØÑÔ ÓÒ Ø× Ò' Ö Ò'× Ø Ö× Ö'Û Ö ÙØÙÖ ÖÝ ØÓ Ö ÓÓØ ÖÓ @ ÐÓ'' ½ = Ï 1×Ò' ÁÒØÐ ÖÒÖ boot loader Loaded by Ð Ö Ö ÐÑ× Ò ÓÓ ÖØÓÒ ÓÔ Ó Ê/Å RAM disk Kernel initrd Data ÓÓØÒ Ó ÛØ ×3 Copied by RAM disk driver ÀÒ× ÄÒÙÜ May be made available as (may de−compress) Run Ì ÄÖÑÒ ´½º¿º7¿ /linuxrc À×ØÓ ÖÝ Ò Ø ÙØÙÖ Mount real root /dev/initrd ¿»&9µ ½ Ï ÖÒÖ Ò +Ò # (ÖÓÙÒ' ÇÒÐÝ ÌØÐÝ Ð Ö Ö ÐÑ× ÓÒÐÝ Û Ó ÒØÖØ' Ö(× .Ó new_root Ô Ù×' root_dev Ó ××× ÖÓ Ö ÖÓÓØ ÖÙÐ ÓÒ ´Ù×× ÓÓØÒ Ó Ö Ñ Ð ( ÐÓ ´½º¿º7¿¸ ÐÓØ× of process 1 Root and cwd change_root Ý ÄÒÙÜ ( Ô 'Ú × Ó. 6Ñ 7µ / Ì ÓÐ' umount À×ØÓ ÓÓØ ÖÓ × Ð ´×Ô ÖÝ Ò Ù×Ý Ø Å /initrd ×4 ÙØÙÖ Æ˵ Ö ³&9µ ½ Ï ÖÒÖ Î +Ò Ï Ô ÚÓØ ÖÝ Ó Ð Ö Ö ÐÑ× Ö(× ÙÐÝ ÛØ Ø' ÖÔ ×ÓÐÙØÓÒ ÒÝ new_root ÖÓÓØ ¬Ð .Ó ×Ý×ØÑ Ö ÓÓØÒ Ó 'ÑÓÒ× current process) (usually cwd of the on umount mount ´¾º¿º;½¸ all processes Root and cwd of pivot_root ÄÒÙÜ / Ì À×ØÓ ÖÝ Ò old_root ÂÒ Ø ÙØÙÖ ³¼¼µ ½ Ï ÖÒÖ ÏÐÐ +ÐÒ %× 1×Ò' Ð Ö Ö ÐÑ× ÒÖ Ô ÖÓÐÝ ÍÒÓÒ ×ÓÐÙØÓÒ Ý × ÎË Û ÔÚÓØ .Ó Ó new_root Ö( Ö mount ÙÖÙ 'ÑÓÒ× ÛØ ÖÓÓØ ÑÓÙÒØ× ÓÓØÒ Ó %ÐÜÒ'Ö Ü×ØÒ all processes Root and cwd of ÄÒÙÜ remount / Ì ×Ý×ØÑ ÎÖÓ À×ØÓ ÖÝ old_root ´0ÙØÙÖµ umount ÐÐ× Ò Ø Ò' ÙØÙÖ ÓÓÐ× ØÓ ½! Ï ÈÖÓÐÑ ÖÒÖ ËÓÐÙØÓÒ4 ÃÖÒÐ× ÆÛ ÆÓ (× #ÐÓ ÆÓ + ÌÌÈ Ð Ö Ö ÐÑ× BÙ×Ø ÓÑÔÐÜ 'Ö Ø Ð (×4 ÐÓ Ö ØÖ ×ØÓ ¸ ÐÓ'Ò ÑÓÚ4 Æ˸ ÐØ Ö' ÑÔÔÒ4 'Ú Ø Ì ¬Ð Ø Ð× ÀÌÌÈ ÂÓÙÖÒÐÒ Ø ÄÒÙÜ ×Ý×ØÑ×4 ÙÒÙ×ÙÐ ´ºº ( ÜÓØ ÓÓØÒ Ó ÖÒÐ ¸ Ê%Á1 ×Ý×ØÑ ÀÌÌÈ˸ Ò ÔÐ ×4 Ø× Ê×Ö˵¸ ÄÒÙÜ 'Ó Ì Ö'Ö Ø À×ØÓ 3 ÐÓ'Ò 1Ø×¹Ó ÖÒÐ ÖÝ Ò Ø ÙØÙÖ ÖÒØ' ×ÓÙÖ ½" Ï ÖÒÖ ÄÓ'× Å 1ÖÚÖ ËÑÔÐ Ð Ö Ö ÐÑ× Ý ÖÐ ×ØÙÔ ÄÒÙÜ Ù×Ö ÓÓØ ( ÖÒÐ ÒØÖ ØÓÒ ÐÓ'Ö Ù×Ò ÒØÖ' ÐÓ'× ÓØ× Ó ÓÓØÒ Ó ´ºº ÓÓØ ÄÒÙÜ ÓÓØ ( ÖÒÐ Ì ×Ðе ÄÒÙÜ À×ØÓ ÖÝ Ò Ø ÙØÙÖ ´½µ ¾¼ Ï K ÖÒÖ ernel memory Run mover parameters Set up and initrd Load kernel Disk Ð Ö Ö ÐÑ× ÄÒÙÜ ÓØ× Ó ÓÓØÒ Ó Mover ÄÒÙÜ Move pages Ì ÄÒÙÜ Param À×ØÓ initrd ÖÝ Ò Ø Jump to new kernel Enter right CPU and ÙØÙÖ MMU mode ´¾µ ¾½ Ï ÖÒÖ ÅÓ Ì Æ Æ ËÓÐÙØÓÒ4 Æ Æ ÈÖÓÐÑ4 +Ö× ÄÒÙÜ#ÁÇË ' À¹×Ô ÌÛ ÓØÑ Ó ÄÇ#ÇË Ð Ö Ö ÐÑ× Ö Ê×Ø ÃÔ +ÒÒÓØ #ÁÇË ØÑ Ó .ÙÒ ÄÒÙÜ ÃÖÒÐ 1ÙÑÔ ÛØ ×ÑÐÐ × Ð 'ÖÚÖ× ´ÊÓÒ ´Ï Ù× 4 ÖÔ ÓØ Ó Ö Ö× ÖÒÖ ÅÓÒØ ÓÓØÒ4 ×Ý×ØÑ ÙÖÖÒØ ÑÑÓ ÅÒÒ µ Ò' ÐÖÖµ %ÐÑ× ÓØ× Ó ´ º ÓÓØÒ Ó ´Ö( ÛÖØ ÖÝ Ò×' 'ÖÚÖ× ÓÒ ½D ÄÒÙÜ ÀÒ'Ö(×µ 'ÙÑÔ ÓØ Ó Ö × µ ÙÖÖÒØ ´Ó Ì Ö ÓÒ #ÁÇ˵ ÄÒÙÜ À×ØÓ Ö× ×Ý×ØÑ ÖÝ Ò Ø ÙØÙÖ ´¿µ ¾¾ Ï Hardware startup ÖÒÖ Legacy OS Ð Ö Ö ÐÑ× Firmware (BIOS) Linux loader Boot selector on ntd/iur Mount root file system /linuxrc Mount initrd Ì Linux−capable boot loader ÓÓØÒ Ó Linux kernel ÛÓÐ ÄÒÙÜ Ì À×ØÓ ØÖÙØ ÖÝ Ò Ø /sbin/init ÙØÙÖ System runs ¾¿ Ï ÖÒÖ #ØØÖ ÄÒÙÜ ÍÒÓÒ ÜØÒ'' È ÐÞ' ËÔ ËÑÐÐ Ê'Ù È ÖÐÝ Ð Ö Ö ÐÑ× ÖØÐ ÖÑØÖ .ÖÒ ÓØ× Ó ÓÓØ ÖÓ ÙÔÓ ×ÙÔÔ + ÓÒÚÖÒ Ô( Ð ÑÓÙÒØ 'Ø ÄÒÙÜ Ö ÖØ Ô××Ò Ó. ÐÓ'Ö× ÖÝ .Ó ÑÑÓ ÒØÖ' Ó ØÓÒ ÐÓ Ö Ó Ö Ê%Á1¸ ÓÓØ ÓÓØÒ Ó ÖÝ Ô× .Ó Ö Ù× ×ÐÐ ×ÑÔÐ Ø º Ò.Ó ÄÒÙÜ ÙØÙÖ ÖÑØÓÒ Ì ÐÓ'Ö× À×ØÓ .ÖÓÑ ÖÝ Ò ( Ø ÖÒÐ ÙØÙÖ ¾ Ï ÖÒÖ Ð¹Ó ×Ð×ºØ ÖºÞ ÓÓØÒ¹ ÓÐ×¹ ×Ð׺Ô×ºÞ ÓÓØÒ¹ ÓÐ×¹ ÓØÒÐÒÜ ÙÖÖÒØºØ ÖºÞ ÓÓØÒÐÒÙܹ ÙÖÖÒغÔ×ºÞ ÓÓØÒÐÒÙܹ È Ì× ØÔ »» ØÔºÔ Ðº »ÔÙ»ÔÓÔÐ 1Ö ØÓ ÔÖ Ô Ð Ö Ö ÐÑ× Ô Ö×ÒØØÓÒ4 # ÓØÒ 6#Ó ÖÝ4 ÄÒÙÜ4 ÓÓØÒ Ó Ì ÄÒ3× ÄÒÙÜ À×ØÓ » ÐÑ Ì ÖÝ À×ØÓ Ò' ×Ö» ÖÝ Ø Ò ÓÓØ Ø ÙØÙÖ74 Ò» ÙØÙÖ ¾