2017-07-26 63 views
0

我使用ubuntu和grub 2引导装载程序。ubuntu内核,INT 13H中断,文件系统写入

的问题是:

我想知道,如果Ubuntu的内核使用BIOS/UEFI服务,特别是INT 13H中断,或者如果内核是BIOS独立?

在这最后一种情况下,Ubuntu对待低级磁盘服务的方式是什么?那么Ubuntu是如何拦截这个调用并将其传递给操作系统的本地磁盘I/O机制,绕过用于底层磁盘读/写访问的BIOS例程?

我的理解是Linux内核通常不使用BIOS服务进行磁盘I/O,因为它在保护模式下运行。但是,我不知道是否可能存在一些边缘情况,这种情况并非如此,并且可能发生内核将执行写操作插入到插入磁盘的文件系统中的情况。

所以我想问一些关于这个话题的提示。

+1

SO不是“Ubuntu邮件列表”,但无论如何都欢迎。也许你与https://askubuntu.com/混淆? – TGrif

+0

嗨!谢谢 !我向你道歉。然而,我使用了askubuntu.com,但他们在这里提到我提出的问题。欢迎提供有关ubuntu内核开发人员可以询问的地方。提前致谢。 – vince66

+0

足够的代价,你可能会在这里找到一些内核开发者。 – TGrif

回答

0

看看/arch/x86/boot/edd.cUbuntu Zesty Zapus master branch

/* 
* Read the MBR (first sector) from a specific device. 
*/ 
static int read_mbr(u8 devno, void *buf) 
{ 
    struct biosregs ireg, oreg; 

    initregs(&ireg); 
    ireg.ax = 0x0201;  /* Legacy Read, one sector */ 
    ireg.cx = 0x0001;  /* Sector 0-0-1 */ 
    ireg.dl = devno; 
    ireg.bx = (size_t)buf; 

    intcall(0x13, &ireg, &oreg); 

    return -(oreg.eflags & X86_EFLAGS_CF); /* 0 or -1 */ 
} 

貌似int 0x13仍然在使用。

但要注意,当内核在使用BIOS中断时在实模式下运行。之后,它进入保护模式,不再访问BIOS:内核现在可以设置自己的驱动程序,从而获得更好的灵活性和性能。

BIOS是从不在内核在保护模式下执行时再次调用。相反,内核从此使用自己的驱动程序。

+0

请澄清一下: – vince66

+0

@ vince66在哪方面? – Downvoter