关于系统启动的1个问题
1)根据Linux的Makefile,当使用命令make bzImage
时,调用的是arch/i386/boot/Makefile:
zImage: $(CONFIGURE) bootsect setup compressed/vmlinux tools/build
$(OBJCOPY) compressed/vmlinux compressed/vmlinux.out
tools/build bootsect setup compressed/vmlinux.out $(ROOT_DEV) > zImage
bzImage: $(CONFIGURE) bbootsect bsetup compressed/bvmlinux tools/build
$(OBJCOPY) compressed/bvmlinux compressed/bvmlinux.out
tools/build -b bbootsect bsetup compressed/bvmlinux.out $(ROOT_DEV) > bzImage
也就是说,生成的image是bootsect+setup+vmlinux的拼接而成。
那么,问题是:Linux安装时,bootsect写在该逻辑分区的引导扇区内,setup和vmlinux在哪里呢?Lilo指定的image是一个文件系统中的文件啊?请各位指点。 Lilo指定的image是一个文件系统中的文件啊?
我想Lilo或是别的什么引导工具的思路(FreeBSD的Boot manager)是一样。Lilo本身是识别ext2和ext3文件系统的。所谓识别是它知道怎么通过文件系统的inode bitmap,block bitmap布局,通过目录inode search image文件,再根据inode号找到其blocks。
FreeBSD是这样在没有VFS的情况下,找UFS的文件的。 这是FreeBSD5.1的boot2的Makefile关于文件系统标志的定义。
boot2是属于自举的初始阶段,在执行了mbr后执行的code。
# Decide Level of UFS support.UFS1_AND_UFS2 doesn't fit.
# BOOT2_UFS?= UFS2_ONLY
BOOT2_UFS?= UFS1_AND_UFS2
# BOOT2_UFS?= UFS1_ONLY
希望能对自举阶段,如何通过文件名找到文件的原理做个说明。至于怎么找data/inode block,则是通过磁盘中断实现的。 grub also know some fs format. so grub have stage 1.5
info grub have some info.
页:
[1]