<?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>Panoramic Solution</title>
	<atom:link href="http://panoramicsolution.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://panoramicsolution.com/blog</link>
	<description>PS: We see the big picture!</description>
	<lastBuildDate>Wed, 02 May 2012 20:35:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Network card aggregation with Linux RHEL 6.x</title>
		<link>http://panoramicsolution.com/blog/?p=388</link>
		<comments>http://panoramicsolution.com/blog/?p=388#comments</comments>
		<pubDate>Fri, 30 Mar 2012 01:01:17 +0000</pubDate>
		<dc:creator>Rejean</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://panoramicsolution.com/blog/?p=388</guid>
		<description><![CDATA[Network card aggregation with Linux RHEL 6.x, (also called Port bounding or Channel Bonding) it mean the merging of two (or more) network card into one single virtual card (bond0 in this case). This is a non exhaustive information, a mini how-to. For more detail see Redhat documentation. Changes were made between RHEL 5.x and 6.x [...]]]></description>
			<content:encoded><![CDATA[<p>Network card aggregation with Linux RHEL 6.x, (also called Port bounding or Channel Bonding) it mean the merging of two (or more) network card into one single virtual card (bond0 in this case). This is a non exhaustive information, a mini how-to. For more detail see <a href="http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Using_Channel_Bonding.html">Redhat documentation</a>. Changes were made between RHEL 5.x and 6.x &#8212; here is an updated version.<br />
<span id="more-388"></span></p>
<blockquote><p><strong><em>While applying this procedure and modifying text file, the server remote access crashed so I would recommend that you do this on the local console!</em></strong></p></blockquote>
<p>First be sure you got /sbin/ifenslave installed if not install it with &#8220;yum install iputils&#8221;. Next you will obviously need a acces to the server, it can be remote (if you intend to reboot)  but have a direct access ready in case you are adventurous.</p>
<p>Configuration start by adding the next line into /etc/modprobe.d/bond0.conf  (in previous version it was /etc/modprobe.conf) its necessary to define bond0 as the logical or virtual interface name.</p>
<p>/etc/modprobe.d/bond0.conf :</p>
<pre><em>alias netdev-bond0 bonding</em>
<del><em>alias bond0 bonding</em></del></pre>
<p>Note: Using the bond0 issues a deprecated warning as of the latest 2.6.32.xx kernel &#8211; so use the recommended &#8220;netdev-bond0&#8243; instead. <a href="http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Using_Channel_Bonding.html">Red_Hat_Enterprise_Linux/6/html/Deployment_Guide</a> is wrong on that matter.</p>
<p>cd /etc/sysconfig/network-scripts/<br />
vi ifcfg-bond0</p>
<p>/etc/sysconfig/network-scripts/ifcfg-bond0 :</p>
<pre>DEVICE="bond0"
ONBOOT=yes
BOOTPROTO=dhcp
NAME="bond0"
BONDING_OPTS="mode=4 miimon=100"</pre>
<ul>
<li>Note 1: if eth0 was dhcp configured, you may want to use the same Ethernet MAC address for bond0. You will then keep the same IP.</li>
<li>Note 2: BONDING_OPTS mode=0 (balance-rr) means Round-robin while. Mode=0  transmits packets in sequential order from the first slave through the last. This mode provides load balancing (almost twice the bandwidth) and fault tolerance in any case of cable or card failure. <span style="text-decoration: underline;">This mode require switch configuration as opposed to  mode=6 (balance-alb is active load balancing) which does not</span>. There are 7 existing mode. See <a href="http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Using_Channel_Bonding.html">Redhat documentation</a>.</li>
<li>mode=4 is  <a href="http://en.wikipedia.org/wiki/Link_aggregation"><strong>IEEE 802.1ax</strong> Link Aggregation Control Protocol (LACP)</a> which will set the same MAC address to all bounded interfaces.</li>
<li>Note 3: miimon=100 means monitor ARP every 1/10 of a second or 100/1000 milliseconds.</li>
</ul>
<p>/etc/sysconfig/network-scripts/ifcfg-eth0 :</p>
<pre>DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT=yes
HWADDR=AA:F3:FC:DA:74:AA
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-00000000000000
SLAVE=yes
MASTER=bond0</pre>
<p>/etc/sysconfig/network-scripts/ifcfg-eth1 :</p>
<pre>DEVICE="eth1"
HWADDR="BB:F3:FC:DA:83:CC"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO=none
SLAVE=yes
MASTER=bond0</pre>
<p>You should now be able to reboot and see if it does work. Beware not to loose access to the server if you logged in remotely.</p>
<ul>
<li>After a reboot if using DHCP and the hostname is localhost.localdomain you must have an error and DHCP is not working.</li>
<li>After a reboot if not using DHCP and the hostname localhost.localdomain, it may be because you did not add your actual hostname and IP address into /etc/hosts file. Simply add this line to /etc/hosts like this :</li>
</ul>
<pre>192.168.100.1  myserver  myserver.mydomain.com</pre>
<p>Atfer reboot you may see messages entering command &#8220;dmesg&#8221; or from the file /var/log/messages</p>
<p>Here is the output of ifconfig :</p>
<pre>% ifconfig -a
bond0     Link encap:Ethernet  HWaddr AA:F3:FC:DA:74:BB
          inet addr:192.168.108.30  Bcast:192.168.108.255  Mask:255.255.255.0
          inet6 addr: fe80::5ef3:fcff:feda:74a4/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:12169 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15745 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2794755 (2.6 MiB)  TX bytes:2601601 (2.4 MiB)

eth0      Link encap:Ethernet  HWaddr AA:F3:FC:DA:74:BB
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:9778 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10352 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2075894 (1.9 MiB)  TX bytes:1684361 (1.6 MiB)
          Interrupt:28 Memory:92000000-92012800

eth1      Link encap:Ethernet  HWaddr BB:F3:FC:DA:83:CC
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:2559 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5709 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:750032 (732.4 KiB)  TX bytes:957292 (934.8 KiB)
          Interrupt:100 Memory:c0000000-c0012800</pre>
<ul>
<li>Note: I have seen issue where eth1 had a different address. I change NM_CONTROLLED=&#8221;no&#8221;</li>
<li>Note: You may also setup bonding manually. It won&#8217;t stick after reboot. it very simple and may be useful to explorer different modes</li>
</ul>
<pre>ifconfig bond0 up
ifenslave bond0 eth0 eth1
ifconfig bond0 192.168.100.1 netmask 255.255.255.0 up
route add default gw 192.168.1.1 bond0</pre>
<p>According to RHEL doc you can explore modes, mode 0, 1, 2, 3, 4, 5, 6, by modifying files into /sys/class/net/ and  modify values. However I was not able to get expected result. Given exemple was :</p>
<pre>echo balance-alb &gt; /sys/class/net/bond0/bonding/mode</pre>
<p>Validate the aggregation is working by checking the status. Consider the switch not to be configured when you got no partner key or Mac.</p>
<p>&nbsp;</p>
<pre>% cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: slow
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
        Aggregator ID: 1
        Number of ports: 2
        Actor Key: 17
<strong>        Partner Key: 43</strong>
<strong>        Partner Mac Address: 00:d0:03:56:74:00</strong>

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: AA:f3:fc:da:67:BB
Aggregator ID: 1
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: AA:f3:fc:da:85:CC
Aggregator ID: 1
Slave queue ID: 0</pre>
<p>&nbsp;</p>
<p>hope this help someone, anyone, even me for next config <img src='http://panoramicsolution.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Rejean.</p>
<div id="-chrome-auto-translate-plugin-dialog" style="opacity: 1 !important; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; background-color: transparent !important; position: absolute !important; top: 0px; left: 0px; overflow-x: visible !important; overflow-y: visible !important; z-index: 999999 !important; text-align: left !important; display: none; background-position: initial initial !important; background-repeat: initial initial !important; padding: 0px !important; margin: 0px !important;">
<div style="max-width: 300px !important; color: #fafafa !important; opacity: 0.8 !important; border-color: #000000 !important; border-width: 0px !important; -webkit-border-radius: 10px !important; background-color: #363636 !important; font-size: 16px !important; padding: 8px !important; overflow: visible !important; background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #000), color-stop(50%, #363636), color-stop(100%, #000)); z-index: 999999 !important; text-align: left  !important;"></div>
<p><img style="position: absolute !important; z-index: -1 !important; right: 1px !important; top: -20px !important; cursor: pointer !important; -webkit-border-radius: 20px; background-color: rgba(200, 200, 200, 0.3) !important; padding: 3px 5px 0 !important; margin: 0 !important;" onclick="document.location.href='http://translate.google.com/';" src="http://www.google.com/uds/css/small-logo.png" alt="" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://panoramicsolution.com/blog/?feed=rss2&#038;p=388</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Terminal definition dumb</title>
		<link>http://panoramicsolution.com/blog/?p=382</link>
		<comments>http://panoramicsolution.com/blog/?p=382#comments</comments>
		<pubDate>Tue, 21 Feb 2012 21:12:07 +0000</pubDate>
		<dc:creator>Rejean</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://panoramicsolution.com/blog/?p=382</guid>
		<description><![CDATA[I found myself in a situation where I use ssh to remotely connect to Solaris or Linux server from a Windows7 OS. After been connected I had the problem of not been able to use the arrow keys to navigate up and down in the command line history. Normally the TERM variable on Windows and [...]]]></description>
			<content:encoded><![CDATA[<p>I found myself in a situation where I use ssh to remotely connect to Solaris or Linux server from a Windows7 OS. After been connected I had the problem of not been able to use the arrow keys to navigate up and down in the command line history.<br />
<span id="more-382"></span><br />
Normally the TERM variable on Windows and Unix control this behavior. In the connection process ssh exchange the TERM terminal information and set the variable accordingly. Windows has this set to <strong>dumb</strong> while it can be set as <strong>pcansi</strong></p>
<p>Other variables that can also influence this.:</p>
<p>On the Windows PC side in a command prompt (cmd)<br />
set TERM pcansi</p>
<p>On the Unix server side, depending on you configuration of software called termcap on you os.<br />
setenv TERMINFO /usr/share/lib/terminfo<br />
setenv TERMINFO /usr/local/share/terminfo</p>
]]></content:encoded>
			<wfw:commentRss>http://panoramicsolution.com/blog/?feed=rss2&#038;p=382</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>zpool (ZFS) howto replace faulted disk</title>
		<link>http://panoramicsolution.com/blog/?p=353</link>
		<comments>http://panoramicsolution.com/blog/?p=353#comments</comments>
		<pubDate>Mon, 12 Dec 2011 23:27:22 +0000</pubDate>
		<dc:creator>Rejean</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Introduction]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://panoramicsolution.com/blog/?p=353</guid>
		<description><![CDATA[We sometimes forget that hardware issue arise. Well while it is very simple with ZFS to replace a faulted disk, we sometime cannot remember the commands. Here is some very basic information to comfort you on the required steps. % zpool status mypool pool: mypool state: DEGRADED status: One or more devices are faulted in [...]]]></description>
			<content:encoded><![CDATA[<p>We sometimes forget that hardware issue arise. Well while it is very simple with ZFS to replace a faulted disk, we sometime cannot remember the commands.<br />
Here is some very basic information to comfort you on the required steps.<br />
<span id="more-353"></span></p>
<pre>% zpool status mypool
  pool: mypool
 state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Replace the faulted device, or use 'zpool clear' to mark the device
        repaired.
 scrub: scrub in progress for 0h3m, 0.01% done, 447h11m to go
config:

        NAME        STATE     READ WRITE CKSUM
        mypool      DEGRADED     0     0     0
          raidz1-0  DEGRADED     0     0     0
            c0t2d0  ONLINE       0     0     0
            c0t3d0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
            c0t5d0  ONLINE       0     0     0
            c0t6d0  ONLINE       0     0     0
            c0t7d0  FAULTED      0     0     0  too many errors

errors: No known data errors</pre>
<p>Physically replace hard disk. If you got an hot swap controller (I think most Sata3 and SAS are) just try it no special commands required, if you still can&#8217;t see the disk afterward just reboot. Go ahead, try it and replace the disk.</p>
<p>After this issue a <strong><em>zpool replace</em></strong> command should be issued&#8230;  however the system may not see your device right away. In some cases it work in other a reboot is required.</p>
<blockquote><p>% zpool replace mypool c0t7d0 c0t7d0</p></blockquote>
<p>Notes: Yes it&#8217;s the same device name twice (old and new will have the same address location).</p>
<pre>% zpool status mypool
  pool: mypool
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
 scrub: resilver in progress for 0h0m, 0.00% done, 545h13m to go
config:

        NAME              STATE     READ WRITE CKSUM
        mypool            DEGRADED     0     0     0
          raidz1-0        DEGRADED     0     0     0
            c0t2d0        ONLINE       0     0     0
            c0t3d0        ONLINE       0     0     0
            c0t4d0        ONLINE       0     0     0
            c0t5d0        ONLINE       0     0     0
            c0t6d0        ONLINE       0     0     0
            replacing-5   DEGRADED     0     0     0
              c0t7d0s0/o  FAULTED      0     0     0  too many errors
              c0t7d0      ONLINE       0     0     0  5.24M resilvered</pre>
<p>After completion old disk will be removed. Errors will be cleared. Pool will be reset to optimal performances. Here is a status.</p>
<pre>% zpool status
  pool: mypool
 state: ONLINE
 scrub: resilver completed after 50h43m with 0 errors on Sat Oct 15 18:49:54 2011
config:

        NAME        STATE     READ WRITE CKSUM
        mypool      ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            c0t2d0  ONLINE       0     0     0
            c0t3d0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0
            c0t5d0  ONLINE       0     0     0
            c0t6d0  ONLINE       0     0     0
            c0t7d0  ONLINE       0     0     0  645G resilvered

errors: No known data errors</pre>
<p>&nbsp;</p>
<p>A very good and detailled guide is with <a href="http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide#Disk_Replacement_Example">sysinternals.</a> <a href="http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide#Disk_Replacement_Example"><br />
</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://panoramicsolution.com/blog/?feed=rss2&#038;p=353</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>is Sun Solaris dead?  Is it the end of Oracle Solaris?</title>
		<link>http://panoramicsolution.com/blog/?p=343</link>
		<comments>http://panoramicsolution.com/blog/?p=343#comments</comments>
		<pubDate>Tue, 08 Feb 2011 18:22:53 +0000</pubDate>
		<dc:creator>Rejean</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://panoramicsolution.com/blog/?p=343</guid>
		<description><![CDATA[In the end Oracle is killing me softly but surely with their absolute need to profit anything including Solaris error message and updates. In today&#8217;s world we constantly needs security updates because of flaws, so why one would not take credit for their bad programming skill, bugs or refuse to provide patches and even worst [...]]]></description>
			<content:encoded><![CDATA[<p>In the end Oracle is killing me softly but surely with their absolute need to profit anything including Solaris error message and updates. In today&#8217;s world we constantly needs security updates because of flaws, so why one would not take credit for their bad programming skill, bugs or refuse to provide patches and even worst denies us to see incomplete error messages we received from the OS?!</p>
<p>A lot of people are upset at Oracle with all the bad they are doing to Sun&#8217;s legacy. I would love to complain about Oracle to them but they won&#8217;t even listen! I now thing they just don&#8217;t care. What are they doing to Solaris support? I can&#8217;t do much except blog about it because none of the local Oracle staff care or can do much.<span id="more-343"></span></p>
<p>Oracle discontinue Sunsolve, I hate that you simply killed it; I hate your support policies; I hate you for that!</p>
<p>Ok ok the fact is that I cannot get any king of security patches without a contract. This is a harsh (since even Microsoft give them for free, not talking about all Linux distributions) but I can kind of understand it, they are the worst capitalist in the world and they are trying to make more money&#8230; after all they are not there to contribute to a better world, as Sun did in the past but to make money.</p>
<p>On top of my head Sun gaved the world OpenSolaris, NFS, NIS, ZFS, OpenOffice, mySQL and several protocol&#8230; While Oracle is not even giving nothing and they are even taking back by killing what was given like OpenSolaris&#8230;</p>
<p>I used Solaris for 2 decade. I had the complete Solaris Admin guides suites thrown to recycling because it was all online at docs.Sun.com (ok Solaris 5.7 was also a bit obsolete). The only reason I am keeping with Solaris is because of ZFS (the newest and best file system of all). ZFS Snapshot capable allowing all users to see they snapshot of all they files without any administrator interactions.</p>
<p>Know, what&#8217;s pissed me the most is having a problem with ZFS and not been able to read what the error is. It actually directs me to a Sun web site for detailed explanation about the error but it&#8217;s no longer accessible without an Oracle support contract.</p>
<blockquote><p><code>--------------- ------------------------------------ -------------- ---------</code><br />
<code>TIME EVENT-ID MSG-ID SEVERITY</code><br />
<code>--------------- ------------------------------------ -------------- ---------</code><br />
<code>Jan 29 08:37:29 0f45250a-9966-4bdf-a0a6-85007a46d576 ZFS-8000-HC Major </code></p>
<p>Host : server01<br />
Platform : PowerEdge-R510 Chassis_id : xxxdellxxxservicexxxtagxxx<br />
Product_sn :</p>
<p>Fault class : fault.fs.zfs.io_failure_wait<br />
Affects : zfs://pool=mypool<br />
faulted but still in service<br />
Problem in : zfs://pool=mypool<br />
faulted but still in service</p>
<p>Description : The ZFS pool has experienced currently unrecoverable I/O<br />
failures. Refer to http://sun.com/msg/ZFS-8000-HC for more<br />
information.</p>
<p>Response : No automated response will be taken.</p>
<p>Impact : Read and write I/Os cannot be serviced.</p>
<p>Action : Make sure the affected devices are connected, then run<br />
&#8216;zpool clear&#8217;.</p></blockquote>
<p>Well&#8230; fallowing the link gets me to sign-in and the a 503 service unavailable, while sing-in in with somebody else&#8217;s who got an account display the full detail of the error. The technical detail are irrelevant but let says that the actual detail explain on the page was useless. while <em>zpool status -x</em> reported that all pool where ok and <em>zpool clear mypool</em> did not clear much I am still waiting for a reboot to hopefully fix this</p>
<p>Why am I so cheap, and Why don&#8217;t I buy a contract one could say? Well I have looked into this as well. First support is for a University and Canadian University are poor AND THEN&#8230;</p>
<p>&#8220;Oracle Solaris Premier Subscription for Non-Oracle Hardware (1-4 socket server)&#8221; is 1000$ per socket, so it&#8217;s in my case 2 socket 2000$ per year&#8230; then 4000$ or 6000$ for a 2 or 3 year contract. This is in fact more than the price of the actual server running Solaris&#8230; I do not need software support I need patches or security patches access. And tell me why the hell should I pay more if I got 2 CPU? Are they giving me more support because I got 2 CPU? Why don&#8217;t you charge for the memory amount while you&#8217;re at it!</p>
<p>I manage several servers&#8230; Linux, Solaris sparc and intel and Windows&#8230; and you know what? I guess I will go and migrate those Solaris into Linux and hope that <a href="http://en.wikipedia.org/wiki/Btrfs">BTRFS</a> (a clone to ZFS) is out very soon&#8230; but I could use LVM and ext4 (as already discussed <a href="../?p=92">here </a>is quite good too) but then it means that I don’t have snapshot and going back to a full backup painful procedure or to rsync between servers.</p>
<p>I don’t expect <a href="https://btrfs.wiki.kernel.org/index.php/Main_Page">BTRFS</a> soon&#8230; why would it be? Development of BTRFS was originally started by Oracle itself and now that Oracle owns ZFS with the buying of Sun there is really no rush on completing BTRFS&#8230; unless the community does complete it.</p>
<p>In the end Oracle is killing me softly but surely. The End of Oracle Solaris is close for me. The only possible future for academic research is Linux.</p>
<p>RIP SUN.</p>
]]></content:encoded>
			<wfw:commentRss>http://panoramicsolution.com/blog/?feed=rss2&#038;p=343</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Compiling Samba 3.5.6 on Solaris 10 x86</title>
		<link>http://panoramicsolution.com/blog/?p=308</link>
		<comments>http://panoramicsolution.com/blog/?p=308#comments</comments>
		<pubDate>Tue, 19 Oct 2010 02:36:42 +0000</pubDate>
		<dc:creator>Rejean</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://panoramicsolution.com/blog/?p=308</guid>
		<description><![CDATA[Yes samba can be compiled on Solaris 10. Yes it&#8217;s sometime difficult. This post will be on x86 architecture. I have discussed a similar topic in a previous post on SPARC architecture. Again I am here compiling and updating it to a newer version of Samba and still having some issue. Even I need to [...]]]></description>
			<content:encoded><![CDATA[<p>Yes samba can be compiled on Solaris 10. Yes it&#8217;s sometime difficult. This post will be on x86 architecture. I have discussed a similar topic in <a href="http://panoramicsolution.com/blog/?p=134"> a previous post on SPARC architecture</a>. Again I am here compiling and updating it to a newer version of Samba and still having some issue.</p>
<p>Even I need to re-read my posts whenever I compile Samba&#8230; it never seem to work as it should&#8230; and here I am writing a new post about it!</p>
<p><span id="more-308"></span>Those are my configure options:</p>
<pre>﻿﻿
./configure --prefix=/usr/local/opt/samba-3.5.6 \
--with-privatedir=/usr/local/opt/samba-3.5.6/etc \
--with-configdir==/usr/local/opt/samba-3.5.6/etc \
--datadir=/usr/local/opt/samba-3.5.6/doc \
--with-statedir=/usr/local/opt/samba-3.5.6/var/locks \
--with-cachedir=/usr/local/opt/samba-3.5.6/var/locks \
--with-automount \
--enable-socket-wrapper \
--with-quotas \
--with-sys-quotas \
--with-acl-support \
--without-pam \
--with-aio-support \
--enable-shared \
--enable-cups \
--enable-swat \
--with-automount \
<span style="text-decoration: line-through;">--without-ldap \</span>
--enable-socket-wrapper \
--with-quotas \
--enable-nss-wrapper \
--without-pam</pre>
<p>And this is the result of a gnu make (note that sun &#8220;make&#8221; does not work use gnu make) :</p>
<blockquote><p>Compiling smbd/statcache.c<br />
Compiling smbd/seal.c<br />
Compiling smbd/posix_acls.c<br />
Compiling lib/sysacls.c<br />
Compiling smbd/process.c<br />
smbd/vfs.c: In function &#8216;smb_vfs_call_mkdir&#8217;:<br />
smbd/vfs.c:1210:46: error: macro &#8220;mkdir&#8221; passed 3 arguments, but takes just 2<br />
smbd/vfs.c:1210:2: warning: return makes integer from pointer without a cast<br />
Compiling smbd/service.c<br />
Compiling smbd/error.c<br />
The following command failed:<br />
gcc -I. -I/mypool/install/solx/samba-3.5.6/source3 -I/mypool/install/solx/samba-3.5.6/source3/iniparser/src -Iinclude -I./include  -I. -I. -I./../lib/replace -I./../lib/tevent -I./libaddns -I./librpc -I./.. -I./../lib/talloc -I../lib/tdb/include -DHAVE_CONFIG_H  -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DSUNOS5  -I/mypool/install/solx/samba-3.5.6/source3/lib -I.. -I../source4 -D_SAMBA_BUILD_=3 -D_SAMBA_BUILD_=3  -fPIC -c smbd/vfs.c -o smbd/vfs.o<br />
Compiling printing/printfsp.c<br />
Compiling lib/sysquotas.c<br />
Compiling lib/sysquotas_linux.c<br />
Compiling lib/sysquotas_xfs.c<br />
Compiling lib/sysquotas_4A.c<br />
Compiling smbd/change_trust_pw.c<br />
Compiling smbd/fake_file.c<br />
Compiling smbd/quotas.c<br />
Compiling smbd/ntquotas.c<br />
Compiling lib/afs.c<br />
Compiling smbd/msdfs.c<br />
<strong><span style="text-decoration: underline;">gmake: *** [smbd/vfs.o] Error 1<br />
gmake: *** Waiting for unfinished jobs&#8230;.</span><br />
</strong>Compiling smbd/aio.c<br />
Compiling lib/afs_settoken.c<br />
Compiling smbd/statvfs.c</p></blockquote>
<p>NOTE: Since we used -j17 to accelerate the compilation so much on our 16 processor system, we will have to do a simple gmake (without -j) to see where and what was the actual error&#8230; below in bold.</p>
<blockquote><p>% gmake<br />
Using CFLAGS     = -I. -I/mypool/install/samba-3.5.6/source3 -I/mypool/install/solx/samba-3.5.6/source3/iniparser/src -Iinclude -I./include  -I. -I. -I./../lib/replace -I./../lib/tevent -I./libaddns -I./librpc -I./.. -I./../lib/talloc -I../lib/tdb/include -DHAVE_CONFIG_H  -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DSUNOS5  -I/mypool/install/solx/samba-3.5.6/source3/lib -I.. -I../source4 -D_SAMBA_BUILD_=3 -D_SAMBA_BUILD_=3<br />
PICFLAG    = -fPIC<br />
LIBS       = -lsendfile -lresolv -lrt -lnsl -lsocket -liconv -laio<br />
LDFLAGS    = -pie  -Wl,-z,ignore -lthread -L./bin<br />
DYNEXP     =<br />
LDSHFLAGS  = -fPIC -shared  -Wl,-z,ignore -lthread -L./bin -lc -Wl,-z,defs<br />
SHLIBEXT   = so<br />
SONAMEFLAG = -Wl,-h,<br />
Linking bin/net<br />
<strong><br />
<span style="text-decoration: underline;">Undefined first referenced<br />
symbol in file libintl_gettext utils/net.o (symbol belongs to implicit dependency /usr/local/lib/gcc/i386-pc-solaris2.10/3.4.6/../../../libintl.so.8)<br />
libintl_textdomain  utils/net.o (symbol belongs to implicit dependency /usr/local/lib/gcc/i386-pc-solaris2.10/3.4.6/../../../libintl.so.8)<br />
libintl_bindtextdomain utils/net.o (symbol belongs to implicit dependency /usr/local/lib/gcc/i386-pc-solaris2.10/3.4.6/../../../libintl.so.8)<br />
ld: fatal: Symbol referencing errors. No output written to bin/net </span></strong></p>
<p><strong></strong>collect2: ld returned 1 exit status<br />
gmake: *** [bin/net] Error 1</p></blockquote>
<p><strong><br />
Q: But why is it complaining about libintl ?<br />
A: Edit the Makefile line 25 and add -lintl on LIBS=</strong></p>
<blockquote><p>LIBS=-lsendfile -lresolv -lrt -lnsl -lsocket -liconv -laio<strong> -lintl</strong></p></blockquote>
<p>After the configure is done… AND THIS IS THE TRICK… I had to go and modify the created Makefile and here is what I did :</p>
<ol>
<li>edit Makefile</li>
<li>search for LIBS= add -lintl at the end</li>
<li>search for PERL= to see if correct path is set</li>
<li>search for SHELL and replace /bin/sh by /bin/bash</li>
<li>other key previously discussed in the <a href="http://panoramicsolution.com/blog/?p=134" target="_blank">other post is no longer</a> necessary.</li>
</ol>
<p>Next, here is another error&#8230; again in bold below&#8230;</p>
<blockquote><p>% gmake<br />
Using CFLAGS     = -I. -I/mypool/install/solx/samba-3.5.6/source3 -I/mypool/install/solx/samba-3.5.6/source3/iniparser/src -Iinclude -I./include  -I. -I. -I./../lib/replace -I./../lib/tevent -I./libaddns -I./librpc -I./.. -I./../lib/talloc -I../lib/tdb/include -DHAVE_CONFIG_H  -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DSUNOS5  -I/mypool/install/solx/samba-3.5.6/source3/lib -I.. -I../source4 -D_SAMBA_BUILD_=3 -D_SAMBA_BUILD_=3<br />
PICFLAG    = -fPIC<br />
LIBS       = -lsendfile -lresolv -lrt -lnsl -lsocket -liconv -laio -lintl<br />
LDFLAGS    = -pie  -Wl,-z,ignore -lthread -L./bin<br />
DYNEXP     =<br />
LDSHFLAGS  = -fPIC -shared  -Wl,-z,ignore -lthread -L./bin -lc -Wl,-z,defs<br />
SHLIBEXT   = so<br />
SONAMEFLAG = -Wl,-h,<br />
Linking non-shared library bin/libtalloc.a<br />
Linking shared library bin/libtalloc.so.2<br />
Linking non-shared library bin/libtdb.a<br />
Linking shared library bin/libtdb.so.1<br />
Linking shared library bin/libwbclient.so.0<br />
Linking non-shared library bin/libaddns.a<br />
Linking non-shared library bin/libnetapi.a<br />
Linking shared library bin/libnetapi.so.0<br />
Linking non-shared library bin/libsmbclient.a<br />
Linking shared library bin/libsmbclient.so.0<br />
Linking non-shared library bin/libsmbsharemodes.a<br />
Linking shared library bin/libsmbsharemodes.so.0<br />
<strong><span style="text-decoration: underline;">Compiling smbd/vfs.c<br />
smbd/vfs.c: In function &#8216;smb_vfs_call_mkdir&#8217;:<br />
smbd/vfs.c:1210:46: error: macro &#8220;mkdir&#8221; passed 3 arguments, but takes just 2<br />
smbd/vfs.c:1210:2: warning: return makes integer from pointer without a cast<br />
</span></strong><br />
The following command failed:<br />
gcc -I. -I/mypool/install/solx/samba-3.5.6/source3 -I/mypool/install/solx/samba-3.5.6/source3/iniparser/src -Iinclude -I./include  -I. -I. -I./../lib/replace -I./../lib/tevent -I./libaddns -I./librpc -I./.. -I./../lib/talloc -I../lib/tdb/include -DHAVE_CONFIG_H  -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DSUNOS5  -I/mypool/install/solx/samba-3.5.6/source3/lib -I.. -I../source4 -D_SAMBA_BUILD_=3 -D_SAMBA_BUILD_=3  -fPIC -c smbd/vfs.c -o smbd/vfs.o<br />
gmake: *** [smbd/vfs.o] Error 1</p></blockquote>
<p>This is weird&#8230; The way I fixed it is not clear&#8230; I simply change the configure option, I removed &#8211;without-ldap and added &#8211;with-ldap which is the default anyways&#8230; in earlier release I had issue with ldap libs and didn&#8217;t used it.</p>
<p>If this post does not fix your error, check the previous post mentioned earlier. For me it&#8217;s another version of Samba working on Solaris 10.</p>
<p>Well hope this help. post some comments. <img src='http://panoramicsolution.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Rejean</p>
]]></content:encoded>
			<wfw:commentRss>http://panoramicsolution.com/blog/?feed=rss2&#038;p=308</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Network card aggregation with Linux RHEL 5.x</title>
		<link>http://panoramicsolution.com/blog/?p=274</link>
		<comments>http://panoramicsolution.com/blog/?p=274#comments</comments>
		<pubDate>Thu, 26 Aug 2010 02:34:13 +0000</pubDate>
		<dc:creator>Rejean</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://panoramicsolution.com/blog/?p=274</guid>
		<description><![CDATA[Network card aggregation with Linux RHEL 5.x, (also called port bounding). It mean the merging of two network card into one single virtual (bond0) card. This is non exhaustive information, a mini how-to. for more detail see this link. First be sure you got /sbin/ifenslave installed if not you may not be using RHEL 5.4 [...]]]></description>
			<content:encoded><![CDATA[<p>Network card aggregation with Linux RHEL 5.x, (also called port bounding). It mean the merging of two network card into one single virtual (bond0) card. This is non exhaustive information, a mini how-to. for more detail see <a href="http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding">this link</a>.<span id="more-274"></span></p>
<p>First be sure you got /sbin/ifenslave installed if not you may not be using RHEL 5.4 or 5.5. Then you will need to add the next line into /etc/modprobe.conf  its necessary to define bond0 as the logical or virtual interface name.</p>
<p>/etc/modprobe.conf :</p>
<pre>alias bond0 bonding</pre>
<p>Note: balance-rr means Round-robin. It transmits packets in sequential	order from the first slave through the last.  This mode provides load balancing (almost twice the bandwidth) and fault tolerance in any case of cable or card failure. This mode require switch configuration as opposed to balance-alb which does not. There are 7 existing mode. See <a href="http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding">this link</a>.</p>
<p>/etc/sysconfig/network-scripts/ifcfg-bond0 :</p>
<pre>DEVICE=bond0
IPADDR=192.168.100.1
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255
ONBOOT=yes
BOOTPROTO=static
USERCTL=no
BONDING_OPTS="mode=0 miimon=100"</pre>
<p>/etc/sysconfig/network-scripts/ifcfg-eth0 :</p>
<pre>DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none</pre>
<p>/etc/sysconfig/network-scripts/ifcfg-eth1 :</p>
<pre>DEVICE=eth1
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none</pre>
<p>if the command hostname return localhost.localdomain, and you are not using dhcp, it may be because you did not add your actual hostname and IP address into /etc/hosts file. Simply add this line to /etc/hosts</p>
<pre>192.168.100.1  myserver  myserver.mydomain.com</pre>
<p>Atfer reboot you may see messages like those entering command: dmesg or /var/log/messages</p>
<pre>Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)
bonding: Warning: either miimon or arp_interval and arp_ip_target module parameters must be specified, otherwise bonding will not detect link failures! see bonding.txt for details.
bonding: bond0: setting mode to balance-rr (0).
bonding: bond0: Setting MII monitoring interval to 100.
ADDRCONF(NETDEV_UP): bond0: link is not ready
bonding: bond0: Adding slave eth0.
bnx2: eth0: using MSIX
bonding: bond0: enslaving eth0 as an active interface with a down link.
bonding: bond0: Adding slave eth1.
bnx2: eth1: using MSIX
bonding: bond0: enslaving eth1 as an active interface with a down link.
bnx2: eth0 NIC Copper Link is Up, 1000 Mbps full duplex
bonding: bond0: link status definitely up for interface eth0.
ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
bnx2: eth1 NIC Copper Link is Up, 1000 Mbps full duplex
bonding: bond0: link status definitely up for interface eth1.</pre>
<p>Here is the output of ifconfig :</p>
<pre>% ifconfig -a
bond0     Link encap:Ethernet  HWaddr A4:BA:DB:FF:FA:KE
          inet addr:192.168.100.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a6ba:dbff:fe10:301e/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:572665 errors:0 dropped:0 overruns:0 frame:0
          TX packets:145041 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:320433098 (305.5 MiB)  TX bytes:11531560 (10.9 MiB)

eth0      Link encap:Ethernet  HWaddr A4:BA:DB:FF:FA:KE
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:286461 errors:0 dropped:0 overruns:0 frame:0
          TX packets:87853 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:160503391 (153.0 MiB)  TX bytes:6747616 (6.4 MiB)
          Interrupt:106 Memory:da000000-da012800 

eth1      Link encap:Ethernet  HWaddr A4:BA:DB:FF:FA:KE
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:286204 errors:0 dropped:0 overruns:0 frame:0
          TX packets:57188 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:159929707 (152.5 MiB)  TX bytes:4783944 (4.5 MiB)
          Interrupt:114 Memory:dc000000-dc012800
</pre>
<p>Note: You can also setup bonding manually but it won&#8217;t stick after reboot. it very simple and may be useful to test with modes :  mode 0 (balance-rr) , mode 1, 2, 3, 4, 5 &#8230; and mode 6 (balance-alb).</p>
<pre>modprobe bonding mode=balance-rr miimon=100
ifconfig bond0 192.168.100.1 netmask 255.255.255.0 up
ifenslave bond0 eth0 eth1
route add default gw 192.168.1.1 bond0</pre>
<p>And while at it if you configure static ip you will have to add a default gateway in /etc/sysconfig/network add this line: GATEWAY=192.168.1.1</p>
<p>hope this help.<br />
Rejean</p>
]]></content:encoded>
			<wfw:commentRss>http://panoramicsolution.com/blog/?feed=rss2&#038;p=274</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtual interfaces and network card aggregation with Solaris 10</title>
		<link>http://panoramicsolution.com/blog/?p=247</link>
		<comments>http://panoramicsolution.com/blog/?p=247#comments</comments>
		<pubDate>Thu, 12 Aug 2010 22:28:19 +0000</pubDate>
		<dc:creator>Rejean</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://panoramicsolution.com/blog/?p=247</guid>
		<description><![CDATA[Let&#8217;s review how to configure network interface on Solaris 10 (x86 version or sparc). Specifically here I want to do on my network interfaces. First, I would like to aggregate two network interfaces so it will become one. More bandwidth will be available and a fail-over will be in place. Second, I want to add [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s review how to configure network interface on Solaris 10 (x86 version or sparc). Specifically here I want to do on my network interfaces.</p>
<ol>
<li>First, I would like to aggregate two network interfaces so it will become one. More bandwidth will be available and a fail-over will be in place.</li>
<li>Second, I want to add virtual interfaces so I would have IP address dedicated to some services (examples: several web servers, a NFS server, a Samba server, DNS, Sendmail, &#8230;).</li>
</ol>
<p><span id="more-247"></span></p>
<h1>Aggregation</h1>
<p>To aggregate my two on board interfaces <strong><em>bnx0 </em></strong>and <strong><em>bnx1 </em></strong>which speed are at 1 gigabyte each and will become aggregated to be as one big 2 gigabyte interfaces having only one IP.</p>
<p>Show all interface on the system with <em>dladm </em>because. This can&#8217;t be done with <em>ifconfig -a</em> because the second interface bnx1 is not yet connected. It will need to be plumb before we see it.</p>
<p><em>Note-1: that plumb come from plumber who plumb some pipes, it needs to be plumbed before water can go in the pipe. So here interface needs to be plumb before network bit can go in the interface.</em></p>
<p><em>Note-2: Often people ask to know: How do we see the speed and duplex of Solaris network interfaces. This is how.<br />
</em></p>
<p>% dladm show-dev</p>
<pre>bnx0            link: up        speed: 1000  Mbps       duplex: full
bnx1            link: up        speed: 0     Mbps       duplex: unknown
bnxe0           link: up        speed: 10000 Mbps       duplex: full</pre>
<p>﻿﻿% dladm show-link</p>
<pre>bnx0            type: non-vlan  mtu: 1500       device: bnx0
bnx1            type: non-vlan  mtu: 1500       device: bnx1
bnxe0           type: non-vlan  mtu: 1500       device: bnxe0</pre>
<p>We can now see that bnx1 is available on the system, let&#8217;s plumb it in so we can play with it.</p>
<p>% ifconfig bnx1 plumb</p>
<p>% ifconfig -a</p>
<pre>lo0: flags=2001000849 mtu 8232 index 1
       inet 127.0.0.1 netmask ff000000
bnx0: flags=1000843 mtu 1500 index 2
       inet 192.168.108.15 netmask ffffff00 broadcast 132.207.108.255
       ether 84:2b:2b:6:c1:99
bnx1: flags=1000802 mtu 1500 index 4
        inet 0.0.0.0 netmask 0
        ether 84:2b:2b:6:c1:9a
bnxe0: flags=1000843 mtu 1500 index 3
        inet 192.168.108.2 netmask ffffff00 broadcast 192.168.108.255
        ether 0:10:18:30:fc:fa
</pre>
<p>And then unplumb both interfaces so we can setup aggregation on them. Interface need to be free to be reconfigured for aggregation.</p>
<p>Note: Be aware that when doing this all network connections to bnx0 interfaces will be lost!!! If you are using ssh remotely you are down. So you will need to be on the console or in my case I got a direct connection to the server thru <em>bnxe0</em>. This interface is a 10 gigabytes interface directly connected from one server to a second identical server. Both servers will be replicated on the other via this dedicated high speed 10 gig link using <a href="http://en.wikipedia.org/wiki/Category_6_cable" target="_blank">cross-over cable category CAT-6A</a>.</p>
<p><strong>% ifconfig bnx0 unplumb<br />
% ifconfig bnx1 unplumb</strong></p>
<p>This next line will create the link aggregation and the next one will set it up with the IP address we want.</p>
<p><strong>% dladm create-aggr -d bnx0 -d bnx1 1</strong><br />
% ifconfig -a</p>
<pre>lo0: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
bnxe0: flags=1000843 mtu 1500 index 3
        inet 192.168.108.2 netmask ffffff00 broadcast 192.168.108.255
        ether 0:10:18:30:fc:fa</pre>
<p><strong>% ifconfig  aggr1  plumb  netmask 255.255.255.0  192.168.108.15 up</strong><br />
% ifconfig -a</p>
<pre>lo0: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
bnxe0: flags=1000843 mtu 1500 index 3
        inet 192.168.108.2 netmask ffffff00 broadcast 192.168.108.255
        ether 0:10:18:30:fc:fa
aggr1: flags=1000843 mtu 1500 index 6
        inet 192.168.108.15 netmask ffff0000 broadcast 132.207.255.255
        ether 84:2b:2b:6:c1:99</pre>
<p>Voila, that&#8217;s it. One big interface offering more bandwidth and a fail-over is in place. Any of the two cables can be unplug and re-plug at will or almost twice the bandwidth is now available.</p>
<p>% dladm  show-aggr</p>
<pre>
key: 1 (0x0001) policy: L4      address: 84:2b:2b:6:c1:99 (auto)
           device       address                 speed           duplex  link    state
           bnx0         84:2b:2b:6:c1:99          1000  Mbps    full    up      attached
           bnx1         84:2b:2b:6:c1:9a          1000  Mbps    full    up      attached
</pre>
<p>If you want you can check the aggregation statistics for each interfaces.<br />
% dladm show-aggr -s</p>
<pre>key:1           ipackets   rbytes       opackets   obytes       %ipkts  %opkts
        Total   4038       524867       847        324837
        bnx0    2310       345467       765        317395         57.2    90.3
        bnx1    1728       179400       82         7442           42.8     9.7</pre>
<p>Question: Are those modifications permanent to the system? No! Not yet.</p>
<p>If you reboot your system will not like it and you won&#8217;t have running network access. To make it permanent you will need to remove your previous interface name&#8217;s in /etc/hostname.bnx0. Assuming you want to keep the same name you had before, simply move the file to its new name.</p>
<pre>% mv /etc/hostname.bnx0 /etc/hostname.aggr1
</pre>
<h1>Virtual interfaces</h1>
<p>You can plumb reel interfaces or you can plumb a virtual interface on top of existing interfaces, which will add a &#8220;:1&#8243; and be called aggr1:0  or number from 0 to 255. Because there is 256 possible virtual interface on Solaris.</p>
<p>For real interfaces bnx0, ce0, hme0, bnxe0, &#8230;<strong><br />
</strong></p>
<p><strong>% ifconfig bnx0:1 plumb<br />
% ifconfig bnx0:1 192.168.1.80 netmask 255.255.255.0 up</strong></p>
<p>and for aggregated interfaces on a single command:<strong><br />
</strong></p>
<p><strong>% ifconfig aggr1:1 plumb netmask 255.255.255.0  192.168.1.80  up</strong></p>
<p>**updated**<br />
Question: Is this permanent? <br />
No. You will also need to create the hostname file in /etc/hostname.aggr1 with the ip address for the aggregation, and remove /etc/hostname.*** (from the previous interface).</p>
<p>To delete aggregation, you can remove one network interface called bnx0 </p>
<pre>dladm remove-aggr -d bnx0 1</pre>
<p>to completely remove aggregation from the system: </p>
<pre>dladm delete-aggr  1</pre>
<p>To stop using aggregation you will also need to rename /etc/hostaname.aggr1 to /etc/hostaname.bnx0 and any other virtual interface you defined (hostaname.aggr1:1 hostaname.aggr1:2 &#8230;).</p>
<p>Hope this help.<br />
Rejean</p>
]]></content:encoded>
			<wfw:commentRss>http://panoramicsolution.com/blog/?feed=rss2&#038;p=247</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who is open source for ?</title>
		<link>http://panoramicsolution.com/blog/?p=187</link>
		<comments>http://panoramicsolution.com/blog/?p=187#comments</comments>
		<pubDate>Thu, 03 Jun 2010 18:06:10 +0000</pubDate>
		<dc:creator>Luc</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Microelectronics]]></category>

		<guid isPermaLink="false">http://panoramicsolution.com/blog/?p=187</guid>
		<description><![CDATA[I was recently involved in a discussion related to open source technologies for electronic embedded systems. Apparently not as &#8220;open&#8221; at it may seem and people suddenly got frantic about that. Many people still are inevitably and blindly attracted to open source [libraries, packages and tools] available from a single mouse click. For students working [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently involved in a discussion related to open source technologies for electronic embedded systems. Apparently not as &#8220;open&#8221; at it may seem and people suddenly got frantic about that.<span id="more-187"></span></p>
<p>Many people still are inevitably and blindly attracted to open source [libraries, packages and tools] available from a single mouse click. For students working on thesis, for companies working on internal tools, this may look fine. It does not depend only on licenses but on your final intention. Licenses are complicated. Please visit the <a href="http://en.wikipedia.org/wiki/GNU_General_Public_License" target="_blank">wikipedia GNU_General_Public_License</a> page to briefly understand the deep complexity of this domain. Intention is simple: do you go commercial with your project or not? For a student, this might mean to file a patent in; for a company, this might be to make the internal tool suddenly available to client. Not always clear at first sight.</p>
<p>For all of you who plan to go out commercial, look at products available under multi-license terms. That is, offering different terms and conditions for different packages. For instance, one may freely use a software library for technological exploration, and pay only when the exploration switches from R&amp;D to production. This model is available for the µC/OS RTOS. Others like FreeRTOS offer a free basic version, but a payable fully-featured version. Dual licensing is a new trend for a sustainable open source market,  producing high quality products for us to try, and buy. Recent  successful models include QT/Trolltech, acquired by Nokia and MySQL,  bought by Sun in Q1-2008.</p>
<p>Should you come from the hardware side, you may know <a href="http://opencores.org/" target="_blank">opencores.org</a> which offers many IP under different GPL-like licenses. Obviously, payable products usually come with support, and free products don&#8217;t, unless their designers intend to live at piece rate. Companies like ours which are committed to delivering fast results use such support to avoid losing too much time.</p>
<p>At the end, this dual-model is good for everyone. Those who don&#8217;t have the money: students at first, startups next and finally bigger companies working on R&amp;D projects can use these free solutions. This leads people to make technology-based decisions rather than to focus on pricing considerations. For those who have the money, the buying decision encourages the suppliers to deliver quality solutions, fully documented and fully supported.</p>
<p>Luc Filion, <a href="http://www.nuumdesign.com" target="_blank">http://www.nuumdesign.com</a></p>
<p>Special Thanks to Miro Samek, CEO of Quantum Leaps, for his views.</p>
]]></content:encoded>
			<wfw:commentRss>http://panoramicsolution.com/blog/?feed=rss2&#038;p=187</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unix based flexlm startup script</title>
		<link>http://panoramicsolution.com/blog/?p=201</link>
		<comments>http://panoramicsolution.com/blog/?p=201#comments</comments>
		<pubDate>Fri, 28 May 2010 18:48:53 +0000</pubDate>
		<dc:creator>Rejean</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://panoramicsolution.com/blog/?p=201</guid>
		<description><![CDATA[Here is a start-up script for a flexlm license based software. Using the start option the script will call itself only to start the daemon as a limited right user called flexlm, it will (switch users) with su. While the startsu will simply start it as the actual current user. The things you might need [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a start-up script for a flexlm license based software.</p>
<p>Using the start option the script will call itself only to start the daemon as a limited right user called flexlm, it will (switch users) with su. While the startsu will simply start it as the actual current user.<span id="more-201"></span></p>
<p>The things you might need to change in that script are:</p>
<ul>
<li>PATH=   # you local path</li>
<li>APPS=    # the name of your software</li>
<li>LIC=        # path to your license_file.dat  (eys you can name it whatever you want to)</li>
<li>PORT=    # tcp port number you want</li>
<li>USER=    # user other than root who should start the service as</li>
<li>LOG=       # where ever you want to put your log file</li>
</ul>
<p>So this is the start-up script I am using for many license server. I simply adjust some tweak.</p>
<blockquote><p>#!/bin/sh<br />
# Copyright (c) Rejean Lepage.<br />
#<br />
#ident  &#8220;@(#)daemon, server 3.5  2010/05/27 RL&#8221;</p>
<p>PATH=/usr/bin:/usr/sbin:/usr/sfw/bin:/usr/local/bin<br />
LD_LIBRARY_PATH=/usr/lib:/usr/openwin/lib:/usr/ccs/lib:/usr/dt/lib:/usr/local/lib</p>
<p>APPS=ANY-SOFT<br />
LIC=/usr/local/flexlm/dat/SOFT_licenses.dat<br />
LOG=/tmp/${APPS}.$$.log<br />
PORT=52800<br />
SRV_PATH=/usr/local/flexlm/bin<br />
SRV=&#8221;${SRV_PATH}/lmgrd -2 -p &#8221;<br />
USER=flexlm</p>
<p>#<br />
# Start/stop $APPS server on port $PORT<br />
#</p>
<p>case &#8220;$1&#8243; in</p>
<p>&#8216;start&#8217;)</p>
<blockquote><p>if [ -f $LIC ] ; then<br />
ulimit -n 1024<br />
ulimit -H -n 1024</p>
<p># start me with startsu option<br />
/usr/bin/su $USER -c &#8220;$0 startsu&#8221;<br />
else<br />
echo &#8220;** File not found $LIC for $APPS on port $PORT **&#8221;<br />
fi<br />
;;</p></blockquote>
<p>&#8216;startsu&#8217;)</p>
<blockquote><p>if [ "$USER" = "root" ] ; then<br />
echo &#8220;Do not run flexlm as root.&#8221;<br />
fi</p>
<p>if [ -f $LIC ] ; then<br />
ulimit -n 1024<br />
ulimit -H -n 1024</p>
<p><span style="text-decoration: line-through;"># Those 3 LD vars should allows to run Solaris 10 daemon on Solaris 9<br />
LD_NOVERSION=1<br />
LD_NOVERSION_32=1<br />
LD_NOVERSION_64=1<br />
export LD_NOVERSION LD_NOVERSION_32 LD_NOVERSION_64</span></p>
<p>echo &#8220;Staring server $APPS on port $PORT with process number $$ log = $LOG<br />
umask 022<br />
$SRV -c $LIC -local -l $LOG</p>
<p>else<br />
echo &#8220;** File not found $LIC for $APPS on port $PORT **&#8221;<br />
fi<br />
;;</p></blockquote>
<p>&#8216;stop&#8217;)</p>
<blockquote><p>echo Arret du serveur $APPS<br />
echo y | ${SRV_PATH}/lmdown -c $LIC<br />
;;</p></blockquote>
<p>&#8216;status&#8217;)</p>
<blockquote><p>echo Etat de $APPS deamon<br />
${SRV_PATH}/lmstat -c $LIC<br />
;;</p></blockquote>
<p>&#8216;fullstatus&#8217;)</p>
<blockquote><p>echo Etat de $APPS deamon<br />
${SRV_PATH}/lmstat -a -c $LIC<br />
;;</p></blockquote>
<p>&#8216;reread&#8217;)</p>
<blockquote><p>echo Lecture des licenses de $APPS deamon<br />
${SRV_PATH}/lmreread -c $LIC<br />
;;</p></blockquote>
<p>env)</p>
<blockquote><p>echo PATH=$PATH<br />
echo LD_LIBRARY_PATH=$LD_LIBRARY_PATH<br />
;;</p></blockquote>
<p>*)</p>
<blockquote><p>echo &#8220;Usage: /etc/init.d/$0 { start | stop | status | reread }&#8221;<br />
;;</p></blockquote>
<p>esac</p></blockquote>
<p>Hopefully this might be useful, it&#8217;s a good wrapper I do use it for all license server I got.</p>
<p>Finally I can point out the latest version flexlm (lmgrd, lmutil) is 11.8 and is available for download on the <a href="http://www.globes.com/support/fnp_utilities_download.htm">Flexera site</a>.</p>
<p>Also here is two small script to create or remove soft links for each flexlm sub commands.</p>
<blockquote><p>#!/bin/sh<br />
#<br />
# Create links to make use of the FlexLM tools easier.<br />
#<br />
PATH=/usr/ucb:/usr/bin:/bin; export PATH</p>
<p>if [ -f lmhostid ]; then<br />
echo &#8220;The links appear to exist already!&#8221;<br />
exit 1<br />
fi</p>
<p>ln -s lmutil lmhostid<br />
ln -s lmutil lmver<br />
ln -s lmutil lmcksum<br />
ln -s lmutil lmdown<br />
ln -s lmutil lmremove<br />
ln -s lmutil lmreread<br />
ln -s lmutil lmswitchr<br />
ln -s lmutil lmstat<br />
ln -s lmutil lmdiag<br />
ln -s lmutil lminstall<br />
ln -s lmutil lmborrow<br />
ln -s lmutil lmnewlog<br />
ln -s lmutil lmpath<br />
ln -s lmutil lmswitch</p>
<p>echo &#8220;Links now made&#8221;</p></blockquote>
<p>and to remove links&#8230;</p>
<blockquote><p>#!/bin/sh<br />
#<br />
# Remove links<br />
#</p>
<p>PATH=/usr/ucb:/usr/bin:/bin; export PATH</p>
<p>if [ ! -f lmhostid ]; then<br />
echo &#8220;The links do not exist!&#8221;<br />
exit 1<br />
fi</p>
<p>rm -f lmhostid<br />
rm -f lmver<br />
rm -f lmcksum<br />
rm -f lmdown<br />
rm -f lmremove<br />
rm -f lmreread<br />
rm -f lmswitchr<br />
rm -f lmstat<br />
rm -f lmdiag<br />
rm -f lminstall<br />
rm -f lmborrow<br />
rm -f lmnewlog<br />
rm -f lmpath<br />
rm -f lmswitch</p>
<p>echo &#8220;Links removed&#8221;</p></blockquote>
<p>Rejean.</p>
]]></content:encoded>
			<wfw:commentRss>http://panoramicsolution.com/blog/?feed=rss2&#038;p=201</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Possible to run Solaris 10 compiled binairies on Solaris 9&#8230;?</title>
		<link>http://panoramicsolution.com/blog/?p=193</link>
		<comments>http://panoramicsolution.com/blog/?p=193#comments</comments>
		<pubDate>Thu, 27 May 2010 22:59:13 +0000</pubDate>
		<dc:creator>Rejean</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Microelectronics]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://panoramicsolution.com/blog/?p=193</guid>
		<description><![CDATA[Have you seen this error:   &#8221; libc.so.1: version SUNW_1.22 not found &#8221; ?  Yes, then I may have a better solution then a migration&#8230; This is probably due to you using mixed environment of Solaris 9 and Solaris 10. This specific error mean that you are trying to start a Solaris 10 compiled binary on [...]]]></description>
			<content:encoded><![CDATA[<p>Have you seen this error:   &#8221; libc.so.1: version SUNW_1.22 not found &#8221; ?  Yes, then I may have a better solution then a migration&#8230;<br />
<span id="more-193"></span><br />
This is probably due to you using mixed environment of Solaris 9 and Solaris 10. This specific error mean that you are trying to start a Solaris 10 compiled binary on Solaris 9 and the libc.so library version 1.22 is missing from the system&#8230; It would make sense if the binary was compiled for Solaris 10.</p>
<p>According to the ld.so.1 manual, by disabling version checking it might be possible to not having to recompile. This is useful when you get a binary from elsewhere&#8230; a flexlm daemon file for example.</p>
<p>This specific issue arises when I tried to get the latest version of the Cadence cdslmd flexlm license daemon file running on Solaris 9&#8230; That daemon was provided and compiled only for Solaris 10.<br />
A quick fix to that issue would be to set LD so it won&#8217;t check for its version this is achieved by setting those variables within the environment starting the daemon. In a sh like shell:</p>
<blockquote><p>LD_NOVERSION=1<br />
LD_NOVERSION_32=1<br />
LD_NOVERSION_64=1<br />
export LD_NOVERSION LD_NOVERSION_32 LD_NOVERSION_64</p></blockquote>
<p>This is it. So in some cases Solaris 10 binaries should now work on Solaris 9&#8230; but of course, this should have some limitations whenever LD try to use any new function defined in libc.so.newest version it may not work.</p>
<p>I could write another post about <a href="http://panoramicsolution.com/blog/?p=201">securely starting flexlm</a>&#8230; I got several nice scripts that I can provide. Just ask&#8230; <a href="http://panoramicsolution.com/blog/?p=201">you shall receive for free here.</a></p>
<p>Rejean</p>
<p>Special thanks to Roberto Muscedere University of Windsor for the idea.</p>
]]></content:encoded>
			<wfw:commentRss>http://panoramicsolution.com/blog/?feed=rss2&#038;p=193</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

