Chapter 2 Booting and Shutting Down Kim Grempler (Sections 2.0 to 2.3) Leon Dague (Sections 2.4 to...

Preview:

Citation preview

Chapter 2Booting and Shutting Down

Kim Grempler (Sections 2.0 to 2.3)

Leon Dague (Sections 2.4 to 2.7)

Bootstrapping

• A.k.a. Booting– Kernel loaded into memory and executes– Initialization tasks performed– System available to users

• Potential Problems when booting– Errors in configuration files, missing/unreliable

equipment, or damaged filesystems

• Boot configuration is first task of system administrator, on new system

• Booting is hardware-dependent

Reference Chapters

• Chapter 3: Root Account

• Chapter 4: The Filesystem

• Chapter 7: Devices and Drivers

• Chapter 8: Serial Devices

• Chapter 9: Installing a Boot program

• Chapter 13: Configuring the Kernal

• Chapter 31: Daemons

2 Booting Modes

• Automatic– Performs boot without external assistance

• Manual– Automatic procedure until initialization scripts

are run by operator– Single-user mode: most system processes not

running and users unable to log in

Six Steps in Booting Process

• Loading and initialization of the kernel

• Device detection and configuration

• Creation of spontaneous system processes

• Operator intervention (single user boot only)

• Execution of system startup scripts

• Multi-user operation

• **Admin. has little control of steps above. Boot configuration via editing system startup scripts**

Step 1: Loading and Initialization of the Kernal

• Kernal (e.g., program) is loaded into memory to be executed

• Pathname of kernal is vendor dependent– Example: /unix or /vmunix

• 2-stage loading process– 1st: small boot program read into memory to enable

kernal loading (outside domain of Unix)– 2nd: kernal runs tests to determine memory availability

• kernels run in a fixed amount of memory and know what to reserve for internal storage and I/O buffers.

Step 2: Device Detection and Configuration

• Kernal performs hardware check– General hardware device info is incorporated in

kernal configuration– Locate and initialize each device – Acquire more info via drivers

• If not found, will disable hardware

• If hardware added, must reboot, to access

Step 3: Creation of Spontaneous System Processes

• After basic initialization, kernel creates spontaneous processes in users space – Not created via normal UNIX fork mechanism

• fork creates copy of the original process, with new ID, that is identical to the parent

– BSD has 3 processes• Swapper - process 0; init - process1; pagedaemon - process 2

– ATT: varies• sched - process 0; init - process 1; various memory handlers

– **Note- ONLY INIT USER PROCESS**

• Kernal role complete; init handles processes for basic operations and UNIX daemons

Step 4: Operator Intervention (Single-User Boot Only)

• init notified via command-line flag from kernel

• init creates shell and waits for it to terminate (<control-d> or exit) before continuing on with rest of startup procedure– Always in bourne shell (e.g., sh) and runs as root with root

partition mounted– Available programs located in /bin, /sbin, /etc, and /usr;

~ other filesystems must be mounted by operator – Daemons not available– fsck (checks and repairs filesystems) must be run by hand

Step 5: Execution of System Startup Scripts

• The location, content, and organization of shell (e.g., sh) scripts vary from system to system

• BSD: kept in /etc and names begin with rc

• ATT: kept in /etc/init.d with links made to other directories such as /etc/rc0.d, /etc/rc1.d…

• Examples of tasks performed in initialization scripts– Set computer name; Set time zone; fsck disk check;– Mount system’s disks; Remove files from /tmp– Configure network interfaces; – Start up daemons and network services;– Turn on accounting and quotas

Step 6: Multi-User Operation

• To complete boot process and allow user access, init produces getty process on each workstation

• BSD: init has only two states ~ single-user and multi-user

• ATT: init has one single-user and several multi-user “run levels” to determine which system resources are enabled

Sample BSD Startup Scripts/etc/rc.boot

• First rc script to run is /etc/rc.boot– The first two lines set HOME and PATH environment

variables– Executes basic system commands during boot– hostname file in /etc for each network interface

• enables IP networking on each interface

• Reverse Address Resolution Protocol (RARP)

• Find hostname from other machine on NW using hostconfig program and use NFS to mount filesystems

• System Administrator intervene to fix problem

Sample BSD Startup Scripts/etc/rc.boot (cont.)

• Address or hostname of default Internet gateway is read from /etc/defaultrouter

• non-local NW connections up prior to more complicated routing in boot process

• /usr filesystem read-only for system check to see if /fastboot exists– Yes: system shut down cleanly~ filesystems in consistent

state– No: all filesystems listed in /etc/fstab checked in fsck

• If disks check cleanly~ rc.boot runs /etc/rc.single

Sample BSD Startup Scripts/etc/rc.single

• Commands in /etc/rc.single are executed at boot time even if not using single mode

• Remounts / and /usr filesystems read/write– if not remounted~ system not able to come up

• Cleans out /etc/mtabfile and adds entries for / and /usr– was previously mounted but not in mtab file because

root filesystem not writable

• /usr/kvm mounted~ clean up shared library cache

Sample BSD Startup Scripts/etc/rc.single

• /etc/utmp file cleaned out– contains user list of current log ins

• tzsetup command sets local time zone & status of daylight savings time (kernal is GMT)

• loadkeys command sets keyboard mapping

• rc.single exits~rc.boot exits

• No problems in autoboot mode the next init process is /etc/rc

• If problem~single-user (sh process) on console

Sample BSD Startup Scripts/etc/rc

• /etc/rc is the main system startup up script in autoboot after rc.boot– if single-user: rc after shell is terminated

• if root filesystems not writable~ rerun rc.single

• clean up shared library cache

• remove /fastboot file

• /etc/passwd file edited ~system crashes– vipw and /etc/rc script make sure password file not

destroyed at crash

Sample BSD Startup Scripts/etc/rc (cont.)

• Enable quotas

• /bin/ps -u cleans out the ps database (status of processes)

• /etc/nologin created by shutdown to prevent logins during shutdown

• executes rc.local script

• swapon -a to make use of all swap partitions listed in etc/fstab

• expreserve: looks in /tmp to find files that were edited when system went down

Sample BSD Startup Scripts/etc/rc (cont.)

• Start standard system daemons (i.e., lpd, inetd, update, uushed)

Sample BSD Startup Scripts/etc/rc.local

• /etc/rc.local contains commands for local system

• portmap daemon maps RPC (remote procedure call) service numbers to the NW ports of appropriate servers

• NIS (NW info service) Domain Name set from /etc/default domain

• set subnet mask of all machines interfaces

• default route reset~ if no default routing daemon run

• list current configuration of NW interfaces on console

Sample BSD Startup Scripts/etc/rc.local (cont.)

• All NFS filesystems mounted

• named (server for Domain Name system) maps between hostnames and Internet addresses

• Client side NFS daemon run (biod)

• syslogd: responsible for managing log messages

• save kernel core dump in /var/crash/hostname – Image saved on swap partition~ save image to real

filesystem

• Clean up temporary mail lock files and start sendmail

Sample BSD Startup Scripts/etc/rc.local (cont.)

• Make machine NFS Server if filesystems need to be exported

• Daemon to support diskless clients

• rpc.statd and rpc.lockd manage advisory locks on NFS filesystems

• Start automount daemon

• 3rd party vendor install scripts

• Appletalk protocol stack started

• Licensed software add-ons

Sample ATT Startup Scripts

• Leon Continue

Recommended