Ä¿³ÎÀÇ ºÎÆÃ¿¡ ÇÊ¿äÇÑ ±âº» ÃʱâÈ(CPU, ¸Þ¸ð¸® µî)°¡ ³¡³ª¸é init ÇÁ·Î¼¼½º°¡ ¸¸µé¾îÁö°í ½Ã½ºÅÛ¿¡ Á¸ÀçÇÏ´Â ´Ù¸¥ Çϵå¿þ¾î µîÀ» ÃʱâÈ ÇÑ´ÙÀ½ ·çÆ® µð¹ÙÀ̽º¸¦ ã¾Æ ³ª¸ÓÁö ºÎÆÃÀ» ½ÃÀÛÇÑ´Ù. init ÇÁ·Î¼¼½º´Â 1¹ø ÇÁ·Î¼¼½º ¹øÈ£¸¦ °®´Â´Ù.
static int init(void * unused)
{
lock_kernel();
(1)
do_basic_setup();
(2)
prepare_namespace();
/*
* Ok, we have completed the initial bootup, and
* we're essentially up and running. Get rid of the
* initmem segments and start the user-mode stuff..
*/
(3)
free_initmem();
unlock_kernel();
(4)
if (open("/dev/console", O_RDWR, 0) < 0)
printk("Warning: unable to open an initial console.\n");
(void) dup(0);
(void) dup(0);
/*
* We try each of these until one succeeds.
*
* The Bourne shell can be used instead of init if we are
* trying to recover a really broken machine.
*/
if (execute_command)
execve(execute_command,argv_init,envp_init);
(5)
execve("/sbin/init",argv_init,envp_init);
execve("/etc/init",argv_init,envp_init);
execve("/bin/init",argv_init,envp_init);
execve("/bin/sh",argv_init,envp_init);
(6)
execve("/sbin/init",argv_init,envp_init);
panic("No init found. Try passing init= option to kernel.");
} |
ÀÌÁ¦ ÇÒ °ÍÀº ³ª¸ÓÁö µð¹ÙÀ̽º µéÀ» ¸ðµÎ ÃʱâÈ ÇÏ´Â ÀÏÀ» ÇÏ´Â °ÍÀÌ´Ù. ÃʱâÈ ÇÏ´Â ¸ñ·ÏÀº ´ÙÀ½°ú °°´Ù. À̿ܿ¡ ´õ ÀÖÀ¸³ª Áß¿äÇÑ °Í¸¸ Á¶±Ý °£Ãß·È´Ù.
ÇöÀç´Â i386¿¡¼¸¸ Á¸Àç ÇÏ´Â ±â´ÉÀ¸·Î MTRR(Memory Type Range Register)¸¦ ¸»ÇÑ´Ù. PCI³ª AGP ºñµð¿À Ä«µå¸¦ Á»´õ »¡¸® ¾µ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù.
proc file systemÀ» »ç¿ëÇϵµ·Ï ¼³Á¤ µÇ¾î ÀÖÀ¸¸é À̸¦ ÃʱâÈ ÇØÁØ´Ù.
PCI ½Ã½ºÅÛÀ» ÃʱâÈ ÇÑ´Ù. PCIÀÇ ·çÆ® µð¹ÙÀ̽º¸¦ ÃʱâÈ Çϰí À̾î PCI ¹ö½º¿¡ ¿¬°áµÈ ¸ðµç ´Ù¸¥ Çϵå¿þ¾î¸¦ ã¾Æ ¸®½ºÆ®¿¡ µî·ÏÇÑ´Ù.
ISA ¹ö½º¿¡ ¹°·Á ÀÖ´Â PnP µð¹ÙÀ̽º¸¦ ÃʱâÈÇÑ´Ù.
»ç¿ëµÇ´Â ÇÁ·ÎÅäÄÝÀ» ÃʱâÈ ÇÑ´Ù. ¼ÒÄÏ ¿ë ½½·¦µµ ÃʱâÈ Çϰí netlink, netfileter µîµµ ÃʱâÈ ÇÑ´Ù.
keventd¸¦ kernel thread·Î ½ÇÇàÇÑ´Ù.
PCMCIA µð¹ÙÀ̽º ÃʱâÈ ÇÑ´Ù.