You are previewing OpenSolaris™ Bible.
O'Reilly logo
OpenSolaris™ Bible

Book Description

After a beginning overview of the history of OpenSolaris, its open-source licensing, and the community development model, this book then goes on to highlight the aspects of OpenSolaris that differ from more familiar operating systems. You’ll learn how to become a power user of OpenSolaris by maximizing the abilities of advanced features like Dtrace, the fault management architecture, ZFS, the service management facility, and Zones. Authors provide insider tips, unique tricks, and practical examples to help you stay sharp with the latest features of OpenSolaris.

Table of Contents

  1. Copyright
  2. About the Authors
  3. Credits
  4. Acknowledgments
  5. Introduction
    1. Who Should Read This Book
    2. How This Book Is Organized
      1. Part I: Introduction to OpenSolaris
      2. Part II: Using OpenSolaris
      3. Part III: OpenSolaris File Systems, Networking, and Security
      4. Part IV: OpenSolaris Reliability, Availability, and Serviceability
      5. Part V: OpenSolaris Virtualization
      6. Part VI: Developing and Deploying on OpenSolaris
    3. Conventions Used in This Book
      1. Text styles
      2. Command prompts
      3. Icons
      4. Hardware Architecture
      5. Manual Page References
      6. Resources
    4. What's on the Companion Website
    5. Minimum Requirements
      1. OpenSolaris in a virtual machine
      2. Other requirements
    6. Where to Go from Here
  6. I. Introduction to OpenSolaris
    1. 1. What Is OpenSolaris?
      1. 1.1. Introduction to OpenSolaris
        1. 1.1.1. OpenSolaris code
        2. 1.1.2. OpenSolaris distributions
        3. 1.1.3. OpenSolaris community
      2. 1.2. OpenSolaris Features
      3. 1.3. The "Open" in OpenSolaris
        1. 1.3.1. Open source software basics
        2. 1.3.2. Open source licenses
        3. 1.3.3. OpenSolaris licenses
          1. 1.3.3.1. Common Development and Distribution License
          2. 1.3.3.2. Binary Distributions under the CDDL
        4. 1.3.4. Open development
        5. 1.3.5. What open source OpenSolaris means to you
      4. 1.4. The History of OpenSolaris
      5. 1.5. Comparing OpenSolaris to Other Operating Systems
        1. 1.5.1. OpenSolaris and Solaris
        2. 1.5.2. OpenSolaris and Linux
          1. 1.5.2.1. History
          2. 1.5.2.2. Licensing
          3. 1.5.2.3. Distributions
          4. 1.5.2.4. Technical Differences
        3. 1.5.3. OpenSolaris and BSD
      6. 1.6. Getting Involved in OpenSolaris
        1. 1.6.1. Running OpenSolaris
        2. 1.6.2. Participating in discussion lists
        3. 1.6.3. Finding OpenSolaris user groups
        4. 1.6.4. Contributing to OpenSolaris
      7. 1.7. OpenSolaris Development Process
      8. 1.8. Resources
      9. 1.9. Summary
    2. 2. Installing OpenSolaris
      1. 2.1. Solaris Express Community Edition
      2. 2.2. Schillix
      3. 2.3. BeleniX
      4. 2.4. NexentaCore
      5. 2.5. MartUX
      6. 2.6. MilaX
      7. 2.7. OpenSolaris
        1. 2.7.1. History of the OpenSolaris distribution
        2. 2.7.2. What OpenSolaris includes
        3. 2.7.3. Will OpenSolaris run on my hardware?
        4. 2.7.4. Downloading OpenSolaris
        5. 2.7.5. Booting the OpenSolaris CD
        6. 2.7.6. Installing OpenSolaris
          1. 2.7.6.1. Disk Partitioning in an Opensolaris Installation
          2. 2.7.6.2. Configuring the Time, Time Zone, Language, and Users
          3. 2.7.6.3. Troubleshooting Installation
        7. 2.7.7. Booting OpenSolaris
        8. 2.7.8. Installing OpenSolaris in a virtual machine
      8. 2.8. Resources
      9. 2.9. Summary
    3. 3. OpenSolaris Crash Course
      1. 3.1. Discovering the Desktop
        1. 3.1.1. Overview
        2. 3.1.2. Managing windows
        3. 3.1.3. Navigating files and directories
        4. 3.1.4. Using the Internet
        5. 3.1.5. Office suite
        6. 3.1.6. Multimedia
        7. 3.1.7. Printers and peripherals
        8. 3.1.8. Customizing GNOME
        9. 3.1.9. Logging out and shutting down
      2. 3.2. Using the Command Line
        1. 3.2.1. Shells
        2. 3.2.2. Executing commands
        3. 3.2.3. Shell History
        4. 3.2.4. Environment variables
        5. 3.2.5. Command paths
        6. 3.2.6. Managing files
        7. 3.2.7. Redirection
        8. 3.2.8. Job control
        9. 3.2.9. Customizing Bash
        10. 3.2.10. Text editors
          1. 3.2.10.1. General Commands
          2. 3.2.10.2. Inserting Text
          3. 3.2.10.3. Navigating and Searching
          4. 3.2.10.4. Cutting and Pasting
          5. 3.2.10.5. Repeating Commands
        11. 3.2.11. Running privileged commands
      3. 3.3. Switching Languages and Locales
        1. 3.3.1. Changing locale in GNOME
        2. 3.3.2. Changing locale in a terminal session
        3. 3.3.3. Changing the default system locale
        4. 3.3.4. Changing keyboard layout and input languages
        5. 3.3.5. Installing additional languages
      4. 3.4. Getting Online
        1. 3.4.1. Network AutoMagic
        2. 3.4.2. Manual network configuration
        3. 3.4.3. Troubleshooting network connections
      5. 3.5. Adding Software
        1. 3.5.1. Finding and installing software
        2. 3.5.2. Alternative repositories
      6. 3.6. Developing on OpenSolaris
      7. 3.7. Connecting Remotely
      8. 3.8. System Administration
        1. 3.8.1. System information
        2. 3.8.2. Processes and services
          1. 3.8.2.1. Processes
          2. 3.8.2.2. Signals
          3. 3.8.2.3. Proc Tools
          4. 3.8.2.4. Resource Management and Scheduling Classes
          5. 3.8.2.5. Services
        3. 3.8.3. Users, groups, and roles
          1. 3.8.3.1. Configuration Files
          2. 3.8.3.2. The Users and Groups GUI
          3. 3.8.3.3. Managing Users, Groups, and Roles with the Command Line
          4. 3.8.3.4. Utilities
        4. 3.8.4. Storage and file systems
          1. 3.8.4.1. Disks and ZFS
          2. 3.8.4.2. Mirroring the Root Pool
          3. 3.8.4.3. File System Layout
        5. 3.8.5. Log files
        6. 3.8.6. Booting and shutting down
        7. 3.8.7. Managing boot environments
        8. 3.8.8. Managing GRUB and the OpenSolaris boot archive
      9. 3.9. Resources
      10. 3.10. Summary
  7. II. Using OpenSolaris
    1. 4. The Desktop
      1. 4.1. Desktop Customization
        1. 4.1.1. Desktop session
        2. 4.1.2. Locking the session
        3. 4.1.3. Customizing the panel
        4. 4.1.4. Customizing your desktop's appearance
        5. 4.1.5. Other preferences
          1. 4.1.5.1. Screen Resolution
          2. 4.1.5.2. Fonts
          3. 4.1.5.3. Themes
      2. 4.2. Desktop Sharing
      3. 4.3. Internet Applications
        1. 4.3.1. Web browsing with Firefox
        2. 4.3.2. E-mail and calendar
        3. 4.3.3. Instant messaging
      4. 4.4. Media Applications
        1. 4.4.1. Audio
        2. 4.4.2. Video
      5. 4.5. Graphics Applications
        1. 4.5.1. Screenshots
        2. 4.5.2. Viewing images
        3. 4.5.3. Organizing and editing images
      6. 4.6. System Administration
        1. 4.6.1. Users and groups
        2. 4.6.2. Keyring Manager
        3. 4.6.3. Disk Usage Analyzer
        4. 4.6.4. Log File Viewer
        5. 4.6.5. Performance Monitor
        6. 4.6.6. Power management and statistics
      7. 4.7. Other Applications
      8. 4.8. Troubleshooting
        1. 4.8.1. X server startup
        2. 4.8.2. GNOME session startup
      9. 4.9. Resources
      10. 4.10. Summary
    2. 5. Printers and Peripherals
      1. 5.1. Printing
        1. 5.1.1. Automatic printer configuration with Presto
          1. 5.1.1.1. Configuring Locally Attached Printers
          2. 5.1.1.2. Configuring Network-attached Printers
        2. 5.1.2. Manual printer configuration
          1. 5.1.2.1. Selecting a Print Service
          2. 5.1.2.2. Using the LP System
            1. 5.1.2.2.1. Configuring a Local Printer
            2. 5.1.2.2.2. Configuring a Network Printer
            3. 5.1.2.2.3. Submitting Print Jobs
            4. 5.1.2.2.4. Checking Printer Status
            5. 5.1.2.2.5. Configuring a Print Client
            6. 5.1.2.2.6. Managing Print Queues and Jobs
          3. 5.1.2.3. Using CUPS
        3. 5.1.3. PPD management
      2. 5.2. Scanners
      3. 5.3. USB Devices
        1. 5.3.1. Keyboards and mice
        2. 5.3.2. MP3 players
        3. 5.3.3. Webcams
        4. 5.3.4. Digital cameras
      4. 5.4. Audio
      5. 5.5. Serial Devices and Modems
        1. 5.5.1. Serial ports
        2. 5.5.2. USB-to-serial converters
        3. 5.5.3. Modems
      6. 5.6. Network Interfaces
      7. 5.7. Power Management and UPSs
        1. 5.7.1. Configuring power management
        2. 5.7.2. Uninterruptible power supply (UPS)
      8. 5.8. Device Drivers
      9. 5.9. Resources
      10. 5.10. Summary
    3. 6. Software Management
      1. 6.1. Package Management
        1. 6.1.1. IPS concepts
        2. 6.1.2. Package names and versions
        3. 6.1.3. Installing packages with Package Manager
        4. 6.1.4. Removing packages
        5. 6.1.5. Viewing, verifying, and searching packages
      2. 6.2. Updating Your Software
      3. 6.3. Boot Environment Management
        1. 6.3.1. Viewing boot environments
        2. 6.3.2. Activating and renaming boot environments
        3. 6.3.3. Creating and destroying boot environments
        4. 6.3.4. Mounting boot environments
      4. 6.4. Managing a Package Repository
      5. 6.5. Building Your Own Distribution
      6. 6.6. Resources
      7. 6.7. Summary
  8. III. OpenSolaris File Systems, Networking, and Security
    1. 7. Disks, Local File Systems, and the Volume Manager
      1. 7.1. Disks
        1. 7.1.1. Disk device names
        2. 7.1.2. Formatting and labeling
          1. 7.1.2.1. Fdisk
          2. 7.1.2.2. Format
        3. 7.1.3. Removable media
        4. 7.1.4. RAM disk
        5. 7.1.5. lofi
        6. 7.1.6. SANs
        7. 7.1.7. iSCSI
          1. 7.1.7.1. Configuring the Target
          2. 7.1.7.2. Configuring the Initiator
          3. 7.1.7.3. Using the iSCSI Disk
          4. 7.1.7.4. Advanced iSCSI Administration
        8. 7.1.8. I/O Multipathing
        9. 7.1.9. Remote replication
        10. 7.1.10. Other Disk Utilities
      2. 7.2. File System Management
        1. 7.2.1. Mounting and unmounting file systems
        2. 7.2.2. Monitoring file systems
        3. 7.2.3. File systems and shutting down
      3. 7.3. Devfs
      4. 7.4. UFS
        1. 7.4.1. Creating a UFS File System
        2. 7.4.2. Logging
        3. 7.4.3. UFS Mount Options
        4. 7.4.4. Checking and Repairing a UFS File System
        5. 7.4.5. Quotas
        6. 7.4.6. Backup, Snapshots, and Restore
      5. 7.5. Swap Space
      6. 7.6. Other Local File Systems
        1. 7.6.1. pcfs
        2. 7.6.2. hsfs
        3. 7.6.3. tmpfs
        4. 7.6.4. lofs
        5. 7.6.5. SAM-QFS
        6. 7.6.6. FUSE
      7. 7.7. The Volume Manager
        1. 7.7.1. Creating the metadb
        2. 7.7.2. Creating a metadevice
        3. 7.7.3. Other commands and features
      8. 7.8. Resources
      9. 7.9. Summary
    2. 8. ZFS
      1. 8.1. ZFS Basics
      2. 8.2. Managing ZFS Pools
        1. 8.2.1. Mirrors
        2. 8.2.2. RAID Z
        3. 8.2.3. Spare devices
        4. 8.2.4. Data scrubbing
        5. 8.2.5. Migration
        6. 8.2.6. Pool properties
        7. 8.2.7. Pool history
        8. 8.2.8. Monitoring ZFS performance
      3. 8.3. ZFS Datasets
        1. 8.3.1. ZFS file systems
        2. 8.3.2. ZFS volumes
        3. 8.3.3. ZFS snapshots
        4. 8.3.4. ZFS clones
        5. 8.3.5. Dataset replication and backups
        6. 8.3.6. Dataset properties
          1. 8.3.6.1. Native properties
          2. 8.3.6.2. Mountpoint
          3. 8.3.6.3. Compression
          4. 8.3.6.4. Copies
          5. 8.3.6.5. Quotas and reservations
          6. 8.3.6.6. User properties
        7. 8.3.7. ZFS encryption
      4. 8.4. ZFS Delegated Administration
      5. 8.5. ZFS Versioning
      6. 8.6. Resources
      7. 8.7. Summary
    3. 9. Networking
      1. 9.1. Network Interfaces
        1. 9.1.1. Displaying IP interfaces
        2. 9.1.2. Configuring interfaces automatically with NWAM
          1. 9.1.2.1. Enabling NWAM
          2. 9.1.2.2. Interacting with NWAM
          3. 9.1.2.3. Troubleshooting NWAM
        3. 9.1.3. Configuring interfaces manually
          1. 9.1.3.1. Configuring a DHCP interface
          2. 9.1.3.2. Configuring a static IP interface
          3. 9.1.3.3. Configuring a Wi-Fi interface
        4. 9.1.4. Logical interfaces
        5. 9.1.5. IP multipathing
          1. 9.1.5.1. Configuring an IPMP group with passive failure detection
          2. 9.1.5.2. Configuring active failure detection
          3. 9.1.5.3. IPMP in action
        6. 9.1.6. Link aggregation
        7. 9.1.7. Configuring virtual LAN interfaces
        8. 9.1.8. Configuring a virtual NIC
        9. 9.1.9. Configuring IP tunnels
        10. 9.1.10. PPP and PPP over Ethernet
      2. 9.2. Network Services
        1. 9.2.1. Domain Name System
          1. 9.2.1.1. Introduction to DNS
          2. 9.2.1.2. Configuring the DNS resolver
          3. 9.2.1.3. DNS troubleshooting
          4. 9.2.1.4. Configuring a DNS server
        2. 9.2.2. Multicast DNS
        3. 9.2.3. Dynamic Host Configuration Protocol
          1. 9.2.3.1. Using the DHCP client
          2. 9.2.3.2. Configuring a DHCP server
        4. 9.2.4. File Transfer Protocol
        5. 9.2.5. Network Time Protocol
        6. 9.2.6. Mail service
        7. 9.2.7. HTTP
        8. 9.2.8. inetd
      3. 9.3. OpenSolaris As a Router or Firewall
        1. 9.3.1. Routing
          1. 9.3.1.1. IP forwarding
          2. 9.3.1.2. Static IP routing
          3. 9.3.1.3. Dynamic IP routing
          4. 9.3.1.4. Configuring a dynamic router
        2. 9.3.2. Configuring a firewall with IP filter
        3. 9.3.3. TCP Wrappers
      4. 9.4. Troubleshooting
        1. 9.4.1. netstat
        2. 9.4.2. ping and traceroute
        3. 9.4.3. Snoop
        4. 9.4.4. SNMP
      5. 9.5. Resources
      6. 9.6. Summary
    4. 10. Network File Systems and Directory Services
      1. 10.1. Introduction to NFS
      2. 10.2. Introduction to CIFS
      3. 10.3. Managing File Sharing
        1. 10.3.1. Installing sharing packages
        2. 10.3.2. Share groups and sharemgr
          1. 10.3.2.1. Sharing directories
          2. 10.3.2.2. Sharing ZFS datasets
        3. 10.3.3. Configuring sharing services with sharectl
        4. 10.3.4. Configuring the CIFS service in workgroup mode
        5. 10.3.5. Automatic sharing of user home directories with CIFS
        6. 10.3.6. Advanced CIFS server topics
      4. 10.4. Accessing Files with NFS
        1. 10.4.1. Manual NFS mounts
        2. 10.4.2. Mounting NFS shares with the automounter
        3. 10.4.3. NFS security
          1. 10.4.3.1. Controlling read and write access
          2. 10.4.3.2. Configuring Diffie-Hellman authentication
        4. 10.4.4. NFS monitoring and troubleshooting
      5. 10.5. Accessing Files with CIFS
      6. 10.6. OpenSolaris Naming Services
        1. 10.6.1. The name service switch
        2. 10.6.2. Name service caching with nscd
        3. 10.6.3. Troubleshooting name service lookups
      7. 10.7. NIS
        1. 10.7.1. Configuring a NIS client
          1. 10.7.1.1. Configuring hostnames for NIS servers
          2. 10.7.1.2. Configuring the NIS domain name
          3. 10.7.1.3. Configuring the NIS client
          4. 10.7.1.4. Configuring the name service switch
        2. 10.7.2. Configuring a NIS master server
          1. 10.7.2.1. Configuring NIS map data
          2. 10.7.2.2. Creating the NIS master server
        3. 10.7.3. Configuring a NIS slave server
        4. 10.7.4. Managing NIS maps
        5. 10.7.5. Leaving a NIS domain
      8. 10.8. LDAP
        1. 10.8.1. OpenSolaris as an LDAP server
        2. 10.8.2. OpenSolaris as an LDAP client
      9. 10.9. Resources
      10. 10.10. Summary
    5. 11. Security
      1. 11.1. Security Overview
        1. 11.1.1. Being a global security citizen
        2. 11.1.2. Organization of this chapter
      2. 11.2. Preventing Unauthorized Access
        1. 11.2.1. User education and physical security
        2. 11.2.2. Pluggable Authentication Modules (PAM)
        3. 11.2.3. Password management
          1. 11.2.3.1. Strong passwords
          2. 11.2.3.2. Password aging
          3. 11.2.3.3. Remote logins
        4. 11.2.4. Firewalls
        5. 11.2.5. Secure by Default (SBD)
      3. 11.3. Limiting the Damage
        1. 11.3.1. Role-based access control
          1. 11.3.1.1. RBAC terminology
          2. 11.3.1.2. Using RBAC
          3. 11.3.1.3. Authorizations
          4. 11.3.1.4. Rights profiles
            1. 11.3.1.4.1. Assigning and using profiles
            2. 11.3.1.4.2. Creating profiles
          5. 11.3.1.5. Roles
          6. 11.3.1.6. Making root a role
        2. 11.3.2. Privileges
          1. 11.3.2.1. setuid
          2. 11.3.2.2. Privileges overview
          3. 11.3.2.3. Viewing privileges
          4. 11.3.2.4. Privileges and RBAC
          5. 11.3.2.5. Assigning privileges to users and roles
        3. 11.3.3. Restricted shell
        4. 11.3.4. Access control lists
          1. 11.3.4.1. UFS access control lists
          2. 11.3.4.2. ZFS access control lists
        5. 11.3.5. Encrypted files
        6. 11.3.6. Message digests
        7. 11.3.7. Preventing user stack execution
        8. 11.3.8. Zones and resource management
      4. 11.4. Ensuring Secure Communication
        1. 11.4.1. Secure Shell
          1. 11.4.1.1. Non-password-based authentication
          2. 11.4.1.2. Secure copy and FTP
          3. 11.4.1.3. SSH Tunneling
        2. 11.4.2. IP security
          1. 11.4.2.1. Key management configuration
          2. 11.4.2.2. Basic IPsec configuration
          3. 11.4.2.3. Configuring IPsec policy
      5. 11.5. Detecting Attacks
        1. 11.5.1. Logs
          1. 11.5.1.1. System log
          2. 11.5.1.2. Login logs
          3. 11.5.1.3. SMF logs
          4. 11.5.1.4. Security service logs
        2. 11.5.2. Basic Audit Reporting Tool
          1. 11.5.2.1. Creating BART manifests
          2. 11.5.2.2. Comparing BART manifests
          3. 11.5.2.3. Customizing BART reports
        3. 11.5.3. Solaris Auditing
          1. 11.5.3.1. Turning on auditing
          2. 11.5.3.2. Reviewing audit data
          3. 11.5.3.3. Auditing on a per-user basis
          4. 11.5.3.4. Syslogging audit events
          5. 11.5.3.5. Auditing security features
          6. 11.5.3.6. Configuring audit policy
          7. 11.5.3.7. Turning off auditing
        4. 11.5.4. Virus scanning
      6. 11.6. Kerberos
        1. 11.6.1. Clock synchronization
        2. 11.6.2. Setting up the key distribution center
        3. 11.6.3. Setting up the Kerberos clients
        4. 11.6.4. Starting Kerberized services
        5. 11.6.5. Creating Kerberos accounts
        6. 11.6.6. Managing tickets
        7. 11.6.7. Using Kerberized services
        8. 11.6.8. Kerberized NFS
        9. 11.6.9. Configuring PAM for Kerberos
        10. 11.6.10. Kerberos logs
        11. 11.6.11. Enhancing Kerberos availability
      7. 11.7. Trusted Extensions
      8. 11.8. Resources
      9. 11.9. Summary
  9. IV. OpenSolaris Reliability, Availability, and Serviceability
    1. 12. Fault Management
      1. 12.1. Predictive Self-Healing
        1. 12.1.1. Fault managed resource identifiers
        2. 12.1.2. Fault management versus service management
      2. 12.2. Fault Management Overview
        1. 12.2.1. FMD pluggable modules
        2. 12.2.2. Knowledge articles
        3. 12.2.3. Fault management hardware support
      3. 12.3. Fault Management Commands
        1. 12.3.1. fmadm
        2. 12.3.2. fmstat
        3. 12.3.3. fmdump
        4. 12.3.4. Other fault management commands
      4. 12.4. Using Fault Management
      5. 12.5. Resources
      6. 12.6. Summary
    2. 13. Service Management
      1. 13.1. Processes and Services
      2. 13.2. SMF By Example
        1. 13.2.1. The service manifest
          1. 13.2.1.1. Service declaration
          2. 13.2.1.2. Dependencies
          3. 13.2.1.3. Dependents
          4. 13.2.1.4. Methods
          5. 13.2.1.5. Property groups
          6. 13.2.1.6. Stability and templates
        2. 13.2.2. Service method script
        3. 13.2.3. Service management commands
          1. 13.2.3.1. svcs
          2. 13.2.3.2. svcadm
          3. 13.2.3.3. svccfg
          4. 13.2.3.4. svcprop
      3. 13.3. SMF Machinery
        1. 13.3.1. Restarters
        2. 13.3.2. SMF repository
        3. 13.3.3. The manifest-import service
        4. 13.3.4. Milestones and init compatibility
        5. 13.3.5. Profiles
      4. 13.4. Customizing SMF Services
      5. 13.5. Resources
      6. 13.6. Summary
    3. 14. Monitoring and Observability
      1. 14.1. Getting System Configuration Information
      2. 14.2. Primary Utilities
        1. 14.2.1. uptime
        2. 14.2.2. ps
        3. 14.2.3. prstat
        4. 14.2.4. vmstat
        5. 14.2.5. mpstat
        6. 14.2.6. iostat
      3. 14.3. /proc
      4. 14.4. Kstats
      5. 14.5. Other Utilities
        1. 14.5.1. cpustat
        2. 14.5.2. truss
        3. 14.5.3. intrstat
        4. 14.5.4. lockstat
        5. 14.5.5. sar
      6. 14.6. Logs
        1. 14.6.1. syslog
        2. 14.6.2. Log management
        3. 14.6.3. User activity
      7. 14.7. SNMP
      8. 14.8. Resources
      9. 14.9. Summary
    4. 15. DTrace
      1. 15.1. Getting Started
      2. 15.2. Tracing Syntax
        1. 15.2.1. Program structure
        2. 15.2.2. Probes
          1. 15.2.2.1. What is a probe?
          2. 15.2.2.2. What probes are available?
          3. 15.2.2.3. Providers
          4. 15.2.2.4. The module and function
          5. 15.2.2.5. Advanced probe specification
          6. 15.2.2.6. dtrace provider probes
        3. 15.2.3. Predicates
          1. 15.2.3.1. Predicate syntax
          2. 15.2.3.2. Complex control flow
        4. 15.2.4. Actions
          1. 15.2.4.1. Types and variables
            1. 15.2.4.1.1. Pointers
            2. 15.2.4.1.2. Scalar arrays
            3. 15.2.4.1.3. Associative arrays
          2. 15.2.4.2. Macros
            1. 15.2.4.2.1. Macro arguments
            2. 15.2.4.2.2. Target process ID
          3. 15.2.4.3. Simple expressions
          4. 15.2.4.4. Built-in functions
          5. 15.2.4.5. Aggregations
      3. 15.3. The dtrace Command
      4. 15.4. Advanced Tracing
        1. 15.4.1. Tracing during boot
        2. 15.4.2. Buffering
          1. 15.4.2.1. switch
          2. 15.4.2.2. fill
          3. 15.4.2.3. ring
          4. 15.4.2.4. Additional buffer tuning
        3. 15.4.3. Speculative tracing
        4. 15.4.4. Postmortem tracing
        5. 15.4.5. Standalone programs
      5. 15.5. User-Level and High-Level Language Tracing
        1. 15.5.1. The pid provider
        2. 15.5.2. The sdt provider
        3. 15.5.3. User-level data
          1. 15.5.3.1. User-level stack
          2. 15.5.3.2. User-level registers
        4. 15.5.4. Tracing Java programs
          1. 15.5.4.1. The jstack function
          2. 15.5.4.2. hotspot probes
        5. 15.5.5. Tracing programs in other languages
          1. 15.5.5.1. Perl
          2. 15.5.5.2. PHP
          3. 15.5.5.3. Python
          4. 15.5.5.4. Ruby and Ruby on Rails
          5. 15.5.5.5. Others
      6. 15.6. Resources
      7. 15.7. Summary
    5. 16. Clustering OpenSolaris for High Availability
      1. 16.1. Introduction to High-Availability Clusters
      2. 16.2. Overview of Open High Availability Cluster
        1. 16.2.1. Cluster infrastructure
        2. 16.2.2. Cluster agents
      3. 16.3. Setting Up a Cluster
        1. 16.3.1. Hardware requirements and configuration
          1. 16.3.1.1. Nodes
          2. 16.3.1.2. Shared storage
          3. 16.3.1.3. Quorum device
          4. 16.3.1.4. Private cluster interconnect
          5. 16.3.1.5. Public network
          6. 16.3.1.6. Local disk file system and partitioning
        2. 16.3.2. Installing the cluster software
        3. 16.3.3. Configuring the cluster
      4. 16.4. Using the Cluster
        1. 16.4.1. Managing services
        2. 16.4.2. Making Apache highly available
          1. 16.4.2.1. Configuring failover storage
            1. 16.4.2.1.1. Creating a zpool
            2. 16.4.2.1.2. Making the zpool highly available
            3. 16.4.2.1.3. Configuring Apache to use the highly available zpool
          2. 16.4.2.2. Configuring logical hostname networking
          3. 16.4.2.3. Configuring failover Apache
        3. 16.4.3. Making Apache scalable
          1. 16.4.3.1. Configuring global storage
            1. 16.4.3.1.1. Creating a global file system
            2. 16.4.3.1.2. Configuring Apache to use the cluster file system
          2. 16.4.3.2. Configuring scalable networking
          3. 16.4.3.3. Configuring scalable Apache
      5. 16.5. Advanced Cluster Administration
        1. 16.5.1. Shutting down the cluster
        2. 16.5.2. Service management
          1. 16.5.2.1. Resource types
          2. 16.5.2.2. Resource groups
            1. 16.5.2.2.1. Resource group life cycles
            2. 16.5.2.2.2. Resource group properties
          3. 16.5.2.3. Resources
            1. 16.5.2.3.1. Resource life cycles
            2. 16.5.2.3.2. Resource properties
        3. 16.5.3. Volume management
        4. 16.5.4. Zones As Logical Nodes
          1. 16.5.4.1. Configuring failover storage
          2. 16.5.4.2. Configuring logical hostname networking
          3. 16.5.4.3. Configuring failover Apache
        5. 16.5.5. Network load balancing
        6. 16.5.6. Other cluster commands
      6. 16.6. Making Custom Services Highly Available
        1. 16.6.1. SMF Proxy
        2. 16.6.2. Generic data service
      7. 16.7. Disaster Recovery with Open High Availability Cluster
        1. 16.7.1. Terminology
          1. 16.7.1.1. Recovery Point Objective
          2. 16.7.1.2. Recovery Time Objective
        2. 16.7.2. Open HA Cluster Geographic Edition
        3. 16.7.3. Setting up a Geographic Edition configuration
          1. 16.7.3.1. Application management
          2. 16.7.3.2. Heartbeat
          3. 16.7.3.3. Data replication
            1. 16.7.3.3.1. Supplied replication control modules
            2. 16.7.3.3.2. Custom mechanisms
        4. 16.7.4. Topology and architecture
        5. 16.7.5. Installing and configuring Geographic Edition
          1. 16.7.5.1. Cluster names
          2. 16.7.5.2. Configuring a partnership
            1. 16.7.5.2.1. Starting the framework
            2. 16.7.5.2.2. Configuring trust between clusters
            3. 16.7.5.2.3. Creating the partnership
          3. 16.7.5.3. Configuring a protection group
            1. 16.7.5.3.1. Creating the protection group
            2. 16.7.5.3.2. Adding an AVS device group to the protection group
            3. 16.7.5.3.3. Adding an application resource group to the protection group
            4. 16.7.5.3.4. Copying the protection group information to the remote cluster
            5. 16.7.5.3.5. Activating the protection group
        6. 16.7.6. Geographic Edition operations
          1. 16.7.6.1. Switchover
          2. 16.7.6.2. Takeover
          3. 16.7.6.3. Customizing changeover functionality
          4. 16.7.6.4. Monitoring the framework
      8. 16.8. Resources
      9. 16.9. Summary
  10. V. OpenSolaris Virtualization
    1. 17. Virtualization Overview
      1. 17.1. Benefits of Virtualization
      2. 17.2. Types of Virtualization
        1. 17.2.1. Resource management
        2. 17.2.2. Operating-system-level virtualization
        3. 17.2.3. Full virtualization
          1. 17.2.3.1. Types of hypervisors
          2. 17.2.3.2. Fully virtualized operating systems versus paravirtualization
        4. 17.2.4. Comparison of virtualization layers
        5. 17.2.5. Other virtualization solutions
      3. 17.3. Comparing Virtualization Solutions
      4. 17.4. Virtualization and a Graphical Display
      5. 17.5. Virtualization Administration
      6. 17.6. Summary
    2. 18. Resource Management
      1. 18.1. Introduction to Resource Management
      2. 18.2. Projects and Tasks
        1. 18.2.1. The project database
        2. 18.2.2. Determining the default project
        3. 18.2.3. Changing tasks
        4. 18.2.4. Configuring projects
          1. 18.2.4.1. Project membership
          2. 18.2.4.2. Project attributes
        5. 18.2.5. Managing by project and task
      3. 18.3. Resource Controls
        1. 18.3.1. Using rctls
        2. 18.3.2. rctl Syntax
        3. 18.3.3. rctl list
        4. 18.3.4. Project rctls
      4. 18.4. Resource Caps
      5. 18.5. Resource Pools
        1. 18.5.1. Configuring a pool
        2. 18.5.2. Binding a pool to a project
        3. 18.5.3. Dynamically binding to a pool
        4. 18.5.4. Monitoring pools
        5. 18.5.5. Advanced pool configuration
          1. 18.5.5.1. Static versus dynamic configuration
          2. 18.5.5.2. Modifying the configuration
          3. 18.5.5.3. Pool properties
        6. 18.5.6. The dynamic pool daemon
      6. 18.6. Processor Sets
      7. 18.7. Scheduling
        1. 18.7.1. The Fair Share Scheduler
        2. 18.7.2. Managing scheduling classes
        3. 18.7.3. CPU caps
      8. 18.8. Accounting
        1. 18.8.1. Legacy accounting
        2. 18.8.2. Extended accounting
      9. 18.9. Resources
      10. 18.10. Summary
    3. 19. Zones
      1. 19.1. Introduction to Zones
      2. 19.2. Uses of Zones
      3. 19.3. Getting Started with Zones
        1. 19.3.1. Configuring a zone
        2. 19.3.2. Installing a zone
        3. 19.3.3. Booting a zone
        4. 19.3.4. Logging in to a zone
        5. 19.3.5. Halting a zone
      4. 19.4. Advanced Zone Configuration
        1. 19.4.1. Resource management
          1. 19.4.1.1. Resource controls
          2. 19.4.1.2. The fair share scheduler
          3. 19.4.1.3. Pools
          4. 19.4.1.4. Capped CPU usage
          5. 19.4.1.5. Capped memory
          6. 19.4.1.6. Resource management example
        2. 19.4.2. Networking
        3. 19.4.3. Sparse root versus whole root
        4. 19.4.4. Other zonecfg features
          1. 19.4.4.1. Editing properties and resources
          2. 19.4.4.2. Additional properties and resources
            1. 19.4.4.2.1. Global properties
            2. 19.4.4.2.2. Resources
            3. 19.4.4.2.3. Summary of all zonecfg properties and resources
            4. 19.4.4.2.4. Additional zonecfg subcommands
      5. 19.5. Advanced zoneadm Features
        1. 19.5.1. Moving a zone on the same machine
        2. 19.5.2. Moving a zone from one machine to another
        3. 19.5.3. Cloning a zone
        4. 19.5.4. Uninstalling a zone
      6. 19.6. Ongoing Zones Administration
        1. 19.6.1. Preconfiguring system identity
        2. 19.6.2. Zones-related processes
        3. 19.6.3. Accessing a zone
        4. 19.6.4. Monitoring
          1. 19.6.4.1. Zone states
          2. 19.6.4.2. Tools
          3. 19.6.4.3. DTrace
        5. 19.6.5. Dynamically reconfiguring a zone
        6. 19.6.6. SMF
        7. 19.6.7. Backup and restore
        8. 19.6.8. Software management
        9. 19.6.9. Other tools
      7. 19.7. Limitations to Zones
      8. 19.8. Branded Zones
        1. 19.8.1. The ipkg brand
        2. 19.8.2. The lx brand
        3. 19.8.3. Experimental Linux 2.6 support
        4. 19.8.4. Other brands
        5. 19.8.5. Implementation
      9. 19.9. Resources
      10. 19.10. Summary
    4. 20. xVM Hypervisor
      1. 20.1. xVM Concepts
      2. 20.2. Getting Started with xVM
        1. 20.2.1. Installing the xVM software and booting under the hypervisor
        2. 20.2.2. Configuring and installing a guest domain
        3. 20.2.3. Logging in to a guest domain
        4. 20.2.4. Basic management of a guest domain
      3. 20.3. Advanced xVM Administration
        1. 20.3.1. Command line interfaces
        2. 20.3.2. Installation
          1. 20.3.2.1. Basic installation
          2. 20.3.2.2. Installing OpenSolaris in a paravirtualized domain
          3. 20.3.2.3. Cloning a domain
        3. 20.3.3. Monitoring
        4. 20.3.4. Ongoing management
          1. 20.3.4.1. Reconfiguration
          2. 20.3.4.2. Starting and stopping a domain
          3. 20.3.4.3. Automatically starting and stopping a domain
          4. 20.3.4.4. Boot arguments
        5. 20.3.5. Domain console
          1. 20.3.5.1. Paravirtualized domain console access
          2. 20.3.5.2. HVM domain console access
        6. 20.3.6. SMF services
      4. 20.4. Live Migration
        1. 20.4.1. Enabling live migration
        2. 20.4.2. Migrating a domain
      5. 20.5. Virtual Devices
        1. 20.5.1. CPUs
          1. 20.5.1.1. Monitoring
          2. 20.5.1.2. Scheduling
          3. 20.5.1.3. CPU affinity
          4. 20.5.1.4. Dom0 CPUs
        2. 20.5.2. Memory
        3. 20.5.3. Virtual disks
        4. 20.5.4. Networking
        5. 20.5.5. Other devices
        6. 20.5.6. Devices in HVM domains
      6. 20.6. Troubleshooting
        1. 20.6.1. Logs
        2. 20.6.2. DomU core dumps
        3. 20.6.3. Dom0 core dump
        4. 20.6.4. DTrace
      7. 20.7. Resources
      8. 20.8. Summary
    5. 21. Logical Domains (LDoms)
      1. 21.1. Introduction to LDoms
      2. 21.2. LDom Concepts
        1. 21.2.1. Types of domains
        2. 21.2.2. Types of services and devices
      3. 21.3. Getting Started with LDoms
        1. 21.3.1. Checking the firmware
        2. 21.3.2. Installing the management software
        3. 21.3.3. Administrative privileges
        4. 21.3.4. Configuring the control domain
        5. 21.3.5. Configuring a guest domain
        6. 21.3.6. Logging in to a guest domain
        7. 21.3.7. Booting and installing a guest domain
      4. 21.4. Advanced LDom Administration
        1. 21.4.1. Monitoring
          1. 21.4.1.1. ldm list output
            1. 21.4.1.1.1. Domain states and flags
            2. 21.4.1.1.2. UTIL and UPTIME
          2. 21.4.1.2. MIB
        2. 21.4.2. ldmd daemon
        3. 21.4.3. Delayed reconfiguration
        4. 21.4.4. Virtual I/O services
          1. 21.4.4.1. The Virtual Disk Service
          2. 21.4.4.2. The Virtual Switch Service
          3. 21.4.4.3. The Virtual Console Concentrator Service
        5. 21.4.5. Physical I/O
        6. 21.4.6. Creating services in a different domain
        7. 21.4.7. CPU, memory, and MAU
        8. 21.4.8. Virtual Disks
        9. 21.4.9. Networking
        10. 21.4.10. Console
        11. 21.4.11. Variables
        12. 21.4.12. Other administrative subcommands
        13. 21.4.13. Managing configurations on the system controller
        14. 21.4.14. Migrating a domain from one machine to another
        15. 21.4.15. Hardening the control domain
      5. 21.5. Resources
      6. 21.6. Summary
    6. 22. VirtualBox
      1. 22.1. Getting Started
        1. 22.1.1. Configuring and installing a virtual machine
        2. 22.1.2. Booting and installing the guest OS
      2. 22.2. Managing VirtualBox
        1. 22.2.1. The running VM window
          1. 22.2.1.1. Menus
          2. 22.2.1.2. Icons
        2. 22.2.2. The VirtualBox management GUI
      3. 22.3. Advanced Features
        1. 22.3.1. Guest additions
        2. 22.3.2. The management CLI
        3. 22.3.3. Networking
        4. 22.3.4. Storage
        5. 22.3.5. Remote access
        6. 22.3.6. Programmatic interfaces
        7. 22.3.7. Running within a zone
      4. 22.4. Resources
      5. 22.5. Summary
  11. VI. Deploying and Developing on OpenSolaris
    1. 23. Deploying a Web Stack on OpenSolaris
      1. 23.1. The Web Stack on OpenSolaris
      2. 23.2. The AMP Stack
        1. 23.2.1. Installing the AMP stack
        2. 23.2.2. Configuring Apache
        3. 23.2.3. Configuring PHP
        4. 23.2.4. Configuring MySQL
          1. 23.2.4.1. Installing phpMyAdmin
          2. 23.2.4.2. Changing the root password
        5. 23.2.5. Web applications
        6. 23.2.6. Alternatives to Apache, MySQL, and PHP
          1. 23.2.6.1. Sun Java System Web Server
          2. 23.2.6.2. PostgreSQL
          3. 23.2.6.3. Languages other than PHP
      3. 23.3. Java-based Web Services
        1. 23.3.1. Apache Tomcat
          1. 23.3.1.1. Installing Apache Tomcat
          2. 23.3.1.2. Configuring Apache Tomcat in stand-alone mode
          3. 23.3.1.3. Example: Apache Roller
        2. 23.3.2. GlassFish Application Server
      4. 23.4. Resources
      5. 23.5. Summary
    2. 24. Developing on OpenSolaris
      1. 24.1. Java Development
        1. 24.1.1. Compilers and tools
        2. 24.1.2. Debugging with JDB
          1. 24.1.2.1. Introduction to JDB
          2. 24.1.2.2. JDB commands
      2. 24.2. C and C++ Development
        1. 24.2.1. Compilers and tools
          1. 24.2.1.1. Sun Studio
          2. 24.2.1.2. GNU tools
        2. 24.2.2. OpenSolaris C APIs
        3. 24.2.3. Debugging
          1. 24.2.3.1. dbx and GDB
            1. 24.2.3.1.1. dbx example
            2. 24.2.3.1.2. GDB example
            3. 24.2.3.1.3. Attaching to live processes
            4. 24.2.3.1.4. Debugging core files
            5. 24.2.3.1.5. dbx and GDB command summary
          2. 24.2.3.2. MDB
          3. 24.2.3.3. Libumem
      3. 24.3. Other Languages
        1. 24.3.1. Perl
        2. 24.3.2. Python
        3. 24.3.3. Ruby on Rails
        4. 24.3.4. PHP
        5. 24.3.5. Shell scripting
      4. 24.4. Build Automation
      5. 24.5. NetBeans
        1. 24.5.1. NetBeans overview
        2. 24.5.2. NetBeans for Java
          1. 24.5.2.1. Files
          2. 24.5.2.2. Navigation
          3. 24.5.2.3. Building and running
          4. 24.5.2.4. Debugging
          5. 24.5.2.5. Profiling
          6. 24.5.2.6. Java GUI applications
        3. 24.5.3. NetBeans C and C++ development
          1. 24.5.3.1. Files
          2. 24.5.3.2. Navigation
          3. 24.5.3.3. Building and running
          4. 24.5.3.4. Debugging
        4. 24.5.4. NetBeans plug-ins
        5. 24.5.5. NetBeans web application development
          1. 24.5.5.1. Plug-ins for web applications
          2. 24.5.5.2. Web application Palette
          3. 24.5.5.3. Debugging and profiling web applications
      6. 24.6. Source Code Management
        1. 24.6.1. CVS
          1. 24.6.1.1. Creating a repository
          2. 24.6.1.2. Checking out a repository
          3. 24.6.1.3. Working with a repository
          4. 24.6.1.4. Handling conflicts
          5. 24.6.1.5. Viewing history
        2. 24.6.2. Subversion
          1. 24.6.2.1. Creating a repository
          2. 24.6.2.2. Configuring a Subversion server
          3. 24.6.2.3. Checking out a repository
          4. 24.6.2.4. Working with a repository
          5. 24.6.2.5. Handling conflicts
          6. 24.6.2.6. Viewing history
        3. 24.6.3. Mercurial
          1. 24.6.3.1. Creating a repository
          2. 24.6.3.2. Cloning a repository
          3. 24.6.3.3. Working with a repository
          4. 24.6.3.4. Handling conflicts
          5. 24.6.3.5. Viewing history
      7. 24.7. Building IPS Packages
        1. 24.7.1. IPS actions
        2. 24.7.2. IPS package example
          1. 24.7.2.1. Preparing the IPS package
          2. 24.7.2.2. Sending the IPS package
          3. 24.7.2.3. Installing the package
      8. 24.8. Crash Dumps and Kernel Debugging
        1. 24.8.1. Core files and crash dumps
          1. 24.8.1.1. Process core files
          2. 24.8.1.2. Crash dumps
        2. 24.8.2. Kernel debugging
          1. 24.8.2.1. mdb -k
          2. 24.8.2.2. kmdb
          3. 24.8.2.3. kmem_flags
      9. 24.9. Resources
      10. 24.10. Summary