Rev 124 | Rev 150 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 124 | Rev 149 | ||
|---|---|---|---|
| Line 40... | Line 40... | ||
| 40 | \item The kernel initializes and runs a previously hardwired |
40 | \item The kernel initializes and runs a previously hardwired |
| 41 | number of initial user space tasks. |
41 | number of initial user space tasks. |
| 42 | \end{enumerate} |
42 | \end{enumerate} |
| 43 | 43 | ||
| 44 | The following sections describe the particual features of the |
44 | The following sections describe the particual features of the |
| 45 | boot loading process on the supported platforms. |
45 | boot loading process on the supported platforms. Sample |
| - | 46 | configuration files for all simulators are in the directory |
|
| - | 47 | {\em kernel/contrib/conf}. |
|
| 46 | 48 | ||
| 47 | \section{IA-32 and AMD64} |
49 | \section{IA-32 and AMD64} |
| 48 | 50 | ||
| 49 | On both platforms HelenOS depends on a boot loader which |
51 | On both platforms HelenOS depends on a boot loader which |
| 50 | supports the Multiboot Specification (i.e. GRUB). The kernel |
52 | supports the Multiboot Specification (i.e. GRUB). The kernel |
| 51 | image (usually called \texttt{image.bin}) is loaded by the |
53 | image (usually called \texttt{image.bin}) is loaded by the |
| 52 | boot loader just above the 1st megabyte of the physical |
54 | boot loader just above the 1st megabyte of the physical |
| 53 | memory (the exact location is 1081344 bytes). |
- | |
| 54 | 55 | memory (the exact location is 1081344 bytes). Modules loaded by |
|
| - | 56 | GRUB are automatically detected by the kernel and after initialization |
|
| - | 57 | they are started as userspace tasks. The GRUB loading is the |
|
| - | 58 | easiest in terms of using userspace tasks. |
|
| - | 59 | ||
| - | 60 | An example GRUB configuration file {\em menu.lst}: |
|
| - | 61 | \begin{verbatim} |
|
| - | 62 | title=HelenOS |
|
| - | 63 | root (cd) |
|
| - | 64 | kernel /boot/kernel.bin |
|
| - | 65 | module /boot/ns |
|
| - | 66 | module /boot/init |
|
| - | 67 | module /boot/pci |
|
| - | 68 | module /boot/fb |
|
| - | 69 | module /boot/kbd |
|
| - | 70 | module /boot/console |
|
| - | 71 | module /boot/tetris |
|
| - | 72 | module /boot/ipcc |
|
| - | 73 | module /boot/klog |
|
| - | 74 | \end{verbatim} |
|
| - | 75 | ||
| - | 76 | \section{32-bit MIPS} |
|
| - | 77 | The MIPS port is fully supported in the {\em msim} and {\em gxemul} simulators. |
|
| - | 78 | These simulators allow specifying a memory contents of the simulated |
|
| - | 79 | computer. Unfortunately, the autodetection of loaded modules does |
|
| - | 80 | not work. In order to change number of loaded modules, the file |
|
| - | 81 | kernel/arch/mips32/src/mips32.c must be modified. |
|
| - | 82 | ||
| - | 83 | Sample msim configuration file: |
|
| - | 84 | \begin{verbatim} |
|
| - | 85 | add dcpu mips1 |
|
| - | 86 | ||
| - | 87 | add rwm mainmem 0x0 8M load "/dev/zero" |
|
| - | 88 | add rom startmem 0x1fc00000 1024k load "image.boot" |
|
| - | 89 | add rwm ns 0x01000000 1M load "../uspace/ns/ns" |
|
| - | 90 | add rwm kbd 0x01100000 1M load "../uspace/fb/fb" |
|
| - | 91 | add rwm fb 0x01200000 1M load "../uspace/kbd/kbd" |
|
| - | 92 | add rwm console 0x01300000 1M load "../uspace/console/console" |
|
| - | 93 | add rwm init 0x01400000 1M load "../uspace/init/init" |
|
| - | 94 | add rwm tetris 0x01500000 1M load "../uspace/tetris/tetris" |
|
| - | 95 | \end{verbatim} |
|
| - | 96 | ||
| - | 97 | Sample gxemul command line arguments |
|
| - | 98 | \begin{verbatim} |
|
| - | 99 | gxemul -E testmips -X 0x81800000:../uspace/ns/ns 0x81900000:../uspace/kbd/kbd 0x81a00000:../uspace/fb/fb 0x81b00000:../uspace/init/init 0x81c00000:../uspace/console/console 0x81d00000:../uspace/tetris/tetris kernel.bin |
|
| - | 100 | \end{verbatim} |
|
| - | 101 | ||
| - | 102 | The kernel can boot on the SGI Indy (and probably other SGI computers |
|
| - | 103 | with 32-bit ARC firmware). It uses ARC for output and input. When |
|
| - | 104 | the kernel is compiled to be loaded on the SGI Indy, an ECOFF image |
|
| - | 105 | is created which can be later loaded directly with ARC boot loader |
|
| - | 106 | e.g. using BOOTP protocol. |
|
| - | 107 | ||
| - | 108 | \section{IA64} |
|
| - | 109 | The IA64 port is supported on the ski simulator. The situation is very similar |
|
| - | 110 | to the MIPS loader - the loaded modules must be loaded on correct addresses in |
|
| - | 111 | the ski configuration file and specified in the file |
|
| - | 112 | kernel/arch/ia64/src/ia64.c. |
|
| - | 113 | ||
| - | 114 | Sample IA64 configuration file: |
|
| - | 115 | \begin{verbatim} |
|
| - | 116 | load kernel.bin |
|
| - | 117 | romload ../uspace/ns/ns 0x400000 |
|
| - | 118 | romload ../uspace/init/init 0x800000 |
|
| - | 119 | romload ../uspace/console/console 0xc00000 |
|
| - | 120 | romload ../uspace/fb/fb 0x1000000 |
|
| - | 121 | romload ../uspace/kbd/kbd 0x1400000 |
|
| - | 122 | romload ../uspace/tetris/tetris 0x1800000 |
|
| - | 123 | romload ../uspace/klog/klog 0x1c00000 |
|
| - | 124 | romload ../uspace/ipcc/ipcc 0x2000000 |
|
| - | 125 | \end{verbatim} |
|
| - | 126 | ||
| - | 127 | \section{Power PC} |
|
| - | 128 | The PowerPC boot image contains complete kernel with user tasks. |
|
| - | 129 | The loader build system automatically creates such image using information |
|
| - | 130 | residing in boot/arch/ppc32/loader/Makefile.inc. The variable COMPONENTS |
|
| - | 131 | specifies, which tasks will be loaded into the image. |
|
| - | 132 | ||