Como criar um disquete para executar o ModulOS

Este documento apresenta quais são os passos necessários para criar um disco de boot do ModulOS. Se você quiser um disco de boot pronto, utilize os que estão disponíveis na área de download.

Atualmente, o ModulOS só suporta o sistema de arquivos ext2. Por isso, o disquete criado tem que ter esse tipo de sistema de arquivos.

Todos os passos aqui descritos devem ser feitos numa máquina rodando Linux.

1 - Crie o sistema de arquivos ext2 no disquete. Por exemplo:

    $ mke2fs /dev/fd0

2 - Monte o disquete num diretório. Por exemplo:

    $ mount /dev/fd0 /a

3 - Crie os diretórios system/modules, system/config e lib no disquete. Por exemplo:

    $ mkdir -p /a/system/modules /a/system/config /a/lib

4 - Copie todos os módulos do sistema para o diretório system/modules. Ele deve ficar algo como:

at_video.mod     chipset.mod       intermanager.mod   kbdlus.mod      rexecmodfile.mod   taskmanager.mod
avltree_in.mod   ext2fs.mod        intmanager.mod     kbdlusintl.mod  rlibmodfile.mod    usermodmanager.mod
blockbuffer.mod  fdcontroller.mod  ioportmanager.mod  manip.mod       rsysmodfile.mod
cfgmanager.mod   fsmanager.mod     kbd_generic.mod    memmanager.mod  sysmodmanager.mod

5 - Copie todos os módulos biblioteca para o diretório lib. Ele deve ficar algo como:

exception.mod  manip.mod  memmanager.mod  sync.mod

6 - Copie o arquivo starter e os programas ls.mod e shell.mod para o diretório raiz do disquete. Ele deve ficar algo como:

lib  lost+found  ls.mod  shell.mod  starter  system

7 - Crie o arquivo system.cfg em system/config com este conteúdo:

[SysModManager]
modules {
at_video {
path=/system/modules/at_video.mod
prop=0x5
}
avltree_in {
path=/system/modules/avltree_in.mod
prop=0x5
}
blockbuffer {
path=/system/modules/blockbuffer.mod
prop=0x5
}
cfgmanager {
path=/system/modules/cfgmanager.mod
prop=0x5
}
chipset {
path=/system/modules/chipset.mod
prop=0x5
}
ext2fs {
path=/system/modules/ext2fs.mod
prop=0x5
}
fdcontroller {
path=/system/modules/fdcontroller.mod
prop=0x5
}
fsmanager {
path=/system/modules/fsmanager.mod
prop=0x5
}
intermanager {
path=/system/modules/intermanager.mod
prop=0x5
}
intmanager {
path=/system/modules/intmanager.mod
prop=0x5
}
ioportmanager {
path=/system/modules/ioportmanager.mod
prop=0x5
}
kbd_generic {
path=/system/modules/kbd_generic.mod
prop=0x1
}
kbdlusintl {
path=/system/modules/kbdlusintl.mod
prop=0x1
}
manip {
path=/system/modules/manip.mod
prop=0x5
}
memmanager {
path=/system/modules/memmanager.mod
prop=0x5
}
rexecmodfile {
path=/system/modules/rexecmodfile.mod
prop=0x5
}
rlibmodfile {
path=/system/modules/rlibmodfile.mod
prop=0x5
}
rsysmodfile {
path=/system/modules/rsysmodfile.mod
prop=0x5
}
sysmodmanager {
path=/system/modules/sysmodmanager.mod
prop=0x7
}
taskmanager {
path=/system/modules/taskmanager.mod
prop=0x5
}
usermodmanager {
path=/system/modules/usermodmanager.mod
prop=0x7
}
}

[FSManager]
root {
fsImp=Ext2FS
devImp=FDC
data=
unit=0x0
}

[UserModManager]
modules {
exception {
path=/lib/exception.mod
}
manip {
path=/lib/manip.mod
}
memmanager {
path=/lib/memmanager.mod
}
sync {
path=/lib/sync.mod
}
}
init {
path=/shell.mod
input {
keyboard {
imp=MF2KBD
}
}
output {
video {
imp=AT
}
}
}

8 - Desmonte o disquete. Por exemplo:

    $ umount /a

9 - Faça o disquete poder iniciar o ModulOS com o utilitário mkext2boot. Por exemplo:

    $ mkext2boot /dev/fd0

É isso! O disquete é um disquete de boot do ModulOS. Você pode testar esse disquete no Bochs (bochs.sourceforge.net).