Wednesday, October 28, 2009

History of Solaris

No other flavor of UNIX is more popular or has enjoyed a wider user base and cultural following than Sun Microsystems Solaris. Since it was founded in 1982, Sun Microsystems focus has been on UNIX,and it appears to have no intention of moving away from the UNIX operating system. Sun’s user base has strong loyalty to the company, as well as to the operating system. Sun’s most recent version is Solaris 8, based on System V, release 4. The Solaris operating system is available for the SPARC architecture, Sun’s own processor,and the Intel platform.

MILESTONES IN THE DEVELOPMENT OF SOLARIS

1965 Bell Laboratories joins with MIT and General Electric to develop Multics.

1970 Ken Thompson and Dennis Ritchie develop UNIX.

1971 The B-language version of the operating system runs on a PDP-11.

1973 UNIX is rewritten in the C language.

1974 Thompson and Ritchie publish a paper and generate enthusiasm in the academic community.Berkeley starts the BSD program.

1975 The first licensed version of BSD UNIX is released.

1979 Bill Joy introduces “Berkeley Enhancements” as BSD 4.1.

1982 AT&T first markets UNIX. Sun Microsystems is founded.

1983 Sun Microsystems introduces SunOS.

1984 About 100,000 UNIX sites exist worldwide.

1988 AT&T and Sun start work on SVR4, a unified version of UNIX.

1988 OSF and UI are formed.

1989 AT&T releases System V, release 4.

1990 OSF releases OSF/1.

1992 Sun introduces Solaris, which is based on System V, release 4. SunOS, which is based on BSDF UNIX, will be phased out.

Monday, October 26, 2009

Solaris Sparc Boot Sequence

Power On: Depending on the system involved, you may see some output on a serial terminal immediately after power on. This may take the form of a Hardware Power ON message on a large Enterprise server, or a "'" or "," in the case of an older Ultra system. These indications will not be present on a monitor connected directly to the server.

POST: If the PROM diag-switch? parameter is set to true, output from the POST (Power On Self Test) will be viewable on a serial terminal. The PROM diag-level parameter determines the extent of the POST tests. (See the Hardware Diagnostics page for more information on these settings.) If a serial terminal is not connected, a prtdiag -v will show the results of the POST once the system has booted. If a keyboard is connected, it will beep and the keyboard lights will flash during POST. If the POST fails, an error indication may be displayed following the failure.

Init System: The "Init System" process can be broken down into several discrete parts:

OBP: If diag-switch? is set, an Entering OBP message will be seen on a serial terminal. The MMU (memory management unit) is enabled.

NVRAM: If use-nvramrc? is set to true, read the NVRAMRC. This may contain information about boot devices, especially where the boot disk has been encapsulated with VxVM or DiskSuite.

Probe All: This includes checking for SCSI or other disk drives and devices.

Install Console: At this point, a directly connected monitor and keyboard will become active, or the serial port will become the system console access. If a keyboard is connected to the system, the lights will flash again during this step.

Banner: The PROM banner will be displayed. This banner includes a logo, system type, PROM revision level, the ethernet address, and the hostid.

Create Device Tree: The hardware device tree will be built. This device tree can be explored using PROM monitor commands at the ok> prompt, or by using prtconf once the system has been booted.

Extended Diagnostics: If diag-switch? and diag-level are set, additional diagnostics will appear on the system console.

auto-boot?: If the auto-boot? PROM parameter is set, the boot process will begin. Otherwise, the system will drop to the ok> PROM monitor prompt, or (if sunmon-compat? and security-mode are set) the > security prompt.

The boot process will use the boot-device and boot-file PROM parameters unless diag-switch? is set. In this case, the boot process will use the diag-device and diag-file.

bootblk: The OBP (Open Boot PROM) program loads the bootblk primary boot program from the boot-device (or diag-device, if diag-switch? is set). If the bootblk is not present or needs to be regenerated, it can be installed by running the installboot command after booting from a CDROM or the network. A copy of the bootblk is available at /usr/platform/`arch -k`/lib/fs/ufs/bootblk

ufsboot: The secondary boot program, /platform/`arch -k`/ufsboot is run. This program loads the kernel core image files. If this file is corrupted or missing, a bootblk: can't find the boot program or similar error message will be returned.

kernel: The kernel is loaded and run. For 32-bit Solaris systems, the relevant files are:

• /platform/`arch -k`/kernel/unix
• /kernel/genunix
For 64-bit Solaris systems, the files are:
• /platform/`arch -k`/kernel/sparcV9/unix
• /kernel/genunix

As part of the kernel loading process, the kernel banner is displayed to the screen. This includes the kernel version number (including patch level, if appropriate) and the copyright notice.
The kernel initializes itself and begins loading modules, reading the files with the ufsboot program until it has loaded enough modules to mount the root filesystem itself. At that point, ufsboot is unmapped and the kernel uses its own drivers. If the system complains about not being able to write to the root filesystem, it is stuck in this part of the boot process.
The boot -a command singlesteps through this portion of the boot process. This can be a useful diagnostic procedure if the kernel is not loading properly.

/etc/system: The /etc/system file is read by the kernel, and the system parameters are set.

Solaris System Configuration Files


File
Description
/etc/bootparams
Contains information regarding network boot clients.
/etc/cron.d/cron.allow
/etc/cron.d/cron.deny
Allow access to crontab for users listed in this file. If the file does not exist, access is permitted for users not in the /etc/cron.d/cron.deny file.
/etc/defaultdomain
NIS domain set by /etc/init.d/inetinit
/etc/default/cron
Sets cron logging with the CRONLOG variable.
/etc/default/login
Controls root logins via specification of the CONSOLE variable, as well as variables for login logging thresholds and password requirements.
/etc/default/su
Determines logging activity for su attempts via the SULOG and SYSLOG variables, sets some initial environment variables for su sessions.
/etc/dfs/dfstab
Determines which directories will be NFS-shared at boot time. Each line is a share command.
/etc/dfs/sharetab
Contains a table of resources that have been shared via share.
/etc/group
Provides groupname translation information.
/etc/hostname.interface
Assigns a hostname to interface; assigns an IP address by cross- referencing /etc/inet/hosts.
/etc/hosts.allow
/etc/hosts.deny
Determine which hosts will be allowed access to TCP wrapper mediated services.
/etc/hosts.equiv
Determines which set of hosts will not need to provide passwords when using the "r" remote access commands (eg rlogin, rsh, rexec)
/etc/inet/hosts
/etc/hosts
Associates hostnames and IP addresses.
/etc/inet/inetd.conf
/etc/inetd.conf
Identifies the services that are started by inetd as well as the manner in which they are started. inetd.conf may even specify that TCP wrappers be used to protect a service.
/etc/inittab
inittab is used by init to determine scripts to for different run levels as well as a default run level.
/etc/logindevperm
Contains information to change permissions for devices upon console logins.
/etc/magic
Database of magic numbers that identify file types for file.
/etc/mail/aliases
/etc/aliases
Contains mail aliases recognized by sendmail.
/etc/mail/sendmail.cf
/etc/sendmail.cf
Mail configuration file for sendmail.
/etc/minor_perm
Specifies permissions for device files; used by drvconfig
/etc/mnttab
Contains information about currently mounted resources.
/etc/name_to_major
List of currently configured major device numbers; used by drvconfig.
/etc/netconfig
Network configuration database read during network initialization.
/etc/netgroup
Defines groups of hosts and/or users.
/etc/netmasks
Determines default netmask settings.
/etc/nsswitch.conf
Determines order in which different information sources are accessed when performing lookups.
/etc/path_to_inst
Contents of physical device tree using physical device names and instance numbers.
/etc/protocols
Known protocols.
/etc/remote
Attributes for tip sessions.
/etc/rmtab
Currently mounted filesystems.
/etc/rpc
Available RPC programs.
/etc/services
Well-known networking services and associated port numbers.
/etc/syslog.conf
Configures syslogd logging.
/etc/system
Can be used to force kernel module loading or set kernel tuneable parameters.
/etc/vfstab
Information for mounting local and remote filesystems.
/var/adm/messages
Main log file used by syslogd.
/var/adm/sulog
Default log for recording use of su command.
/var/adm/utmpx
User and accounting information.
/var/adm/wtmpx
User login and accounting information.
/var/local/etc/ftpaccess
/var/local/etc/ftpconversions
/var/local/etc/ftpusers
wu-ftpd configuration files to set ftp access rights, conversion/compression types, and a list of userids to exclude from ftp operations.
/var/lp/log
Print services activity log.

/var/sadm/install/contents
Database of installed software packages.
/var/saf/_log
Logs activity of SAF (Service Access Facility).

About Solaris

Solaris is a UNIX-based operating system introduced by Sun Microsystems in 1992 as the successor to SunOS.