Ï ÖÒÖ ÚÓÐÙØÓÒ Ì ÄÒÙÜ +ÒÒ ÁÒØÐ ÄÁÄǸ ÞÁÑ ÇÚÖÚÛ ÐÓÔÔ Ð Ö Ö ÐÑ× ¿ Ý ÓØ× Ó  Ê%Å ÊÍ#¸ ÓÓØ ÓÓØ Ø '×( ÄÒÙÜ × ØÓ Ô ÓÓØ ÖÓ Ó ×× ÖÓ Ø º ´ÒØÖ'µ Ö¸ ¬Ð ÓÓØÒ Ó ÇÚÖÚÛ  Ð  ËÓ ×Ý×ØÑ ÄÒÙÜ Ì À×ØÓ ÖÝ Ò Ø  ÙØÙÖ ½ Ï ÖÒÖ Ð Ö Ö ÐÑ× Hardware/Firmware Load & run boot loader Initialize hardware ÓÓØ Ó Mount it Find root 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 Ì 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  Ò» ÙØÙÖ ¾