- 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)
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)
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.
- 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) - 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
Do'stlaringiz bilan baham: |