140 likes | 278 Vues
Genesis: from raw hardware to processes. System booting sequence: how does a machine come into life. How is the First Process Created?. What happens when you turn on a computer? How to get from raw hardware to the first running process, or process 1 under UNIX?. Booting Sequence.
E N D
Genesis: from raw hardware to processes System booting sequence: how does a machine come into life
How is the First Process Created? • What happens when you turn on a computer? • How to get from raw hardware to the first running process, or process 1 under UNIX?
Booting Sequence • The address of the first instruction is fixed • It is stored in read-only-memory (ROM) • ROM is read-only, permanent memory, and is always available to be used.
Booting Procedure for i386 Machines • On i386 machines, ROM stores a Basic Input/Output System (BIOS) • BIOS contains program that knows how to access storage devices, keyboard, and graphic card.
BIOS Code • Performs Power-On Self Test (POST) • Tests the system • Looks for and checks peripherals • During this time, you will hear memory counting, which consists of noises from the floppy and hard drive, followed by a final beep • Locates a valid device with which to boot the system (boot device) • Floppy CDROM hard drives
After the POST • The master boot record (MBR) is loaded by BIOS from the boot device. • The MBR is stored at the first logical sector (track 0, cylinder 0, and head 0) of the boot device (e.g., a hard drive) that • Fits into a single 512-byte disk sector (boot sector) • Boot loader: machine code instructions for booting the machine. • Partition table: the physical layout of the disk (e.g., number of tracks)
After Getting the Info on the Boot Device • BIOS loads a more sophisticated loader from the boot sector and yields control to it. • Under Linux, this sophisticated loader is called LILO (Linux Loader) or Grub (GNU Grub Unified Boot Loader). • The more sophisticated loader loads the operating system
More on OS Loaders • LILO • Is partly stored in MBR with the disk partition table. • A small machine code binary on the MBR whose job is to locate the second stage boot loader and load the first part of it into memory. • A user can specify which disk partition and OS image to boot • Every time a configuration change is made, run ‘/sbin/lilo’ to change MBR. • Windows loader assumes only one bootable disk partition • After loading the kernel image, LILO sets the kernel mode and jumps to the entry point of the operating system
Booting Sequence in Brief • A CPU jumps to a fixed address in ROM, • Loads the BIOS, • Performs POST, • Loads MBR from the boot device, • Loads an OS loader, • Loads the kernel image, • Sets the kernel mode, and • Jumps to the OS entry point.
Linux Initialization • Set up a number of things: • Trap table • Interrupt handlers • Scheduler • Clock • Kernel modules • … • Process manager • Hand-craft environment for the init process (the first process, process 1).
Process 1 • Is instantiated from the init program • Is the ancestor of all processes • Controls transitions between runlevels • Executes startup and shutdown scripts for each runlevel
On RedHat, the init do the following (run as a process) • Run /etc/rc.d/rc.sysinit that sets environment path, checks file system, etc (system initialization) • Run /etc/inittab script that decides how system should be setup in each runlevel. • Set the source function library, /etc/rc.d/init.d, how to start and kill a program, etc • Start all background processes by looking at the rc directories for the runlevel as default in /etc/inittab: e.g /etc/rc.d/rc5.d for runlevel 5. • Fork /sbin/mingetty to give virtual consoles (login prompts).
Runlevels • Level 0: shutdown • Level 1: single-user • Level 2: multi-user (without network file system) • Level 3: full multi-user • Level 5: X11 • Level 6: reboot