<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Seeds of Genius &#187; Solaris</title>
	<atom:link href="http://www.seedsofgenius.net/category/solaris/feed" rel="self" type="application/rss+xml" />
	<link>http://www.seedsofgenius.net</link>
	<description>Defining Value Add</description>
	<lastBuildDate>Fri, 03 Sep 2010 19:17:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Solaris Tips: Flash Archive (FLAR) with Zones</title>
		<link>http://www.seedsofgenius.net/solaris/solaris-tips-flash-archive-flar-with-zones</link>
		<comments>http://www.seedsofgenius.net/solaris/solaris-tips-flash-archive-flar-with-zones#comments</comments>
		<pubDate>Fri, 03 Sep 2010 18:37:33 +0000</pubDate>
		<dc:creator>bwagner</dc:creator>
				<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=363</guid>
		<description><![CDATA[Issue
At least as of Solaris 10 10/09 (Update 8), Solaris Flash Archive technology is not compatible with Solaris Zones, making systems with zones more difficult to clone and deploy.
See Solaris [...]]]></description>
			<content:encoded><![CDATA[<h2>Issue</h2>
<p>At least as of Solaris 10 10/09 (Update 8), Solaris Flash Archive technology is not compatible with Solaris Zones, making systems with zones more difficult to clone and deploy.</p>
<p>See <a href="http://docs.sun.com/app/docs/doc/821-0436/flash-240?l=en&amp;a=view">Solaris Flash (Planning)</a> for details</p>
<h2>Workaround</h2>
<p>The solution is to handle the zones separately using the zone clone/migration features. In the example below, we will be cloning a single zone, zone1, so that we can leave the clone detached and accessible. Newly flashed systems, on first boot, will copy the detached, cloned zone data to their primary zone1 root, then they will attach the copied data to their preconfigured zone1.</p>
<p>1. Create a one-time boot script for the destination system(s) to copy and attach the zone data</p>
<blockquote><p># vi /etc/rc3.d/S99zone_attach</p>
<p>#!/sbin/sh<br />
/usr/bin/test -d /zones/zone1 || /usr/bin/mkdir -p /zones/zone1<br />
/usr/bin/chmod 700 /zones/zone1<br />
/usr/bin/cp -rp /net/master/zones/zone1_clone /zones/zone1<br />
/usr/sbin/zoneadm -z zone1 attach<br />
/usr/bin/rm /etc/rc3.d/S99zone_attach<br />
exit 0<br />
:wq!</p>
<p># chmod a+x /etc/rc3.d/S99zone_attach</p></blockquote>
<p>Note: This is just a simplified example. Be sure to modify the above script to account for changes in the flar master server and zone names. Additional modifications may also be necessary to account for alternate zone data locations or changes to the zone configuration.</p>
<p>2. Detach the primary zone</p>
<blockquote><p># zoneadm -z zone1 detach</p></blockquote>
<p>3. Create the flash archive</p>
<blockquote><p># flarcreate -n s10zones -x /zones /var/archives/s10zones.flar</p></blockquote>
<p>This archive will contain the one-time first boot script necessary for obtaining and attaching the cloned zone data below.</p>
<p>4. Re-attach the zone</p>
<blockquote><p># zoneadm -z zone1 attach</p></blockquote>
<p>5. Set up the new zone, copy the configuration and clone the install data</p>
<blockquote><p># mkdir /zones/zone1_clone; chmod 700 /zones/zone1_clone<br />
# zonecfg -z zone1 export | zonecfg -z zone1_clone -f -<br />
# zoneadm -z zone1_clone clone zone1</p></blockquote>
<p>6. Detach the new zone</p>
<blockquote><p># zoneadm -z zone1_clone detach</p></blockquote>
<p>7. Delete the cloned zone configuration</p>
<blockquote><p># zonecfg -z zone1_clone delete</p></blockquote>
<p>8. Export the detached, cloned zone filesystem</p>
<blockquote><p># share -o ro /zones/zone1_clone</p></blockquote>
<ul>
<li>More information about cloning zones is here: <a href="http://docs.sun.com/app/docs/doc/817-1592/z.inst.task-1?l=en&amp;a=view">Installing, Booting, Halting, Uninstalling, and Cloning Non-Global Zones</a></li>
</ul>
<ul>
<li>More information about zone migration is here: <a href="http://docs.sun.com/app/docs/doc/817-1592/gcgnc?l=en&amp;a=view">Moving and Migrating Non-Global Zones</a></li>
</ul>
<ul>
<li>More information about flash archives is here: <a href="http://docs.sun.com/app/docs/doc/821-0436?l=en">Solaris 10 10/09 Installation Guide: Solaris Flash Archives (Creation  and Installation)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/solaris-tips-flash-archive-flar-with-zones/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris Tips: Unencapsulate SVM root mirror</title>
		<link>http://www.seedsofgenius.net/solaris/quick-reference-unencapsulate-svm-root-mirror</link>
		<comments>http://www.seedsofgenius.net/solaris/quick-reference-unencapsulate-svm-root-mirror#comments</comments>
		<pubDate>Wed, 01 Sep 2010 19:09:11 +0000</pubDate>
		<dc:creator>bwagner</dc:creator>
				<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=349</guid>
		<description><![CDATA[Often times administrators must boot a Solaris from alternate media  in single user mode (failsafe, cd/dvdrom, or network image) in order to  make repairs to the installed OS. [...]]]></description>
			<content:encoded><![CDATA[<p>Often times administrators must boot a Solaris from alternate media  in single user mode (failsafe, cd/dvdrom, or network image) in order to  make repairs to the installed OS. In this environment, no Solaris Volume  Manager (SVM) module is loaded, so if the OS is mirrored it is  impossible to work on the installed OS without de-synchronizing the  mirrors. Attempting to boot or run Solaris on descynchronized mirrors is  extremely unstable and it may cause kernel panics or worse, data  corruption.</p>
<p>The supported method for dealing with this is to make changes to only one side of the mirror, then unencapsulate the root mirror before rebooting/resyncing.</p>
<p>1. Mount the root slice on one side of the mirror and make necessary repairs</p>
<blockquote><p># mount /dev/dsk/c0t0d0s0 /a</p></blockquote>
<p>2. Backup the SVM configuration</p>
<blockquote><p># cp /a/etc/vfstab /a/etc/vfstab.svm<br />
# cp /a/etc/system /a/etc/system.svm</p></blockquote>
<p>3. Update /etc/vfstab and /etc/system to boot from plain slices on the repaired side of the mirror</p>
<blockquote><p># vi /a/etc/vfstab<br />
(return all md devices to plain slices)</p>
<p># vi /a/etc/system<br />
(comment out rootdev line)</p></blockquote>
<p>4. Reboot</p>
<blockquote><p># init 0<br />
ok boot -r</p></blockquote>
<p>5. Once the system is up, split the metadevice</p>
<blockquote><p># metadetach &lt;mirror device&gt; &lt;secondary submirror&gt;<br />
(repeat for all mirrored slices)</p></blockquote>
<p>6. Restore the configuration files in order to re-encapsulate, so the system boots on single-disk (single sub-mirror) mirror metadevices</p>
<blockquote><p># mv /etc/system.svm /etc/system<br />
# mv /etc/vfstab.svm /etc/vfstab</p></blockquote>
<p>7. Reboot</p>
<blockquote><p># init 6</p></blockquote>
<p>8. After reboot, sync the mirrors</p>
<blockquote><p># metattach &lt;mirror device&gt; &lt;secondary submirror&gt;<br />
(repeat for all mirror slices)</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/quick-reference-unencapsulate-svm-root-mirror/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris Tips: Repairing the Boot Archive</title>
		<link>http://www.seedsofgenius.net/solaris/solaris-tips-repairing-the-boot-archive</link>
		<comments>http://www.seedsofgenius.net/solaris/solaris-tips-repairing-the-boot-archive#comments</comments>
		<pubDate>Wed, 01 Sep 2010 17:37:52 +0000</pubDate>
		<dc:creator>bwagner</dc:creator>
				<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=337</guid>
		<description><![CDATA[The Solaris boot archive, introduced in Solaris 10 10/08 (update 6) on SPARC (it&#8217;s in the X86 version since the 1/06 release), is similar to the initrd in Linux. It [...]]]></description>
			<content:encoded><![CDATA[<p>The Solaris boot archive, introduced in Solaris 10 10/08 (update 6) on SPARC (it&#8217;s in the X86 version since the 1/06 release), is similar to the initrd in Linux. It is &#8220;a collection of core kernel modules and configuration files packed in either UFS or ISOFS format.&#8221;</p>
<p>The boot archive is managed by two services:</p>
<blockquote><p>svc:/system/boot-archive:default<br />
svc:/system/boot-archive-update:default</p></blockquote>
<p>The first checks, during boot, the contents of the boot archive against the files in the root filesystem. If there are any inconsistencies, the service drops to maintenance mode, preventing a full boot. While this can often be ignored, it may be necessary to re-create the boot archive from scratch (see below).</p>
<p>The second service updates the boot archive during a graceful shutdown or reboot, ensuring it is consistent with the equivalent files in the root filesystem for the next boot. A sudden or non-graceful shutdown is likely to leave the boot archive out of sync, resulting in the boot-archive service dropping to maintenance mode on the next boot.</p>
<p>If the contents of the boot archive do not match the files on the root filesystem, the following warning is displayed:</p>
<blockquote><p>WARNING: The following files in / differ from the boot archive:</p></blockquote>
<p>&#8230;along with a list of culprit files. If the list is empty, there may be some other problem, but in most cases, the archive simply needs to be updated. You can try ignoring the issue with the command # svcadm  clear boot-archive and on next shutdown the archive will be updated automatically, but the best way to deal with this issue is to recreate the boot archive while booted from alternate media; either from Failsafe mode, cd/dvd media, or a network image in single user mode.</p>
<blockquote><p>ok boot -F failsafe<br />
ok boot cdrom -s<br />
ok boot net -s</p></blockquote>
<p>1) Mount the root filesystem if it is not mounted already</p>
<blockquote><p># mount /dev/dsk/c0t0d0s0 /a</p></blockquote>
<p>2) Remove the old archive (important, since simply updating the archive may not be sufficient for successful boot)</p>
<blockquote><p># rm -f /a/platform/`uname -i`/boot_archive</p></blockquote>
<p>3) Finally, recreate it</p>
<blockquote><p># /usr/sbin/bootadm -R /a update-archive</p></blockquote>
<p>4) Reboot</p>
<blockquote><p># init 6</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/solaris-tips-repairing-the-boot-archive/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Reference: ZFS vs Btrfs</title>
		<link>http://www.seedsofgenius.net/uncategorized/zfs-vs-btrfs-a-reference</link>
		<comments>http://www.seedsofgenius.net/uncategorized/zfs-vs-btrfs-a-reference#comments</comments>
		<pubDate>Fri, 20 Aug 2010 18:11:05 +0000</pubDate>
		<dc:creator>bwagner</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ZFS BtrFS Filesystem Linux Solaris]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=308</guid>
		<description><![CDATA[ZFS vs BtrFS

This guide is not a discussion on which is better: ZFS or BtrFS (While many may argue that the fundamental design of BtrFS is superior, it is an [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom: 0in;"><strong>ZFS vs BtrFS</strong></p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;"><span style="font-weight: normal;">This guide is not a discussion on which is better: ZFS or BtrFS (While many may argue that the fundamental design of BtrFS is superior, it is an unavoidable fact that ZFS is far older and thus more mature in terms of features, stability, and usability). Rather, it is meant to be used as a practical administrative reference containing instructions for performing some basic tasks in BtrFS, targeted at administrators who may be more familiar with ZFS concepts.</span></p>
<p style="margin-bottom: 0in;">
<p><strong> </strong></p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;"><strong>Note 1: This table was generated using Btrfs v0.19, included in the 2.6.33 kernel shipped with Fedora 13. </strong></span></p>
<p><strong><strong> </strong></strong></p>
<p style="margin-bottom: 0in;"><span style="font-weight: normal;"><strong><strong>Note 2: The btrfs command aggregates the functionality of several legacy commands: btrfsctl, btrfs-show, and btrfs-vol. Each of the tasks below can be accomplished with these legacy commands as an alternative.</strong></strong></span></p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">
<p><strong><strong><strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong><br />
<strong> </strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></p>
<table border="1" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000">
<col width="51*"></col>
<col width="51*"></col>
<col width="51*"></col>
<col width="51*"></col>
<col width="51*"></col>
<tbody>
<tr valign="TOP">
<th width="20%">ZFS Task</th>
<th width="20%">ZFS Command</th>
<th width="20%">Notes</th>
<th width="20%">BtrFS Command</th>
<th width="20%">BtrFS Equivalent Task</th>
</tr>
<tr valign="TOP">
<td width="20%">Create a mirrored pool and mount it</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zpool create 			mirror c0t0d0 c0t1d0 pool1</span></span></td>
<td width="20%"><span style="font-size: x-small;">ZFS top-level filesystem is automatically mounted 			at /&lt;poolname&gt;</span></p>
<p><span style="font-size: x-small;">Multi-device BtrFS top-level filesystem can be 			mounted using any device in the “pool.”</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mkfs.btrfs 			-L pool1 -d raid1 -m raid1 /dev/sda /dev/sdb</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mkdir /pool1</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mount 			/dev/sda /pool1</span></span></td>
<td width="20%">Create a mirrored filesystem and mount it</td>
</tr>
<tr valign="TOP">
<td width="20%">Find and Import an existing zpool</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zpool import</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zpool import 			pool1</span></span></td>
<td width="20%"></td>
<td width="20%">
<pre><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs device scan</span></span>
<span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mount /dev/sda /pool1</span></span></pre>
</td>
<td width="20%">Find and Mount an existing BtrFS filesystem</td>
</tr>
<tr valign="TOP">
<td width="20%">Expand a pool (dynamic restriping)</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zpool add 			pool1 c0t2d0</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">or</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zpool add 			pool1 mirror c0t2d0 c0t3d0</span></span></td>
<td width="20%"><span style="font-size: x-small;">ZFS: possible to convert from 			RAID1 to RAID10 using this method</span></p>
<p><span style="font-size: x-small;">BtrFS: metadata must be balanced 			to the new device after adding</span></td>
<td width="20%">
<pre><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs device add -a /dev/sdc /pool1</span></span>
<span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs device balance /pool1</span></span></pre>
</td>
<td width="20%">Expand a filesystem (dynamic restriping)</td>
</tr>
<tr valign="TOP">
<td width="20%">Convert to mirror</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zpool attach 			pool1 c0t0d0 c0t1d0</span></span></td>
<td width="20%"><span style="font-size: x-small;">Note yet possible in BtrFS</span></td>
<td width="20%">
<pre><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">N/A</span></span></pre>
</td>
<td width="20%">Convert to mirror</td>
</tr>
<tr valign="TOP">
<td width="20%">Shrink a pool</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">N/A</span></span></td>
<td width="20%"><span style="font-size: x-small;">Not yet possible in ZFS</span></td>
<td width="20%">
<pre><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs device delete /dev/sdc /pool1</span></span></pre>
</td>
<td width="20%">Shrink a filesystem</td>
</tr>
<tr valign="TOP">
<td width="20%">Replace failed or missing device</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zpool 			replace pool1 c0t1d0</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">or</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zpool 			replace pool1 c0t1d0 c0t4d0</span></span></td>
<td width="20%"><span style="font-size: x-small;">ZFS: if disk has already been 			physically replaced, bring the replacement into the pool, 			otherwise swap bad disk with a good one in another location</span></p>
<p><span style="font-size: x-small;">BtrFS: Remove the disk if its 			superblock can still be read, otherwise remount the fs in degraded 			mode and remove the “missing” device. Can be done live: 			unknown</span></td>
<td width="20%">
<pre><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs device delete /dev/sdc /pool1</span></span>
<span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">or</span></span>
<span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mount -o degraded /dev/sdb /pool1</span></span>
<span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs-vol -r missing /pool1</span></span>
<span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs device add /dev/sdb /pool1</span></span>
<span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs device balance /pool1</span></span></pre>
</td>
<td width="20%">Remove failed or failing disk, then add its replacement and 			balance the metadata</td>
</tr>
<tr valign="TOP">
<td width="20%">List pool devices</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zpool status</span></span></td>
<td width="20%"></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			filesystem show</span></span></td>
<td width="20%">List filesystem devices</td>
</tr>
<tr valign="TOP">
<td width="20%">Create a child filesystem (dataset)</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs create 			pool1/dset1</span></span></td>
<td width="20%"><span style="font-size: x-small;">A ZFS dataset refers to a ZFS 			object of type filesystem, snapshot, clone, or (block) volume.</span></p>
<p><span style="font-size: x-small;">A BtrFS subvolume is analogous 			to a ZFS child filesystem dataset</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			subvolume create /pool1/svol1 </span></span></td>
<td width="20%">Create a subvolume</td>
</tr>
<tr valign="TOP">
<td width="20%">Change the mountpoint of a child filesystem</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs unmount 			pool1/dset1 (optional)</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs set 			mountpoint=/apps pool1/dset1</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs mount 			pool1/dset1</span></span></td>
<td width="20%"><span style="font-size: x-small;">ZFS:</span></p>
<p><span style="font-size: x-small;">-Do not mv a ZFS dataset mountpoint directory 			while the FS is mounted</span></p>
<p><span style="font-size: x-small;">-zfs mount/unmount takes either the dataset name 			or the mountpoint as an argument</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mkdir /apps</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mount -o 			subvol=svol1 /dev/sdb /apps</span></span></td>
<td width="20%">Mount a subvolume at an alternate location</td>
</tr>
<tr valign="TOP">
<td width="20%">Rename a dataset</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs rename 			pool1/dset1 pool1/dsetA</span></span></td>
<td width="20%"></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mv 			/pool1/svol1 /pool1/svolA</span></span></td>
<td width="20%">Rename a subvolume</td>
</tr>
<tr valign="TOP">
<td width="20%">Create a read-only snapshot</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs snapshot 			pool1/dset1@snap1</span></span></td>
<td width="20%"><span style="font-size: x-small;">In BtrFS, a snapshot is just a 			subvolume that has initial data</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">unknown</span></span></td>
<td width="20%">Create a read-only snapshot (subvolume)</td>
</tr>
<tr valign="TOP">
<td width="20%">Create a writable snapshot (clone)</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs snapshot 			pool1/dset1@snap1</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs clone  			pool1/dset1@snap1 pool1/dset1_clone</span></span></td>
<td width="20%"><span style="font-size: x-small;">In BtrFS, a snapshot is just a 			subvolume that has initial data</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			subvolume snapshot /pool1/svol1 /pool1/snap1</span></span></td>
<td width="20%">Create a writable snapshot (subvolume)</td>
</tr>
<tr valign="TOP">
<td width="20%">Rollback a snapshot</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs rollback 			pool1/dset@snap1</span></span></td>
<td width="20%"></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			subvolume delete /pool1/svol1</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mv 			/pool1/snap1 /pool1/svol1</span></span></td>
<td width="20%">Rollback a snapshot</td>
</tr>
<tr valign="TOP">
<td width="20%">Delete a snapshot</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs destroy 			pool1/dset1@snap1</span></span></td>
<td width="20%"></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			subvolume delete /pool1/snap1</span></span></td>
<td width="20%">Delete a snapshot subvolume</td>
</tr>
<tr valign="TOP">
<td width="20%">Delete a dataset</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs destroy 			pool1/dset1</span></span></td>
<td width="20%"><span style="font-size: x-small;">ZFS: clones depend on snapshots which depend on 			base datasets. These must be destroyed from the “outside in,” 			but one can promote a clone to become a base dataset, such that 			what was the base becomes a dependent clone (see below)</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			subvolume delete /pool1/svol1</span></span></td>
<td width="20%">Delete a subvolume</td>
</tr>
<tr valign="TOP">
<td width="20%">Promote a clone</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs promote 			pool1/dset1_clone</span></span></td>
<td width="20%"><span style="font-size: x-small;">Rotates dependency of base ← snapshot ← clone, 			such that what was the clone is now a base and the static snapshot 			represents an old image of this base dataset. What once was the 			base is now the clone in the dependency line.</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">N/A</span></span></td>
<td width="20%">N/A</td>
</tr>
<tr valign="TOP">
<td width="20%">Limit the size of a dataset</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs set 			quota=10G pool1/dest1</span></span></td>
<td width="20%"></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			filesystem resize 10g /pool1/svol1</span></span></td>
<td width="20%">Limit the size of a subvolume</td>
</tr>
<tr valign="TOP">
<td width="20%">Restore full size of a dataset</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs set 			quota=off pool1/dset1</span></span></td>
<td width="20%"></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			filesystem resize max /pool1/svol1</span></span></td>
<td width="20%">Restore full size of a subvolumeq</td>
</tr>
<tr valign="TOP">
<td width="20%">Create a virtual block device</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs create 			-V 10G pool1/zvol1</span></span></td>
<td width="20%"><span style="font-size: x-small;">Not yet possible in BtrFS</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">N/A</span></span></td>
<td width="20%">Create a virtual block device</td>
</tr>
<tr valign="TOP">
<td width="20%">List all child datasets</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs list</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">OR</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs list -o 			name,used,avail,mountpoint,mounted</span></span></td>
<td width="20%"></td>
<td width="20%">
<pre><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs subvolume list /pool1</span></span>
<span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">OR</span></span>
<span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mount -o subvol=. /dev/sda /mnt</span></span>
<span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># ls /mnt</span></span></pre>
</td>
<td width="20%">List all subvolumes</td>
</tr>
<tr valign="TOP">
<td width="20%">Enable compression</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs set 			compression=on pool1/dset1</span></span></td>
<td width="20%"><span style="font-size: x-small;">ZFS: can be done live, applies only to newly 			written files</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># mount -o 			subvol=svol1 -o compress /dev/sda /apps</span></span></td>
<td width="20%">Enable compression</td>
</tr>
<tr valign="TOP">
<td width="20%">Convert from legacy FS</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">Solaris Live 			Upgrade or just cp</span></span></td>
<td width="20%"><span style="font-size: x-small;">ZFS: no direct conversion, must copy data to pool</span></p>
<p><span style="font-size: x-small;">BtrFS: Creates BtrFS with ext3/4 data accessible 			as a snapshot/subvolume</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3</span></span></td>
<td width="20%">Convert from legacy FS</td>
</tr>
<tr valign="TOP">
<td width="20%">Snapshot OS (root filesystem)</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">Solaris 10:</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># 			lucreate;luactivate (preferred)</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">OR</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs snapshot 			-r rpool/ROOT@`date`</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">(repeat for 			zones)</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">OpenSolaris:</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">beadm create; 			beadm activate (preferred)</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">OR</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs snapshot 			-r rpool/ROOT@`date`</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">(repeat for 			zones)</span></span></td>
<td width="20%"></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			subvolume snapshot / /root_snap1</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">Then edit boot 			loader/initrd to mount root fs with -o subvol=root_snap1</span></span></td>
<td width="20%">Snapshot OS</td>
</tr>
<tr valign="TOP">
<td width="20%">Upgrade OS leveraging snapshots</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">Solaris 10: 			lucreate;luupgrade;luactivate</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">OpenSolaris: 			pkg image-update</span></span></td>
<td width="20%"></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># yum install 			yum-plugin-fs-snapshot</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># yum update</span></span></td>
<td width="20%">Update Packages leveraging snapshots</td>
</tr>
<tr valign="TOP">
<td width="20%">Check and repair corruption (scrub)</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zpool scrub 			pool1</span></span></td>
<td width="20%"><span style="font-size: x-small;">BtrFS: currently, btrfsck can only identify 			errors, not correct them. Similarly, checksum inconsistencies are 			flagged, but not repairable. Rebalancing may help in some cases</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfsck 			/dev/sda</span></span></p>
<p><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs device 			balance /dev/sda/</span></span></td>
<td width="20%">Check for corruption (fsck)</td>
</tr>
<tr valign="TOP">
<td width="20%">Defragment</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;">N/A</span></span></td>
<td width="20%"><span style="font-size: x-small;">ZFS: Feature coming with block pointer rewrite 			implementation</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			filesystem defragment /pool1</span></span></td>
<td width="20%">Defragment</td>
</tr>
<tr valign="TOP">
<td width="20%">Identify space usage</td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># zfs list</span></span></td>
<td width="20%"><span style="font-size: x-small;">BtrFS: output will be (somewhat) less confusing in 			2.6.34. See https://btrfs.wiki.kernel.org/index.php/Gotchas</span></td>
<td width="20%"><span style="font-family: Courier New,monospace;"><span style="font-size: x-small;"># btrfs 			filesystem df /pool1</span></span></td>
<td width="20%">Identify space usage</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in; font-weight: normal;">
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in"><span style="font-weight: normal">List of things ZFS can do that BtrFS can&#8217;t (yet):</span></p>
<p style="margin-bottom: 0in"><strong>Disks/RAID/Integrity</strong></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Convert to a mirror</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Split mirror (leaving pool identity on secondary disk intact)</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Convert from RAID1 to RAID10</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Replace disk live</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Deduplication</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">RAIDZ/RAIDZ2/RAIDZ3</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Block pointer rewrite: convert RAID types, expand RAIDZ</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Automatic checksum healing</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Recover uberblock</span></p>
<p style="margin-bottom: 0in"><strong>Space management</strong></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Clearly report space usage</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">User/group space accounting</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Set reservation/refreservation/refquota</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Enable compression live</span></p>
<p style="margin-bottom: 0in">
<p style="margin-bottom: 0in"><strong>Administrative options</strong></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">COMSTAR integration</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Solaris Zones integration</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Solaris Live Upgrade integration</span></p>
<p style="margin-bottom: 0in; font-weight: normal">Delegated administration</p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Integrated exporting (CIFS/NFS/iSCSI)</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">NFSv4 ACLs/inheritence properties</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">Mixed case sensitivity</span></p>
<p style="margin-bottom: 0in"><span style="font-weight: normal">ZFS Send/Receive</span></p>
<p style="margin-bottom: 0in">
<p style="margin-bottom: 0in"><strong>Performance tuning</strong></p>
<p style="margin-bottom: 0in; font-weight: normal">Separate ZIL</p>
<p style="margin-bottom: 0in; font-weight: normal">Tunable ARC cache</p>
<p style="margin-bottom: 0in; font-weight: normal">Cache devices</p>
<p style="margin-bottom: 0in; font-weight: normal">
<p style="margin-bottom: 0in">
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/uncategorized/zfs-vs-btrfs-a-reference/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris Authentication Login with Active Directory</title>
		<link>http://www.seedsofgenius.net/solaris/solaris-authentication-login-with-active-directory</link>
		<comments>http://www.seedsofgenius.net/solaris/solaris-authentication-login-with-active-directory#comments</comments>
		<pubDate>Thu, 03 Jun 2010 20:41:33 +0000</pubDate>
		<dc:creator>fcaton</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=301</guid>
		<description><![CDATA[In most  office environments users will have a Windows workstation on their  desktop; most locations do not have users&#8217; log into a Unix/Linux desktop  as their primary [...]]]></description>
			<content:encoded><![CDATA[<p>In most  office environments users will have a Windows workstation on their  desktop; most locations do not have users&#8217; log into a Unix/Linux desktop  as their primary work environment.  In these environments a small  percentage of these users may have a need to connect to their Unix  servers in order to manage databases, application servers, web servers,  etc.  It becomes an administrative nightmare to manage multiple sets of  users for the Windows and the Unix systems.  The reason for this  nightmare is primarily password management. In a lot of cases, Windows  and Unix systems have different password requirements even though they  may be in the same environment.</p>
<p>Often  times, password requirements may differ between the two system types.   This means users will have to use a different password on Windows and  Unix.  Also, when password change dates are not synchronized between the  Windows and Unix systems you&#8217;ll end with users that forget their Unix  passwords on a very frequent basis.</p>
<p>This article is  meant to provide the basic procedures to allow a Solaris system to use  user information provided by Active Directory on a Windows 2008 server  as the authentication method for logging into Solaris.</p>
<p>The  following instructions are cobbled together from several locations on  the internet and from in house testing.<br />
We primarily used the  following two sites, which offer steps on configuration using Windows  2003 R2.  We then made changes where required.</p>
<p><a href="http://blog.scottlowe.org/2006/08/15/solaris-10-and-active-directory-integration/">Sun  Wikis<br />
Scott  Lowe&#8217;s Blog</a></p>
<p><strong><span style="text-decoration: underline;">Our Test Environment</span></strong></p>
<ul type="disc">
<li>Domain Controller Information
<ul type="circle">
<li>Windows  2008 R2</li>
<li>Hostname = win2k8-dc</li>
<li>IP Address = 192.168.3.76</li>
<li>Domain  = test.sog.com</li>
<li>Kerberos Realm = TEST.SOG.COM</li>
</ul>
</li>
<li>Client  Information
<ul type="circle">
<li>Solaris 10_u8 x86</li>
<li>Hostname  = keystone</li>
<li>IP Address = 192.168.3.66</li>
</ul>
</li>
</ul>
<p><span style="font-size: large;"><strong><span style="text-decoration: underline;">Windows Configuration</span></strong></span></p>
<p>It is assumed  that Active Directory is setup and that DNS is configured on the domain  controller.  The steps provided are what you need to do to add Unix  functionality to an already existing Windows AD environment.  The  Solaris clients should be added to the DNS records on the DC.</p>
<p>The  following steps are required to add all additional functionality to the  domain controller to allow for Solaris clients to authenticate against  AD.</p>
<p><strong><span style="text-decoration: underline;">Install UNIX Schema into Active Directory<br />
</span></strong></p>
<p>Open &#8220;Server Manager&#8221; and click on  &#8220;Roles&#8221; in the left pane.  Click on &#8220;Add Role Services&#8221; in the &#8220;Active  Directory Domain Services&#8221; section in the right pane.</p>
<p><img class="alignnone" title="Screenshot #1" src="http://www.seedsofgenius.net/images/1_UNIX_AD_Auth_small.png" alt="" width="717" height="516" /></p>
<hr />Click on the check box to add &#8220;Identitiy  Management for Unix.&#8221;  Remove Password Synchronization then click on &#8220;Next&#8221;</p>
<p><img class="alignnone" title="Screenshot #2" src="http://www.seedsofgenius.net/images/2_UNIX_AD_Auth_small.png" alt="" width="547" height="404" /></p>
<hr />When you  reach the &#8220;Confirm Installation&#8221; page click on &#8220;Install&#8221;</p>
<p><img class="alignnone" title="Screenshot #3" src="http://www.seedsofgenius.net/images/3_UNIX_AD_Auth_small.png" alt="" width="546" height="403" /></p>
<hr />Click on &#8220;Close&#8221; on the next screen.  Your Domain Controller will now reboot.</p>
<p><img class="alignnone" title="Screenshot #5" src="http://www.seedsofgenius.net/images/5_UNIX_AD_Auth_small.png" alt="" width="546" height="403" /></p>
<hr /><strong><span style="text-decoration: underline;">User  Configuration in AD</span></strong></p>
<p>Any users that you want to be able to use  Active Directory for Solaris logins must have the Unix Attributes set  under User Properties for that user.  These properties include the UID,  Primary GID, login shell, and home directory.  (The users’ GECOS will  come from the Display Name setting under the General tab of the users’  properties.)</p>
<p><img class="alignnone" title="Screenshot #7" src="http://www.seedsofgenius.net/images/7_UNIX_AD_Auth.png" alt="" width="440" height="370" /></p>
<p><img class="alignnone" title="Screenshot #8" src="http://www.seedsofgenius.net/images/8_UNIX_AD_Auth.png" alt="" width="440" height="370" /></p>
<p><img class="alignnone" title="Screenshot #9" src="http://www.seedsofgenius.net/images/9_UNIX_AD_Auth.png" alt="" width="440" height="370" /></p>
<p>Under Active Directory Users and Computers Right click the new user account and select Properties.  In the user&#8217;s properties window select the  <em>Unix Attributes</em> tab.</p>
<p>Select  the domain under &#8220;NIS Domain&#8221; and fill in the fields.</p>
<p><img class="alignnone" title="Screenshot #10" src="http://www.seedsofgenius.net/images/10_UNIX_AD_Auth.png" alt="" width="423" height="549" /></p>
<p>All other user properties  (secondary groups, RBAC roles/profiles/auths…) will come from the  standard file locations on the Solaris client systems- (/etc/group,  /etc/users, /etc/security/*attr)</p>
<p>Also, make sure that the user’s  password is not set to ‘<em>change at next login</em>.’  Solaris does not  have the hooks back into AD to do password management, so your user will  not be prompted to change their password and they will not be allowed  to login.  All they will see is a messages saying: “Login Incorrect.”</p>
<p style="padding-left: 30px;"><span style="color: #999999;"><span style="text-decoration: underline;">Create Kerberos  Keytab for Client System</span></span></p>
<p style="padding-left: 30px;"><span style="color: #999999;">Although this step is given on both  of the sites provided above, I have found that it is not required to  create a functioning Solaris -&gt; AD authentication environment.  I do not know the security implication of not performing this step.<br />
On  the Windows system, create a user account for the Solaris system that  will be authenticating. In this example we are creating a user account  named host-keystone for the host keystone.  (Note: this is a user  account, not a computer account)</span></p>
<p style="padding-left: 30px;"><span style="color: #999999;"><br />
</span></p>
<p style="padding-left: 30px;"><span style="color: #999999;">Once  this user is created you can disable it for security purposes.</span></p>
<p style="padding-left: 30px;"><span style="color: #999999;">The  purpose of this step is create the keytab file that will be transferred  to the /etc/krb5 directory of the Solaris system that will be  authenticating against AD.  In order to create the keytab file run the  following command from a CMD prompt on the domain controller.  (Make  appropriate changes for you local environment.)</span></p>
<p style="padding-left: 30px;"><span style="color: #999999;"><span style="font-size: x-small;">C:\Users\Administrator&gt;  ktpass –princ HOST\keystone.test.sog.com@TEST.SOG.COM -mapuser  TEST\host-keystone –crypto DES-CBC-MD5 +DesOnly –pass p@ssword1 -ptype  KRB5_NT_PRINCIPAL –out Desktop\keystone.keytab</span></span></p>
<p style="padding-left: 30px;"><span style="color: #999999;">Transfer  the file to the host keystone as /etc/krb5/krb5.keytab</span></p>
<p style="padding-left: 30px;">
<p><span style="text-decoration: underline;">Create  ProxyDN User Account</span></p>
<p>On the Windows system, create a user  account that will be the proxyDN.  Make this user a member of &#8220;Domain  Guests.&#8221;   Give it a password, and select ‘password never expires’<br />
This  will be the proxyDN username used when you run the ldapclient command  later on.  This account must remain enabled.<br />
In this test we  created a user account called “ProxyDNUser&#8221; with a password of  “p@ssword1”</p>
<p><img class="alignnone" title="Screenshot #11" src="http://www.seedsofgenius.net/images/11_UNIX_AD_Auth.png" alt="" width="440" height="370" /></p>
<p><img class="alignnone" title="Screenshot #12" src="http://www.seedsofgenius.net/images/12_UNIX_AD_Auth.png" alt="" width="440" height="370" /></p>
<p>Make sure  to use the Display Name under the General properties (Full Name when  creating the user) during the ldapclient step.  In this case the correct user to use during the ldapclient command will be ProxyDNUser.  Do not use the user  logon name.  We ran into a bit of a  problem when we kept trying to use the Windows logon name and we kept  getting messages saying:</p>
<p><span style="font-family: &quot;courier new&quot;;"><span style="font-size: x-small;">libsldap: Status: 49  Mesg: openConnection: simple bind failed  &#8211; Invalid credentials</span></span></p>
<p>It was a bit frustrating when  we were completely sure that we were using the right password and still  kept getting a messages saying ‘Invalid Credentials.’</p>
<p>Use  ADSIedit on your domain controller to see the full DN for the user  account if you keep getting the message above and you’re positive you  have the password correct.</p>
<p><span style="font-size: large;"><strong><span style="text-decoration: underline;">Solaris  Configuration</span></strong></span></p>
<p><span style="text-decoration: underline;">Client Side DNS  Configuration</span></p>
<p>Your Solaris system should be a member of the  DNS domain defined by your domain controller.   Make sure to create both  forward and reverse lookup records in the domain for the Solaris  system.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># cat /etc/resolv.conf<br />
domain test.sog.com<br />
nameserver 192.168.3.76</span></p>
<p>Make sure you have  the /etc/nsswitch.conf file setup to use DNS as a name service for  hosts.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># grep &#8216;^hosts&#8217; /etc/nsswitch.conf<br />
hosts        files dns</span></p>
<p>Verify that DNS works.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># nslookup `hostname`<br />
Server:         192.168.3.76<br />
Address:        192.168.3.76#53</p>
<p>Name:   keystone.test.sog.com<br />
Address: 192.168.3.66</span></p>
<p>The following nslookup commands should  produce output similar to the following.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># nslookup -querytype=any  _ldap._tcp<br />
Server:         192.168.3.76<br />
Address:         192.168.3.76#53</p>
<p>_ldap._tcp.test.sog.com service = 0 100 389  win2k8-dc.test.sog.com.</p>
<p># nslookup -querytype=any  _gc._tcp<br />
Server:         192.168.3.76<br />
Address:         192.168.3.76#53</p>
<p>_gc._tcp.test.sog.com   service = 0 100 3268  win2k8-dc.test.sog.com.</span></p>
<p><span style="text-decoration: underline;">Kerberos</span></p>
<p>Configure  the /etc/krb5/krb5.conf file on the Solaris client.  Make appropriate  changes required for your local environment.<br />
This is the /etc/krb5/krb5.conf that we used on our test system.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt">[libdefaults]<br />
default_realm =  TEST.SOG.COM<br />
dns_lookup_kdc = true<br />
verify_ap_req_nofail = false<br />
[realms]<br />
TEST.SOG.COM = {<br />
kdc =  WIN2K8-DC.TEST.SOG.COM<br />
default_domain = TEST<br />
admin_server = WIN2K8-DC.TEST.SOG.COM<br />
}<br />
[domain_realm]<br />
.test.sog.com =  TEST.SOG.COM<br />
test.sog.com = TEST.SOG.COM<br />
[logging]<br />
default =  FILE:/var/krb5/kdc.log<br />
kdc = FILE:/var/krb5/kdc.log<br />
kdc_rotate = {<br />
period =  1d<br />
versions = 10<br />
}<br />
[appdefaults]<br />
pam = {<br />
debug =  false<br />
ticket_lifetime = 36000<br />
renew_lifetime = 36000<br />
forwardable = true<br />
krb4_convert = false<br />
}<br />
kinit = {<br />
renewable  = true<br />
forwardable= true<br />
}</span></p>
<p>Run  the kinit command and enter the administrator’s password.  If the  command runs successfully, you will see no output.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># kinit administrator<br />
Password for  administrator@TEST.SOG.COM:</span></p>
<p><span style="text-decoration: underline;">LDAP</span></p>
<p>ldap  client initialization on Solaris host.  The part of the command in  orange needs to be modified for your environment.  The rest of the  command is standard across all configurations.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># ldapclient manual \<br />
-a credentialLevel=proxy \<br />
-a authenticationMethod=simple \<br />
<span style="color: #ff6600;">-a proxyDN=cn=&#8221;ProxyDNUser,cn=Users,dc=TEST,dc=SOG,dc=COM&#8221; \<br />
-a proxyPassword=p@ssword1 \<br />
-a defaultSearchBase=dc=TEST,dc=SOG,dc=COM \<br />
-a domainName=TEST.SOG.COM \<br />
-a &#8220;defaultServerList=192.168.3.76&#8243; \</span><br />
-a attributeMap=group:userpassword=userPassword \<br />
-a attributeMap=group:memberuid=memberUid \<br />
-a attributeMap=group:gidnumber=gidNumber \<br />
-a attributeMap=passwd:gecos=cn \<br />
-a attributeMap=passwd:gidnumber=gidNumber \<br />
-a attributeMap=passwd:uidnumber=uidNumber \<br />
-a attributeMap=passwd:homedirectory=unixHomeDirectory \<br />
-a attributeMap=passwd:loginshell=loginShell \<br />
-a attributeMap=shadow:shadowflag=shadowFlag \<br />
-a attributeMap=shadow:userpassword=userPassword \<br />
-a objectClassMap=group:posixGroup=group \<br />
-a objectClassMap=passwd:posixAccount=user \<br />
-a objectClassMap=shadow:shadowAccount=user \<br />
<span style="color: #ff6600;">-a serviceSearchDescriptor=passwd:dc=TEST,dc=SOG,dc=COM?sub \<br />
-a serviceSearchDescriptor=group:dc=TEST,dc=SOG,dc=COM?sub</span></p>
<p># cp /etc/nsswitch.files  /etc/nsswitch.conf</p>
<p># vi /etc/nsswitch.conf<br />
passwd  files ldap<br />
group     files ldap<br />
hosts      files dns</p>
<p># svcadm restart  ldap/client</span></p>
<p><span style="text-decoration: underline;">PAM</span></p>
<p>Edit  /etc/pam.conf to use Kerberos authentication.  Both sites provided at  the top of this article show the same modifications to pam.conf.  In our  tests we found that those entries caused problems, most notably that  the root user could not login from the console.  Here is the /etc/pam.conf that we found to work best.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># vi /etc/pam.conf<br />
# Authentication  management<br />
#<br />
# login service (explicit because of pam_dial_auth)<br />
#<br />
login   auth  requisite          pam_authtok_get.so.1<br />
login   auth  required           pam_dhkeys.so.1<br />
login   auth  required           pam_unix_cred.so.1<br />
<span style="color: #ff6600;"> login    auth sufficient         pam_krb5.so.1</span><br />
login   auth  required           pam_unix_auth.so.1<br />
login   auth  required           pam_dial_auth.so.1<br />
# Default definitions for  Authentication management<br />
# Used when service name is not explicitly  mentioned for authentication<br />
#<br />
other   auth  requisite          pam_authtok_get.so.1<br />
other   auth  required           pam_dhkeys.so.1<br />
other   auth  required           pam_unix_cred.so.1<br />
<span style="color: #ff6600;"> other    auth sufficient         pam_krb5.so.1</span><br />
other   auth  required           pam_unix_auth.so.1<br />
# Default definition for  Password management<br />
# Used when service name is not explicitly  mentioned for password management<br />
other   auth  requisite          pam_authtok_get.so.1<br />
other   auth  required           pam_dhkeys.so.1<br />
other   auth  required           pam_unix_cred.so.1<br />
<span style="color: #ff6600;"> other    auth sufficient         pam_krb5.so.1</span><br />
other   auth  required           pam_unix_auth.so.1<br />
</span></p>
<p>Create  home directory for user.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new; font-size: 8pt"># mkdir -p  /export/home/john.doe<br />
# chown john.doe:staff /export/home/john.doe<br />
# chmod 700 /export/home/john.doe<br />
</span></p>
<p>You should now be able to log into your Solaris system with your AD user account.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/solaris-authentication-login-with-active-directory/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create An RBAC Authorization To Restart a Webserver</title>
		<link>http://www.seedsofgenius.net/solaris/create-an-rbac-authorization-to-restart-a-webserver</link>
		<comments>http://www.seedsofgenius.net/solaris/create-an-rbac-authorization-to-restart-a-webserver#comments</comments>
		<pubDate>Wed, 28 Apr 2010 19:31:16 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Authorizations]]></category>
		<category><![CDATA[RBAC]]></category>
		<category><![CDATA[SMF]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=265</guid>
		<description><![CDATA[One of the nice features of Sun Java Enterprise Webserver 7 is that you can have it create an SMF service for each webserver configuration.  Using this in conjunction with [...]]]></description>
			<content:encoded><![CDATA[<p>One of the nice features of Sun Java Enterprise Webserver 7 is that you can have it create an SMF service for each webserver configuration.  Using this in conjunction with RBAC authorizations means you can give individual users the right to perform a restart of just the  webserver instances you want them to.</p>
<p>For example, at one customer site there is a Java developer that needs to be able to restart a webserver instance after he updates his application.  Giving him the root password is not an option, that would give way too much administrative control to somebody who is not a Unix admin.  I could install sudo and let him run the svcadm command as root, but I don’t really want to allow him to be able to have control over all the SMF services.  The same is true with RBAC; I could give him the solaris.smf.manage authorization, which would allow him to have a limited amount of svcadm control, but it would still be for all services.</p>
<p>The following procedure creates and grants the RBAC authorization to control just a single service.  This example is for a webserver SMF service named svc:/network/http:https-test-webserver, which corresponds to a Sun Java Enterprise Webserver 7 configuration named test-webserver.</p>
<p>The amount of control this procedure gives a user is still a bit more than I would prefer.  It allows the user to restart, refresh, clear or put a service into maintenance mode.  I would prefer to just allow the user to restart the service, but it’s better than any of my other options.  Certainly much better than handing out the root password.</p>
<p><span style="color: #993300; font-family: 'courier new'"><br />
# svcs http:https-test-webserver<br />
STATE          STIME    FMRI<br />
online         14:21:51 svc:/network/http:https-test-webserver</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
# svccfg<br />
svc:&gt; select http:https-test-webserver<br />
svc:/network/http:https-test-webserver&gt; setprop \<br />
general/action_authorization=astring:&#8221;solaris.smf.manage.https-test-webserver&#8221;<br />
svc:/network/http:https-test-webserver&gt; exit</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
# svcadm refresh http:https-test-webserver</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
# echo &#8220;solaris.smf.manage.https-test-webserver:::Manage Test Webserver::&#8221; &gt;&gt; /etc/security/auth_attr</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
# usermod -A solaris.smf.manage.https-test-webserver user1<br />
</span><br />
Now user1 can log in and perform certain levels of management on this webserver instance.  User1 can’t do everything to this service and has no control over any other services.<br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ id<br />
uid=100(user1) gid=10(staff)</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ svcs http:https-test-webserver<br />
STATE          STIME    FMRI<br />
online         14:23:56 svc:/network/http:https-test-webserver</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ svcadm restart http:https-test-webserver</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ svcs http:https-test-webserver<br />
STATE          STIME    FMRI<br />
online         14:27:53 svc:/network/http:https-test-webserver<br />
</span><br />
Notice that the STIME has changed in the outputs of svcs for this service.  This shows that the service has indeed been restarted.</p>
<p>The next two examples illustrate that the user is not able to disable the service and has no control over other SMF services.<br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ /usr/sbin/svcadm disable http:https-test-webserver<br />
svcadm: svc:/network/http:https-test-webserver: Permission denied.</span><br />
<span style="color: #993300; font-family: 'courier new'"><br />
$ /usr/sbin/svcadm restart ssh<br />
svcadm: svc:/network/ssh:default: Permission denied.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/create-an-rbac-authorization-to-restart-a-webserver/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris IPMP: Link Based IPMP</title>
		<link>http://www.seedsofgenius.net/solaris/networking/solaris-ipmp-link-based-ipmp</link>
		<comments>http://www.seedsofgenius.net/solaris/networking/solaris-ipmp-link-based-ipmp#comments</comments>
		<pubDate>Mon, 15 Mar 2010 23:47:43 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[IPMP]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=190</guid>
		<description><![CDATA[IPMP, or IP Multipathing, is used to provide redundant network connections for your Solaris servers.  When IPMP was first release it used a probe based method for failure detection.  This [...]]]></description>
			<content:encoded><![CDATA[<p>IPMP, or IP Multipathing, is used to provide redundant network connections for your Solaris servers.  When IPMP was first release it used a probe based method for failure detection.  This required an IP address to be placed on all NIC&#8217;s in the IPMP group, even if the NIC was just being used a test interface.  Also, the probe based methodology for failure detection would send pings out every 2 seconds and would wait for 5 failures before failing over the IP addresses to another NIC in the IPMP group.  This means that a network connection would be down for 10 seconds before the failover occurred.</p>
<p>Starting with Solaris 9 link-based IPMP was released.  This uses the interfaces link state to determine the status of the network connection for failover/failback purposes.  With link-based IPMP the failover will occur instantly when a link goes  down.   Since the failover is instantaneous and no extra IP addresses are required to build test interfaces, link-based IPMP is the preferred way to build redundant network interfaces on Solaris.</p>
<p>IPMP requires that each NIC has a unique MAC address.  Before configuring IPMP verify that the <em>local-mac-address?</em> setting on the system PROM is set to true.<br />
<span style="color: #993300; font-family: 'courier new'"># eeprom local-mac-address?<br />
local-mac-address?=true</span><br />
If it&#8217;s not set to true then run the following command to change the setting and then reboot the system<br />
<span style="color: #993300; font-family: 'courier new'"># eeprom local-mac-address?=true</span></p>
<p>Link based IPMP can be configured as active/active or  active/passive.  Examples of both are provided below.</p>
<p><span style="text-decoration: underline;"><strong>Active/Passive</strong></span><br />
If your server is only using 1 IP address you will have to configure your IPMP as Active/Passive.  Here is a sample configuration.</p>
<p><span style="color: #993300; font-family: 'courier new'; text-decoration: underline;">/etc/hostname.e1000g0</span><br />
<span style="color: #993300; font-family: 'courier new'">192.168.3.32 group IPMP-1</span></p>
<p><span style="color: #993300; font-family: 'courier new'; text-decoration: underline;">/etc/hostname.e1000g1</span><br />
<span style="color: #993300; font-family: 'courier new'">group IPMP-1 standby</span></p>
<p>The standby keyword is used on the passive interfaces.  No hostname or IP address should be assigned to this NIC.<br />
This configuration will result in the following after a system reboot.</p>
<p><span style="color: #993300; font-family: 'courier new'; font-size: 7.25pt;"># ifconfig -a</span><br />
<span style="font-family: 'courier new'; color: #473933; font-size: 7.25pt;">lo0: flags=2001000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL&gt; mtu 8232 index 1<br />
inet 127.0.0.1 netmask ff000000</span><br />
<span style="color: #993300; font-family: 'courier new'; font-size: 7.25pt;">e1000g0: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 2<br />
inet 192.168.3.32 netmask ffffff00 broadcast 192.168.3.255<br />
groupname IPMP-1<br />
ether 0:21:28:27:bc:84</span><br />
<span style="font-family: 'courier new'; color: #473933; font-size: 7.25pt;">e1000g0:1: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 2<br />
inet 0.0.0.0 netmask ff000000 broadcast 0.255.255.255</span><br />
<span style="color: #993300; font-family: 'courier new'; font-size: 7.25pt;">e1000g1: flags=69000842&lt;BROADCAST,RUNNING,MULTICAST,IPv4,NOFAILOVER,STANDBY,INACTIVE&gt; mtu 0 index 4<br />
inet 0.0.0.0 netmask 0<br />
groupname IPMP-1<br />
ether 0:21:28:27:bc:85</span></p>
<p>An attempt to assign an IP address to a standby interface will cause that IP to be configured on another NIC in the IPMP group.<br />
Notice in the following example an attempt to assign an IP address to e1000g1 will result in a new logical interface being configured on e1000g0.  As long as the link status of one NIC in the IPMP group is good, then the standby interface will not allow any IP addresses to be configured on it.</p>
<p><span style="color: #993300; font-family: 'courier new'"># ifconfig e1000g1 addif 192.168.3.33 up<br />
Created new logical interface e1000g0:2</span></p>
<p>In an active/passive configuration you can setup as many virtual IP address on the active NIC as you want.  However, if multiple IP addresses are to be used then it would probably make sense to use an active/active configuration for load balancing purposes.</p>
<p><span style="text-decoration: underline;"><strong>Active/Active</strong></span></p>
<p>If your server uses multiple IP address on the same network you can spread your network load across all NIC&#8217;s in your IPMP group.  The following example shows 2 IP address on 2 NIC&#8217;s.</p>
<p><span style="color: #993300; font-family: 'courier new'; text-decoration: underline;">/etc/e1000g0</span><br />
<span style="color: #993300; font-family: 'courier new';">192.168.3.32 group IPMP-1</span></p>
<p><span style="color: #993300; font-family: 'courier new'; text-decoration: underline;">/etc/e1000g1</span><br />
<span style="color: #993300; font-family: 'courier new';">192.168.3.33 group IPMP-1</span></p>
<p>This configuration will result in the following after a system reboot.</p>
<p><span style="color: #993300; font-family: 'courier new'; font-size: 8pt;"># ifconfig -a</span><br />
<span style="color: #473933; font-family: 'courier new'; font-size: 8pt;">lo0: flags=2001000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL&gt; mtu 8232 index 1<br />
inet 127.0.0.1 netmask ff000000</span><br />
<span style="color: #993300; font-family: 'courier new'; font-size: 8pt;">e1000g0: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 2<br />
inet 192.168.3.32 netmask ffffff00 broadcast 192.168.3.255<br />
groupname IPMP-1<br />
ether 0:21:28:27:bc:84</span><br />
<span style="color: #473933; font-family: 'courier new'; font-size: 8pt;">e1000g1: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 3<br />
inet 192.168.3.33 netmask ffffff00 broadcast 192.168.3.255<br />
groupname IPMP-1<br />
ether 0:21:28:27:bc:85</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/networking/solaris-ipmp-link-based-ipmp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BIND 9.6.1-P3 on Solaris 10</title>
		<link>http://www.seedsofgenius.net/featured/bind-9-6-1-p3-on-solaris-10</link>
		<comments>http://www.seedsofgenius.net/featured/bind-9-6-1-p3-on-solaris-10#comments</comments>
		<pubDate>Tue, 23 Feb 2010 17:28:10 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Networking]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=149</guid>
		<description><![CDATA[The version of BIND that comes with the most recent release of Solaris 10 is 9.3.6-P1.  This document is meant to provide a step-by-step procedure to compile and install [...]]]></description>
			<content:encoded><![CDATA[<p>The version of BIND that comes with the most recent release of Solaris 10 is 9.3.6-P1.  This document is meant to provide a step-by-step procedure to compile and install a more recent version of BIND.  As of the writing of this document the production release of BIND from ISC is 9.6.1-P3.<br />
If you want to skip the process of doing the compile, you can download and install the following packages.</p>
<p><a href="http://www.seedsofgenius.net/pkg/BIND/9.6.1-P3/SOGbind-SPARC.tar.bz2" target="_blank">BIND 9.6.1-P3 SPARC</a><br />
<a href="http://www.seedsofgenius.net/pkg/BIND/9.6.1-P3/SOGbind-x64.tar.bz2" target="_blank">BIND 9.6.1-P3 x64</a></p>
<p>These packages contain everything needed to run BIND on Solaris.  I have included a few necessary libraries from the Sunfreeware packages installed in step 2 below to avoid having any package dependency requirements.  I&#8217;ve also included a sample named.conf file, a few sample zone files and the most recent <a href="http://www.internic.net/zones/named.root" target="_blank">named.root file</a>.</p>
<p><span style="text-decoration: underline;"><strong>Compile and Run BIND 9.6.1</strong><strong>-P3</strong></span><br />
1- Solaris does not come with compilers.   Sun/Oracle does, however, offer <a href="http://developers.sun.com/sunstudio/downloads/index.jsp" target="_self">SunStudio</a> as a free download.<br />
You will need to setup an SDN account.<br />
On my system I downloaded the tarfile installer for Sun Studio 12u1 and extracted it under /opt.  Depending on how you install Sun Studio you PATH variable may change in Step 3 below.</p>
<p>2-  Download and install a few extra packages from <a href="http://www.sunfreeware.com/" target="_blank">sunfreeware.com</a>.<br />
libgcc-3.4.6<br />
openssl.0.9.8l<br />
make-3.81</p>
<p>3- After installing the Sun Studio compiler and the sunfreeware packages,  edit your PATH variable so that all binaries will be found in the correct order.<br />
<em> # PATH=/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/local/bin:/opt/sunstudio12.1/bin:/usr/ccs/bin<br />
# export PATH</em></p>
<p>4- Obtain a copy of the <a href="https://www.isc.org/software/bind/961-p3/download/bind-961-p3targz" target="_blank">BIND 9.6.1-P3 source code</a>.</p>
<p>Once you&#8217;ve extracted the source code and entered the bind-9.6.1-P3 directory you can compile the usual way.<br />
<em> # ./configure &#8211;prefix=/usr/local<br />
# make install</em><br />
You now have a copy of Bind 9.6.1-P3 for use on your Solaris system.<br />
Your configuration file will be /usr/local/etc/named.conf.</p>
<p>5- If you&#8217;d like, you can make a change to the Solars SMF dns/server start method so that you can control your newer version of BIND with the svcadm command.   Just edit the file /lib/svc/method/dns-server and change the line that says:<br />
<em> server=/usr/sbin/named</em><br />
to<br />
<em> server=/usr/local/sbin/named</em></p>
<p>6- Create your named.conf file and zone files and you&#8217;re ready to go.<br />
You can either start the new version of bind by running<br />
<em> # /usr/local/sbin/named</em><br />
or, if you followed step 5 you can start it with<br />
<em> # svcadm enable dns/server</em></p>
<p>7- If you want to be able to manage DNS with rndc you will need to create a /usr/local/etc/rndc.conf file, and then create a &#8220;key&#8221; and a &#8220;controls&#8221;  statement in your named.conf file.<br />
The easiest way to do this is to run the following two commands.  This will create the statements in proper syntax, including tab spacing, with a shared key for rndc to communicate with named.<br />
<em> # /usr/local/sbin/rndc-confgen &gt; /usr/local/etc/rndc.conf<br />
# sed -n &#8216;/# key/,$s/^#//p&#8217; /usr/local/etc/rndc.conf  | grep -v &#8216;End of named.conf&#8217; &gt;&gt; /usr/local/etc/named.conf</em></p>
<p>If you don&#8217;t do this you will get the following messages in your /var/adm/messages file when you start BIND.<br />
<em> [ID 873579 daemon.notice] couldn&#8217;t add command channel 127.0.0.1#953: not found<br />
[ID 873579 daemon.notice] couldn&#8217;t add command channel ::1#953: not found</em><br />
This is really nothing more than a notice that you will not be able to manage your named daemon with rndc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/featured/bind-9-6-1-p3-on-solaris-10/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris 10 Sparc patch utility patches</title>
		<link>http://www.seedsofgenius.net/solaris/solaris-10-sparc-patch-utility-patches</link>
		<comments>http://www.seedsofgenius.net/solaris/solaris-10-sparc-patch-utility-patches#comments</comments>
		<pubDate>Tue, 26 Jan 2010 22:07:30 +0000</pubDate>
		<dc:creator>rveader</dc:creator>
				<category><![CDATA[Patching]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=143</guid>
		<description><![CDATA[Before doing any patching on a Solaris system, including patching during a live upgrade, make sure you have applied all of the Sun recommended patching utility patches. The basic list [...]]]></description>
			<content:encoded><![CDATA[<p>Before doing any patching on a Solaris system, including patching during a live upgrade, make sure you have applied all of the Sun recommended patching utility patches. The basic list can be found here: <a href="http://sunsolve.sun.com/show.do?target=patchpage" target="_blank">http://sunsolve.sun.com/show.do?target=patchpage</a> Look for a drop down box labeled <span style="color: #c22338;">Latest Patch Utility Patches</span>. If you don&#8217;t see it, try logging out. You must then check each patch number in <a href="http://sunsolve.sun.com/patchfinder/" target="_blank">http://sunsolve.sun.com/patchfinder/</a> to find the latest version. The list below is accurate for Solaris 10 SPARC architecture  as of January 27, 2010.</p>
<p>Latest patch utilites patches list 01/26/10:</p>
<p>142251-01<br />
141588-03<br />
127884-01<br />
125555-06<br />
121296-01<br />
119317-01<br />
119254-72<br />
121133-02<br />
120900-04</p>
<p>If patching a system with zones also include the following patches:</p>
<p>121428-13<br />
121430-43</p>
<p>Happy patching!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/solaris-10-sparc-patch-utility-patches/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mirror boot drive on T5120 with onboard RAID controller.</title>
		<link>http://www.seedsofgenius.net/solaris/install/mirror-boot-drive-on-t5120-with-onboard-raid-controller</link>
		<comments>http://www.seedsofgenius.net/solaris/install/mirror-boot-drive-on-t5120-with-onboard-raid-controller#comments</comments>
		<pubDate>Fri, 08 Jan 2010 17:41:18 +0000</pubDate>
		<dc:creator>bisbell</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Installation]]></category>

		<guid isPermaLink="false">http://www.seedsofgenius.net/?p=115</guid>
		<description><![CDATA[These are the procedures used create a mirrored boot drive using the onboard RAID controller on a T5120.  The same procedure can be used with any Sun system that comes [...]]]></description>
			<content:encoded><![CDATA[<p>These are the procedures used create a mirrored boot drive using the onboard RAID controller on a T5120.  The same procedure can be used with any Sun system that comes with an onboard RAID controller.</p>
<p>First, and most important, is that the mirroring must be done prior to the OS installation.  When you use the raidctl command to create or delete a RAID device all data will be wiped from the member disks.  In order to do this you will need to boot the system into single user mode from a Solaris DVD or a Jumpstart server.</p>
<p>The most current release of Solaris, update 8 (10/09), has a problem with the format command as outlined in bug <a href="http://bugs.opensolaris.org/bugdatabase/view_bug.do;jsessionid=4e171df1f1d726d644c43cbba5f9?bug_id=6901327">6901327</a>.<br />
If you intend on installing Solaris 10_u8, you should boot from the DVD of an earlier release to create the mirror. Then perform the installation from the update 8 media.</p>
<p>1) Boot into single user mode from Solaris 10_u7 (or earlier) DVD or Jumpstart image.</p>
<p><font face="courier" size="2">ok&gt; boot cdrom –s</font></p>
<p>2) Run raidctl to get information needed to create raid device.</p>
<p><font face="courier" size="2"># raidctl<br />
Controller: 1<br />
Disk: 0.0.0<br />
Disk: 0.1.0</font></p>
<p>3) Use raidctl to create mirror device.</p>
<p>Notice that you are informed that this action will delete all data on both disks and that have to answer “yes” in order to proceed.  This is why mirroring the boot disks using this method must be done prior to installing the OS.</p>
<p><font face="courier" size="1"># raidctl –C “0.0.0 0.1.0” –r 1 1<br />
Creating RAID volume will destroy all data on spare space of member disks, proceed (yes/no)? <strong>yes</strong><br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Physical disk 0 created.<br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Physical disk 1 created.<br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Volume 0 created.<br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Physical disk (target 1) is |out of sync||online|<br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Volume 0 is |enabled||degraded|<br />
/pci@0/pci@0/pci@2/scsi@0 (mpt0):<br />
Volume 0 is |enabled||resyncing||degraded|<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
Volume c1t0d0 is created successfully!<br />
Volume   Size   Stripe  Status   Cache  RAID<br />
Sub             Size                    Level<br />
Disk<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
c1t0d0   136.6G    N/A     SYNC     OFF    RAID1<br />
0.2.0   136.6G          GOOD<br />
0.1.0   136.6G          GOOD</font></p>
<p>3)  Label the mirror disk.</p>
<p>The following step does not work under Solaris 10_u8.  This is why it is suggested to use a previous update release of Solaris to perform these steps.</p>
<p>When you run “format” you will see error messages indicating that there is a corrupt label on the new disk drive.  You will have to use the “type” subcommand to install the appropriate VTOC for the RAID disk drive.  Under “type” choose “0” for auto configure, then label the disk.</p>
<p><font face="courier" size="1"># format<br />
Searching for disks&#8230;WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
done<br />
c1t0d0: configured with capacity of 136.49GB<br />
AVAILABLE DISK SELECTIONS:<br />
0. c1t0d0 &lt;LSILOGIC-LogicalVolume-3000 cyl 65533 alt 2 hd 16 sec 273&gt;<br />
/pci@0/pci@0/pci@2/scsi@0/sd@0,0<br />
Specify disk (enter its number): <strong>0 </strong><br />
selecting c1t0d0<br />
[disk formatted]<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Disk not labeled.  Label it now? <strong>no </strong><br />
FORMAT MENU:<br />
disk       &#8211; select a disk<br />
type       &#8211; select (define) a disk type<br />
partition  &#8211; select (define) a partition table<br />
current    &#8211; describe the current disk<br />
format     &#8211; format and analyze the disk<br />
repair     &#8211; repair a defective sector<br />
label      &#8211; write label to the disk<br />
analyze    &#8211; surface analysis<br />
defect     &#8211; defect list management<br />
backup     &#8211; search for backup labels<br />
verify     &#8211; read and display labels<br />
save       &#8211; save new disk/partition definitions<br />
inquiry    &#8211; show vendor, product and revision<br />
volname    &#8211; set 8-character volume name<br />
!&lt;cmd&gt;     - execute &lt;cmd&gt;, then return<br />
quit<br />
format&gt; <strong>type</strong><br />
AVAILABLE DRIVE TYPES:<br />
0. Auto configure<br />
1. Quantum ProDrive 80S<br />
2. Quantum ProDrive 105S<br />
3. CDC Wren IV 94171-344<br />
4. SUN0104<br />
5. SUN0207<br />
6. SUN0327<br />
7. SUN0340<br />
8. SUN0424<br />
9. SUN0535<br />
10. SUN0669<br />
11. SUN1.0G<br />
12. SUN1.05<br />
13. SUN1.3G<br />
14. SUN2.1G<br />
15. SUN2.9G<br />
16. Zip 100<br />
17. Zip 250<br />
18. Peerless 10GB<br />
19. LSILOGIC-LogicalVolume-3000<br />
20. other<br />
Specify disk type (enter its number)[19]: <strong>0</strong><br />
c1t0d0: configured with capacity of 136.49GB<br />
&lt;LSILOGIC-LogicalVolume-3000 cyl 65533 alt 2 hd 16 sec 273&gt;<br />
selecting c1t0d0<br />
[disk formatted]<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
Disk not labeled.  Label it now? yes<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
WARNING: /pci@0/pci@0/pci@2/scsi@0/sd@0,0 (sd0):<br />
Corrupt label &#8211; bad geometry<br />
Label says 286718976 blocks; Drive says 286607360 blocks<br />
format&gt; <strong>label</strong><br />
Ready to label disk, continue? <strong>yes</strong></font></p>
<p>4) Now you can continue with the installation of Solaris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.seedsofgenius.net/solaris/install/mirror-boot-drive-on-t5120-with-onboard-raid-controller/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
