Como o kernel swapping / INT 13h interrompe o trabalho?

0

Estou procurando uma maneira de aprender e entender essa técnica. Aqui está o que eu estou falando:

  • Botas do Slax, {faz coisas, como copiar-se para a RAM} e, em seguida, transitions control to the kernel/file system it just made
  • O SYSLINUX é inicializado em um sistema FAT32 / NTFS, {does stuff} e, em seguida, boots into a kernel
  • ISOLINUX tira um CD / DVD, {faz coisas} e então boots into a kernel

Existe um nome para isso? É semelhante no GRUB ao usar o chainloading?

  • GRUB inicia, carrega o menu de seleção, faz seleção. Se for uma seleção de carregamento em cadeia, passes control to something else .

Estou procurando como posso usar um kernel para extrair um .iso (de uma partição FAT32 / NTFS) para a RAM e, em seguida, inicializá-lo como se estivesse lá na inicialização. Para mais detalhes sobre o motivo pelo qual eu quero fazer isso, consulte esta questão .

Aqui, no entanto, estou apenas pedindo detalhes sobre como um kernel "transita" para outro. Existe um nome para isso? Já ouvi falar do INT13h , que acredito ser usado no GRUB / chainloading. Esta é uma técnica para "reinicializar em um kernel diferente"? Se não, como isso é feito?

    
por Ehryk 23.02.2013 / 21:57

2 respostas

2

Suponho que seja assim: link

kexec(8) - Linux man page

Name

kexec - directly boot into a new kernel

Synopsis

/sbin/kexec [-v (--version)] [-f (--force)] [-x (--no-ifdown)] [-l (--load)] [-p (--load-panic)] [-u (--unload)] [-e (--exec)] [-t (--type)] [--mem-min=addr] [--mem-max=addr]

Description

kexec is a system call that enables you to load and boot into another kernel from the currently running kernel. kexec performs the function of the boot loader from within the kernel. The primary difference between a standard system boot and a kexec boot is that the hardware initialization normally performed by the BIOS or firmware (depending on architecture) is not performed during a kexec boot. This has the effect of reducing the time required for a reboot. Make sure you have selected CONFIG_KEXEC=y when configuring the kernel. The CONFIG_KEXEC option enables the kexec system call.

    
por 24.02.2013 / 02:07
1

Int 13 é uma interrupção - '13' em particular é um ponto de entrada na API / serviços de disco do BIOS / Firmware - assim você pode fazer IO de disco (entrada / saída) usando essa interrupção específica. Existem outras interrupções, bem como Int 9, etc Interrupções são uma maneira de mudar o contexto de execução do seu programa em firmware / BIOS, OS drivers / SO, etc para obter ajuda do firmware. O GRUB usa o INT 13 durante os estágios iniciais do carregamento do bootloader a partir do disco rígido quando o kernel do sistema operacional não está na memória e precisa carregar a si mesmo (stage1, stage 1.5, modules, etc), então o Grub depende basicamente do BIOS / Firmware o trabalho de carregar partes do GRUB.

A maneira mais fácil de carregar um ISO a partir do sistema de arquivos é inicializar o ISO usando o módulo loopback / loop do GRUB. O GRUB tem que ser instalado no disco rígido no MBR de preferência e quando você inicializa a máquina, no menu de inicialização do GRUB, você começa a digitar os comandos do GRUB para carregar o ISO de qualquer sistema de arquivos em que ele esteja. Você não precisa de um kernel para extrair um ISO no ramdisk - o GRUB pode fazer tudo isso diretamente sem depender de outro kernel.

por exemplo, para o Debian pode ser assim: loopback insmod linux (hd0,1) /deb.iso/install.amd/vmlinuz initrd (hd0,1) /deb.iso/install.amd/initrd.gz bota

(você precisa verificar quais módulos estão disponíveis para o GRUB e se este é um boot EFI | BIOS)

O Chainloading está usando o GRUB / Bootloader para carregar outro SO, inicializando outro GRUB / Syslinux / Bootloader. Normalmente você faz: GRUB-MBR --- > vmlinuz Chianloading você faz: GRUB-MBR --- > CDROM-GRUB-MBR --- > vmlinuz

    
por 22.10.2018 / 17:28