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 |