Taketoshi Sano
, ([email protected]
)
$B5/F0;~$K 1st boot loader $B$O(B 2nd boot loader $B$r%a%b%j!<$K%m!<%I$9$k$N$,LrL\$G$9!#(B
2nd boot loader $B$O%^%C%W%U%!%$%k$r%m!<%I$7$F$=$N>pJs$r2r@O$7!"(B
$B$=$N7k2L$K=>$C$F%+!<%M%k%3!<%I$r%m!<%I$7$^$9!#(B
$B$^$?I,MW$J>l9g$K$O(B initrd $B$G;HMQ$9$k%k!<%H%$%a!<%8$N%m!<%I$b(B
2nd boot loader $B$,
LILO $B$K$h$k%V!<%H$G$O!":G=i$K%V!<%H%;%/%?!<$N@hF,(B 446 bytes $B$K5-O?$5$l$?(B
1st boot loader $B$,(B BIOS $B$^$?$O(B MBR $B$KCV$+$l$?B>$N%V!<%H%m!<%@!<$K$h$C$F(B
$B%m!<%I$5$l$^$9!#%m!<%[email protected]$7!"(B1st boot loader $B$,
$B$H(B
$B$NItJ,$G$9!#%3%a%s%H$rFI$a$P!"2?$r$7$F$$$k$+A[A|$,$D$-$^$9$M!#(B
2nd boot loader $B$, $B$3$N@hF,ItJ,$N9=B$$O(B LILO $B$N%=!<%9%3!<%I$K$"$k(B common.h $BCf$G(B
$B0J2<$N$h$&$K5,Dj$5$l$F$$$^$9!#(B
($B$3$NItJ,$K4X$7$F$O(B ver.21, 22 $B$H$bF1$85-=R$G$9!#(B
$B$?$@$7!"8e=R$7$^$9$,(B SECTOR_ADDR $B$N9=@.$,(B 21 $B$H(B 22 $B$G$O0c$$$^$9!#(B)
$B$3$N%^%C%W%U%!%$%k@hF,ItJ,$N%m!<%I$,40N;$9$k$H(B "O" $B$H$$$&J8;z$r(B
$B%3%s%=!<%k$KI=<($7!";XDj$5$l$?BT$A;~4V$N$"$$$@!"%-! $B$3$l$i$N%G%#%9%/$^$?$O%U%m%C%T!<$+$i%+!<%M%k$d(B initrd $B%U%!%$%k$r%a%b%j!<$K(B
$B%m!<%I$9$k:n6H$O!"$9$Y$F%;%/%?!<%"%I%l%9$r;XDj$7$F(B BIOS $B$K
$B$H$-$I$-4*0c$$$5$l$kJ}$,$$$^$9$,!"(B ($BCm(B: $B0JA0$O$3$3$G(B "option linear" $B$r;XDj$7$F$b(B LILO $B$N(B
$B%^%C%W%U%!%$%k$K%j%K%"%"%I%l%9$O3JG<$5$l$J$$!"$H=q$$$F$$$?$N$G$9$,(B
ver 21 $B$H(B 22 $B$N%3!<%I$r2~$a$FD/$a$F$_$?$H$3$m!"(B ver 21 $B$G$O(B 3bytes
(=24bits) $B$NNN0h$K%j%K%"%;%/%?!<%"%I%l%9$r3JG<$7$F$$$?$3$H$,(B
$B$o$+$j$^$7$?!#$^$?(B ver 22 $B$G$O(B "option edd" $B$,?7@_$5$l(B
$B$3$l$rMxMQ$9$k$H(B 4bytes (=32bits) $B$NNN0h$K(B 32bit $B$N%j%K%"%;%/%?!<(B
$B%"%I%l%9$r3JG<$7!"$+$D5/F0;~$K$O(B Extneded BIOS Call $B$rMxMQ$9$k!"$H(B
$B$$$&F0:n$K$J$k$h$&$G$9!#(B)
$B$3$N%*%W%7%g%s$O!"%^%6!<%\!<%I$N(B BIOS $B$,G'<1$9$k%G%#%9%/$N%8%*%a%H%j$H(B
Linux $B%+!<%M%k$NG'<1$9$k%8%*%a%H%j$,8_$$$K0[$J$k>l9g!"(BLILO $B$N;H$&(B
$B%^%C%W%U%!%$%k$K$O%j%K%"%;%/%?!<%"%I%l%9$rJ]B8$7$F$*$$$F!"5/F0;~$K(B
$B!V(BBIOS $B$,G'<1$9$k%G%#%9%/$N%8%*%a%H%j!W$r4p=`$H$7$?(B CHS $B%;%/%?!<%"%I%l%9(B
$B$K49;;$7!"$3$N%"%I%l%9$r(B BIOS $B$KEO$7$F%G%#%9%/$+$iI,MW$J%;%/%?!<$r(B
$B%m!<%I$9$k$H$$$&F0:n$r;XDj$9$k$b$N$G$9!#(B
$B$3$N%*%W%7%g%s$r;XDj$7$F$b!"(BLILO $B$,!V(B1023 $B%7%j%s%@!W$rD6$($kNN0h$K(B
$B%"%/%;%9$9$k$3$H$OIT2DG=$G$9$N$G!"8fCm0U2<$5$$!#(B
$B$3$N%*%W%7%g%s$O(B LILO 22 $B$G?7@_$5$l$?$b$N$N$h$&$G$9!#(BCHANGES $B$K(B
$B$h$l$P(B Enhanced Disk Drive Support $B$,M-8z$J(B Extended BIOS $B$N(B
$B$?$a$N$b$N!"$H$N$3$H!#(B
$B%^%6!<%\!<%I$b%G%#%9%/%I%i%$%V$b:G6a$N$b$N$G!"$I$&$7$F$b(B 1023
$B%7%j%s%@$NJI$rD6$($F5/F0$5$;$?$$>l9g$K$O!";n$7$F$_$k$HNI$$$+$b!#(B
$B$A$J$_$K!">\:Y$O$^$?$$$D$+DI2C$7$F=q$/$D$b$j$G$9$,(B Linux $B%+!<%M%k$N(B
$B@hF,(B 512bytes $B$O%+!<%M%k$,<+A0$G;}$C$F$$$k%V!<%H%m!<%@!<$G$"$j!"(B
"make zdisk" $B$G:n@.$7$?%V!<%H%U%m%C%T!<$+$i$N5/F0$G$O$3$l$,;H$o$l$^$9!#(B
$B$3$N<+A0$N%V!<%H%m!<%@!<$O(B i386 $B7O$N>l9g(B $B%+!<%M%k%=!<%9%D%j!<$N(B
arch/i386/boot/bootsect.S $B$K$"$j$^$9!#(B
LILO $B$d(B LOADLIN $B$+$i$N5/F0$G$O!"%+!<%M%k$N%m!<%I$,40N;$9$k$H$3$NItJ,(B
(bootsect) $B$rHt$P$7$F$B$3$l$i$N $BDL>o(B $B$b$7(B Image= $B$G;XDj$7$?%U%!%$%k$,%^%&%s%H$5$l$F$$$J$$%U%!%$%k%7%9%F%`(B
$B>e$K$"$k$H!"(B $B$J$*!"5/F0;~$K;HMQ$9$k(B 2nd boot loader $B$N%;%/%?!<%"%I%l%9$r(B
1st boot loader $B$N%3!<%ICf$K=q$-9~$`$N$b(B
Linux $BMQ$N%V!<%H%m!<%@!<$H$7$F!"$3$N(B $BFbMF$K$D$$$F$O$G$-$k8B$j@53N$r4|$7$?$D$b$j$G$9$,!"$^$@$^$@4V0c$$$d(B
$B8m2r$7$F$$$k8D=j$J$I$"$k$+$b$7$l$^$;$s!#$3$NJ8=q$KBP$9$k8f0U8+!"(B
$B8f46A[!"4V0c$$$N;XE&$J$I$"$j$^$7$?$i!"Cx
$B8D?ME*$J9%$_$G$9$,!"(B $B$3$NCf$G$bFC$K8D?ME*$J$*A&$a$O(B
extIPL
$B$G$9!#:G6a!"%P!<%8%g%s%"%C%W$7$F3HD%NN0hFb$NO@M}NN0h$+$i$b5/F02DG=(B
$B$K$J$j$^$7$?!#$^$?%=!<%98x3+$G$"$j!"$+$D(B Linux $B>e$G(B make $B$G$-$k(B
(gcc + nasm) $BE@$b8+F($;$J$$%]%$%s%H$G$9!#(B
"lilo"
$B%3%^%s%I$N1.1 1st boot loader
go: cli ! no interrupts
mov ds,ax ! AX is already set
mov es,ax ! (ES may be wrong when restarting)
mov sp,#STACK ! set the stack
mov ax,#STACKSEG
mov ss,ax
sti ! now it is safe
mov al,#0x0d ! gimme a CR ...
call display
mov al,#0x0a ! ... an LF ...
call display
mov al,#0x4c ! ... an 'L' ...
call display
done: mov al,#0x49 ! display an 'I'
call display
jmpi 0,SECONDSEG ! start the second stage loader
1.2 2nd boot loader
typedef struct {
char name[MAX_IMAGE_NAME+1];
char password[MAX_PW+1];
unsigned short rd_size[2]; /* RAM disk size in bytes, 0 if none */
SECTOR_ADDR initrd,start;
unsigned short start_page; /* page at which the kernel is loaded high, 0
if loading low */
unsigned short flags,vga_mode;
} IMAGE_DESCR;
1.3 Option linear
lilo.conf
$B$N%Q%i%a!<%?$K(B
"Option linear"
$B$rDI2C$7$F$b!"(BLILO $B$N%V!<%H%m!<%@!<$,(B
$B%G%#%9%/$+$i%U%!%$%k$r%m!<%I$9$k;~$K(B INT13 AH=4? $B$J(B Extended BIOS
$B%3!<%k$rMxMQ$9$k$o$1$G$O$"$j$^$;$s!#(B
1.4 (New in ver 22) Option edd
1.5 $B$=$NB>(B
2. /sbin/lilo $B%3%^%s%I$r
"lilo"
$B%3%^%s%I$OJLL>(B map creator ($B%^%C%W:n@.%D!<%k(B) $B$H(B
$B8F$P$l$F$*$j!"$=$N"lilo"
$B%3%^%s%I$O(B lilo.conf $B$r2rFI$7$F!"(B
$B;HMQ$9$k%+!<%M%k$4$H$K;XDj$5$l$?(B Image $B%U%!%$%k(B ($B$*$h$S!"$b$7$"$l$P(B
initrd $B%U%!%$%k(B) $B$KBP$9$k(B CHS $B%;%/%?!<%"%I%l%9$r"lilo"
$B%3%^%s%I$G%U%!%$%k$+$i%;%/%?!<%"%I%l%9$r(B
$BD4$Y$kItJ,$O(B geometry.c $B$N(B geo_find() $B$K$"$j$^$9!#(B
"lilo"
$B%3%^%s%I$K(B -v $B%*%W%7%g%s$rJ#?t=E$M$F5/F0$9$k$H!"(B
$B%^%C%W:n@.$K;HMQ$5$l$?%;%/%?!<%"%I%l%9$r4Q;!$9$k$3$H$,$G$-$^$9!#(B
"lilo"
$B%3%^%s%I$O$=$N%U%!%$%k$KBP$9$k(B
$B%;%/%?!<%"%I%l%9$rD4$Y$k$3$H$,$G$-$:$K%(%i!<$r=P$7$^$9!#(B
"lilo"
$B%3%^%s%I$N;E;v$G$9!#(B
3. $BJdB-(B
3.1 $B$3$NJ8=q$K$D$$$F(B
"lilo"
$B$r(B
$B;H$&>l9g$,B?$$$N$G$9$,!"%^%K%e%"%k$G%(%i!<%a%C%;!<%8$N0UL#$r3NG'$9$k(B
$B:]$J$I!"F0:n$rM}2r$7$F$*$/$H$-$C$HLr$KN)$D$@$m$&$H;W$C$F$3$NJ8=q$r(B
$B:n@.$7$^$7$?!#(B
3.2 MBR $BMQ%V!<%H%;%l%/%?$K$D$$$F(B
"lilo"
$B$N%$%s%9%H!<%k@h$O(B
MBR (Master Boot Record, $B%O!<%I%G%#%9%/@hF,$N%V!<%H%;%/%?(B) $B$h$j$b(B
Linux $B%7%9%F%`$N%k!<%H%Q!<%F%#%7%g%s$N$[$&$,E,$7$F$$$k$H;W$$$^$9!#(B
$B%O!<%I%G%#%9%/$N(B MBR $B$K$O$h$j0lHLE*$J%V!<%H%;%l%/%?!"$?$H$($P(B
os-bs, bteasy, extIPL, btsel
$B$J$I$r%$%s%9%H!<%k$7$?$[$&$,(B
$B%H%i%V%k$,5/$-$?;~$NBP1~$J$I$r9MN8$9$k$H$h$j0B?4$G$-$^$9!#(B
sgml21html conversion date: Wed Feb 23 10:56:14 JST 2000