<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4685462481734307117</id><updated>2011-11-30T17:37:14.074Z</updated><category term='TweetDeck'/><category term='selinux'/><category term='Fedora'/><category term='zfs'/><category term='qos'/><category term='Cisco'/><category term='adobe'/><category term='gnu'/><category term='Access 97'/><category term='gigabyte'/><category term='RPM'/><category term='odbc'/><category term='ocs'/><category term='grml'/><category term='l2tp'/><category term='WMI'/><category term='adsl'/><category term='smartmontools'/><category term='ipsec-tools'/><category term='mdadm'/><category term='access'/><category term='hwclock'/><category term='netbsd'/><category term='solaris'/><category term='dtrace'/><category term='wget'/><category term='kerberos'/><category term='Windows 7'/><category term='ISDN'/><category term='racoon'/><category term='centos'/><category term='CLID'/><category term='php'/><category term='vmware'/><category term='AIR'/><category term='comstar'/><category term='Lovelock'/><category term='dscp'/><category term='wireshark'/><category term='bash'/><category term='oracle'/><category term='windbg'/><category term='EDI'/><category term='sfdisk'/><category term='iscsi'/><category term='Linux'/><category term='snmp'/><category term='esx'/><category term='opensolaris'/><category term='fishworks'/><category term='letpd'/><category term='fdisk'/><category term='vista'/><title type='text'>Nigel Smith's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-3533926071911659259</id><published>2011-11-30T17:10:00.003Z</published><updated>2011-11-30T17:37:14.082Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='snmp'/><title type='text'>Query your Switch using SNMP and Linux</title><content type='html'>So you want to query a switch using snmp to see which MACs are being seen on which ports. In that case you will need the BRIDGE-MIB. On Centos-5 it is supplied, but as part of the 'libsmi' package.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# rpm -qa | egrep 'libsmi|net-snmp' | sort&lt;br /&gt;libsmi-0.4.5-2.el5&lt;br /&gt;net-snmp-5.3.2.2-14.el5_7.1&lt;br /&gt;net-snmp-libs-5.3.2.2-14.el5_7.1&lt;br /&gt;net-snmp-utils-5.3.2.2-14.el5_7.1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So you need to create file '/etc/snmp/snmp.conf' and configure as follows:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# cat /etc/snmp/snmp.conf&lt;br /&gt;mibdirs +/usr/share/mibs/ietf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then you should have success with the following command.&lt;br /&gt;Remember to use the correct community string - by default its usually 'public'.&lt;br /&gt;And the mib object name IS case sensitive.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# snmptable -v1 -c public -Cbw 80 192.168.24.1 -IR BRIDGE-MIB::dot1dTpFdbTable&lt;br /&gt;SNMP table: BRIDGE-MIB::dot1dTpFdbTable&lt;br /&gt;&lt;br /&gt;           Address Port  Status&lt;br /&gt;   0:c:29:45:21:9e   24 learned&lt;br /&gt;   0:c:29:79:6c:73   24 learned&lt;br /&gt;  0:12:3f:c3:9d:7b   19 learned&lt;br /&gt;  0:14:38:a2:70:7e   15 learned&lt;br /&gt;  0:14:5e:68:74:ed   17 learned&lt;br /&gt;  0:1b:78:22:bc:30   21 learned&lt;br /&gt;  0:26:55:e7:5b:f4   27 learned&lt;br /&gt;  0:50:56:a7:61:32   22 learned&lt;br /&gt;  64:31:50:cd:c7:0    0    self&lt;br /&gt; 9c:8e:99:19:99:a6   23 learned&lt;br /&gt; 9c:8e:99:c4:46:56   13 learned&lt;br /&gt;  c8:4c:75:90:f:e0   28 learned&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Status 'self' or 'mgmt' is the MAC of the switch itself - used for the management connection.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;If you have a modular switch, you may want to check the logical to physical port name mapping, as show next. If you just have a simple switch, the port names are usually boring!&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# snmpwalk -v1 -c public 192.168.24.1 -IR IF-MIB::ifName | head -n 5&lt;br /&gt;IF-MIB::ifName.1 = STRING: 1&lt;br /&gt;IF-MIB::ifName.2 = STRING: 2&lt;br /&gt;IF-MIB::ifName.3 = STRING: 3&lt;br /&gt;IF-MIB::ifName.4 = STRING: 4&lt;br /&gt;IF-MIB::ifName.5 = STRING: 5&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Before you run the above commands, it may be useful to ping every host on your subnet, just so that the switch has seen everything. You can use 'nmap' for that:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# nmap -n -sP 192.168.24.0/24&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Good luck with the above. I've often found these command very useful!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-3533926071911659259?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/3533926071911659259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=3533926071911659259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/3533926071911659259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/3533926071911659259'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2011/11/query-your-switch-using-snmp-and-linux.html' title='Query your Switch using SNMP and Linux'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-7274936898413274756</id><published>2011-08-05T00:35:00.003+01:00</published><updated>2011-08-05T00:52:29.258+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><title type='text'>bash initialisation files</title><content type='html'>I've been installing Centos 5 into VirtualBox this evening. Due to some mistyping, I ended up in the situation where I needed to manually create the 'home' directory for the user 'nwsmith'. Ok, thats simple, just remember to set the correct user and group, and the correct permissions:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# mkdir /home/nwsmith&lt;br /&gt;# chown nwsmith.nwsmith /home/nwsmith&lt;br /&gt;# chmod 700 /home/nwsmith&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;But when I logged in as user 'nwsmith' I was not getting the correct bash prompt. It looked like PS1 was not being set correctly.  I quickly realised that I was missing the '.bashrc' file from my home directory, so I copied that across from '/etc/skel/.bashrc'.&lt;br /&gt;&lt;br /&gt;But still I was not getting the correct prompt. But I found that if I ran the command 'source ./.bashrc' then I did get the correct prompt. Finally the penny dropped, when I googled up this link &lt;a href="http://www.cl.cam.ac.uk/local/sys/unix/dot-configure-files/"&gt;Initialisation files and configuration&lt;/a&gt; from the University of Cambridge Computer Laboratory. I'm just going to quote the paragraph I found really useful:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;When bash is invoked as a login shell it first reads and executes commands from the file /etc/profile, if that file exists. This initialises a few environment variables, and calls a set of small initialisation scripts from the directory /etc/profile.d, which will vary depending on the software loaded on the machine (for example, if KDE is loaded there will be one called kde.sh).&lt;br /&gt;&lt;br /&gt;After reading that file, it looks for ~/.bash_profile or ~/.bash_login or ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. (The --noprofile option could be used when the shell is started to inhibit this behaviour.)&lt;br /&gt;&lt;br /&gt;When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists. (This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of ~/.bashrc).&lt;br /&gt;&lt;br /&gt;Thus, by default, the file ~/.bashrc is not read automatically when a login shell is started. For this reason it is usual behaviour to add a section to ~/.profile (or ~/.bash_profile or ~/.bash_login) to read and execute it, so that you get uniform behaviour on both login shells and normal interactive shells.&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;After reading that I realised that I also need a '.bash_profile' file in my home directory, so I copied one across from '/etc/skel/.bash_profile'. And then when I logged in as user 'nwsmith' I got the prompt I was expecting.&lt;br /&gt;&lt;br /&gt;By the way, '.bash_profile' and '.bashrc' do NOT need to have 'x' executable permission.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-7274936898413274756?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/7274936898413274756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=7274936898413274756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/7274936898413274756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/7274936898413274756'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2011/08/bash-initialisation-files.html' title='bash initialisation files'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-1123074815754206294</id><published>2011-07-22T09:49:00.003+01:00</published><updated>2011-07-22T09:55:02.107+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='selinux'/><category scheme='http://www.blogger.com/atom/ns#' term='racoon'/><category scheme='http://www.blogger.com/atom/ns#' term='ipsec-tools'/><title type='text'>selinux, ipsec-tools and '/etc/racoon/racoon.conf'</title><content type='html'>The racoon daemon failed to start, and this message was logged:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  # grep denied /var/log/messages&lt;br /&gt;Jul 21 17:57:56 hexgate kernel: type=1400 audit(1311267452.973:4): avc:  denied  { getattr } for  pid=2412 comm="racoon" path="/etc/racoon/racoon.conf" dev=md0 ino=1401757 scontext=system_u:system_r:racoon_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So I guess I had got the wrong security context on the file. To fix it, I did this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  # ls -lZ /etc/racoon/racoon.conf&lt;br /&gt;  -rw-------  root root root:object_r:user_home_t        /etc/racoon/racoon.conf&lt;br /&gt;  #&lt;br /&gt;  # restorecon -v /etc/racoon/racoon.conf&lt;br /&gt;  restorecon reset /etc/racoon/racoon.conf context root:object_r:user_home_t:s0-&gt;system_u:object_r:ipsec_conf_file_t:s0&lt;br /&gt;  #&lt;br /&gt;  # ls -lZ /etc/racoon/racoon.conf&lt;br /&gt;  -rw-------  root root system_u:object_r:ipsec_conf_file_t /etc/racoon/racoon.conf&lt;br /&gt;  #&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;..and then racoon started Ok.&lt;br /&gt;So what other file security context could be relevant to racoon:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  # grep racoon /etc/selinux/targeted/contexts/files//file_contexts&lt;br /&gt;  /etc/racoon(/.*)?       system_u:object_r:ipsec_conf_file_t:s0&lt;br /&gt;  /var/racoon(/.*)?       system_u:object_r:ipsec_var_run_t:s0&lt;br /&gt;  /var/run/racoon.pid     --      system_u:object_r:ipsec_var_run_t:s0&lt;br /&gt;  /etc/racoon/certs(/.*)? system_u:object_r:ipsec_key_file_t:s0&lt;br /&gt;  /usr/sbin/racoon        --      system_u:object_r:racoon_exec_t:s0&lt;br /&gt;  /etc/racoon/psk\.txt    --      system_u:object_r:ipsec_key_file_t:s0&lt;br /&gt;  #&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;By the way, this was on the following system:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  # cat /etc/redhat-release&lt;br /&gt;  CentOS release 5.5 (Final)&lt;br /&gt;  #&lt;br /&gt;  # rpm -qa | grep selinux-policy&lt;br /&gt;  selinux-policy-2.4.6-279.el5_5.2&lt;br /&gt;  selinux-policy-targeted-2.4.6-279.el5_5.2&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-1123074815754206294?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/1123074815754206294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=1123074815754206294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/1123074815754206294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/1123074815754206294'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2011/07/selinux-ipsec-tools-and.html' title='selinux, ipsec-tools and &apos;/etc/racoon/racoon.conf&apos;'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-237032844690727150</id><published>2011-06-30T23:38:00.008+01:00</published><updated>2011-07-22T10:32:10.248+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='TweetDeck'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='RPM'/><category scheme='http://www.blogger.com/atom/ns#' term='Lovelock'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe'/><title type='text'>Installing TweetDeck with Adobe AIR on Fedora 15</title><content type='html'>Unfortunately, there is a problem installing TweakDeck on Fedora 15, and even more unfortunately, it does not look like it will be fixed.&lt;br /&gt;&lt;br /&gt;Using the '&lt;a href="http://technozeal.wordpress.com/2011/06/06/installing-adobe-air-in-fedora-15-lovelock/"&gt;TechnoZeal&lt;/a&gt;' instructions, I had no difficulty installing Adobe AIR on Fedora 15 (64-bit), although AIR seems to be a 32-bit application and so you will need to install many 32-bit library files.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[nwsmith@fed15-x64 ~]$ rpm -qa | grep -i adobe&lt;br /&gt;adobe-release-i386-1.0-1.noarch&lt;br /&gt;adobeair-2.6.0-19170.i386&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I downloaded the latest &lt;a href="http://www.tweetdeck.com/desktop/"&gt;TweakDeck&lt;/a&gt; '.air' file:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[nwsmith@fed15-x64 Downloads]$ ll&lt;br /&gt;-rw-rw-r--. 1 nwsmith nwsmith 2373967 Jun 30 20:46 TweetDeck_0_37.6.air&lt;br /&gt;[nwsmith@fed15-x64 Downloads]$ md5sum -b TweetDeck_0_37.6.air &lt;br /&gt;d8dc9c0fbff37c31c8af6a788854cb25 *TweetDeck_0_37.6.air&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;..but when you try to install it, it aborts with error message:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Sorry, an error has occured.&lt;br /&gt;The application could not be installed because the installer file is&lt;br /&gt;damaged. Try obtaining a new installer file from the application author.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Eventually I discovered that the 'Adobe AIR Application Installer' was recording a log file:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[nwsmith@fed15-x64 ~]$ cd /home/nwsmith/.appdata/Adobe/AIR/Logs/&lt;br /&gt;[nwsmith@fed15-x64 Logs]$ ll&lt;br /&gt;-rw-rw-r--. 1 nwsmith nwsmith 83863 Jun 30 21:41 Install.log&lt;br /&gt;[nwsmith@fed15-x64 Logs]$ cat Install.log &lt;br /&gt;[Adobe AIR Application Installer:4156][INFO] Application Installer begin with version 2.6.0.19170 on Linux x86&lt;br /&gt;[Adobe AIR Application Installer:4156][INFO] Commandline is: &lt;br /&gt;[Adobe AIR Application Installer:4156][INFO] Installed runtime (2.6.0.19170) located at /opt/Adobe AIR&lt;br /&gt;[Adobe AIR Application Installer:4156][INFO] Cancel request received&lt;br /&gt;[Adobe AIR Application Installer:4156][INFO] Application Installer end with exit code 6&lt;br /&gt;[Adobe AIR Application Installer:4192][INFO] Application Installer begin with version 2.6.0.19170 on Linux x86&lt;br /&gt;[Adobe AIR Application Installer:4192][INFO] Commandline is: &lt;br /&gt;[Adobe AIR Application Installer:4192][INFO] Installed runtime (2.6.0.19170) located at /opt/Adobe AIR&lt;br /&gt;[Adobe AIR Application Installer:4192][INFO] Unpackaging file:///home/nwsmith/Downloads/TweetDeck_0_37.6.air to /tmp/FlashTmp.NhdYfW&lt;br /&gt;[Adobe AIR Application Installer:4192][INFO] Application signature verified&lt;br /&gt;[Adobe AIR Application Installer:4192][INFO] Unpackaging/validation complete&lt;br /&gt;[Adobe AIR Application Installer:4192][INFO] No app located for appID 'TweetDeckFast' and pubID 'FFF259DC0CE2657847BBB4AFF0E62062EFC56543.1'&lt;br /&gt;[Adobe AIR Application Installer:4192][INFO] Converting unpackaged application to a native installation package in /tmp/FlashTmp.wkEIg0&lt;br /&gt;[Adobe AIR Application Installer:4192][ERR] Native installation package creation failed: [ErrorEvent type="error" bubbles=false cancelable=false eventPhase=2 text="Unhandled exception Error: Error creating the package /opt/Adobe AIR/Versions/1.0/Resources/rpmbuilder error : symbol not found: parseSpec, /usr/lib/librpmbuild.so: undefined symbol: parseSpec error :&lt;br /&gt;&lt;-- SNIP--&gt;&lt;br /&gt;File not found: /tmp/FlashTmp.wkEIg0/build/usr/share/app-install/desktop/tweetdeckfast.fff259dc0ce2657847bbb4aff0e62062efc56543.1.desktop" errorID=1]&lt;br /&gt;[Adobe AIR Application Installer:4192][ERR] Application Installer end with exit code 7&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So Googling on "symbol not found: parseSpec" we find these links:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://forums.adobe.com/thread/831831?decorator=print&amp;displayFullThread=true"&gt;Problem with air application installer on Fedora 15 linux&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=692381"&gt;Bug 692381 - missing parseSpec in librpmbuild.so&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;...where Panu Matilainen summaries:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"Yes, the entire librpmbuild API has changed in rpm 4.9.x and parseSpec() no&lt;br /&gt;longer exists, it's been replaced by a new saner interface known as&lt;br /&gt;rpmSpecParse(). Air (whatever it is, apparently some Adobe proprietary app)&lt;br /&gt;appears to be cheating against soname changes by using the non-versioned -devel&lt;br /&gt;.so symlink and now gets burned because of it. It'd be much better off&lt;br /&gt;launching rpmbuild than using the librpmbuild API.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And yes, Fedora 15 is using rpm 4.9.x:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[nwsmith@fed15-x64 ~]$ rpm -qa | grep ^rpm | sort&lt;br /&gt;rpm-4.9.0-9.fc15.x86_64&lt;br /&gt;rpm-build-4.9.0-9.fc15.x86_64&lt;br /&gt;rpm-build-libs-4.9.0-9.fc15.i686&lt;br /&gt;rpm-build-libs-4.9.0-9.fc15.x86_64&lt;br /&gt;rpm-devel-4.9.0-9.fc15.i686&lt;br /&gt;rpm-devel-4.9.0-9.fc15.x86_64&lt;br /&gt;rpm-libs-4.9.0-9.fc15.i686&lt;br /&gt;rpm-libs-4.9.0-9.fc15.x86_64&lt;br /&gt;rpm-python-4.9.0-9.fc15.x86_64&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So it looks like Adobe need to fix it. Unfortunately, we read &lt;a href="http://kb2.adobe.com/cps/521/cpsid_52132.html"&gt;here&lt;/a&gt; that:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"Note: Beginning June 14 2011, Adobe AIR is no longer supported for desktop Linux distributions."&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So I've given up on this. A pity as it would have been really nice to run TweetDeck on Fedora Linux. Anyway now I guess I can remove all those 32-bit libraries I just install, and revert to a 'clean' 64-bit environment.&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;B&gt;Status Update: 2011-07-15&lt;/B&gt;&lt;br /&gt;Please read Sérgio Basto's comments to this post. Sérgio seems to have found a way around the problem, using &lt;a href="http://fedoraproject.org/wiki/Projects/Mock"&gt;Mock&lt;/a&gt;. I've not yet tried this for myself, but I will give it a try when I have a few minutes to spare. If anyone else tried this method, please post a comment with your result.&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;B&gt;Status Update: 2011-07-22&lt;/B&gt;&lt;br /&gt;Chris Beckenbach is reporting success with Sergio's method.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-237032844690727150?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/237032844690727150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=237032844690727150' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/237032844690727150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/237032844690727150'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2011/06/installing-tweetdeck-with-adobe-air-on.html' title='Installing TweetDeck with Adobe AIR on Fedora 15'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-2675690873452423512</id><published>2011-06-14T23:21:00.006+01:00</published><updated>2011-10-11T15:49:42.327+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='dtrace'/><title type='text'>DTrace for Linux: Progress, but still a work in progress</title><content type='html'>A couple of months back, I blog &lt;a href="http://nwsmith.blogspot.com/2011/03/trying-dtrace-for-linux-on-fedora-14.html"&gt;posted&lt;/a&gt; on Paul Fox's port of DTrace to Linux. I've continued to play around with it since then, and so I think its about time for another blog post about it.&lt;br /&gt;&lt;br /&gt;Certainly now there is no problem compiling DTrace for Linux on Fedora 14 with the 2.6.35 kernel, provided you install the necessary dependencies that I listed in the previous post.  Since my initial report, I've exchanged  many emails with Paul, and he had been able to incorporate in the code the necessary fixes to support compiling on Fedora.&lt;br /&gt;&lt;br /&gt;Paul has spent a lot of  time recently on the cross-call (aka xcall) problem, and you can read the details on Paul's &lt;a href="http://crtags.blogspot.com/"&gt;blog&lt;/a&gt;.  Certainly this is a challenging area, and although there are still some issues, it looks to me like Paul is determined to fully resolve the issues.&lt;br /&gt;&lt;br /&gt;Ok, so let's give DTrace for Linux a bit of a work out and discover a little bit more about it.&lt;br /&gt;&lt;br /&gt;After compiling, with 'make all' and installing with 'make install', you load&lt;br /&gt;the DTrace module, with 'make load'.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# uname -a&lt;br /&gt;Linux fed14-64 2.6.35.13-91.fc14.x86_64 #1 SMP Tue May 3 13:23:06 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;# make load&lt;br /&gt;tools/load.pl&lt;br /&gt;21:41:23 Syncing...&lt;br /&gt;21:41:24 Loading: build/driver/dtracedrv.ko&lt;br /&gt;21:41:25 Preparing symbols...&lt;br /&gt;21:41:25 Probes available: 319433&lt;br /&gt;21:41:30 Time: 7s&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So you can see there are a lot of probes available. Let's look at a break down:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# dtrace -l | awk '{ print $2 }' | sort | uniq -c | sort -n&lt;br /&gt;      1 PROVIDER&lt;br /&gt;      3 dtrace&lt;br /&gt;      4 io&lt;br /&gt;     17 profile&lt;br /&gt;   1270 syscall&lt;br /&gt;  63808 fbt&lt;br /&gt; 254330 instr&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can see that most of the probes come from the '&lt;a href=" http://librenix.com/?inode=13584"&gt;instr&lt;/a&gt;' provider, which I believe is unique to the Linux port of DTrace.  And note that the number of providers available is less than what is available on Solaris and FreeBSD.&lt;br /&gt;&lt;br /&gt;Let's list the probes, where there are only a small number of probes for the providers:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[root@fed14-64 ~]# dtrace -l -n dtrace:::&lt;br /&gt;   ID   PROVIDER            MODULE                          FUNCTION NAME&lt;br /&gt;    1     dtrace                                                     BEGIN&lt;br /&gt;    2     dtrace                                                     END&lt;br /&gt;    3     dtrace                                                     ERROR&lt;br /&gt;[root@fed14-64 ~]# dtrace -l -n io:::&lt;br /&gt;   ID   PROVIDER            MODULE                          FUNCTION NAME&lt;br /&gt;    4         io      do_sync_read                                   start&lt;br /&gt;    5         io      do_sync_read                                   done&lt;br /&gt;    6         io     do_sync_write                                   start&lt;br /&gt;    7         io     do_sync_write                                   done&lt;br /&gt;[root@fed14-64 ~]# dtrace -l -n profile:::&lt;br /&gt;   ID   PROVIDER            MODULE                          FUNCTION NAME&lt;br /&gt;254912    profile                                                     profile-97&lt;br /&gt;254913    profile                                                     profile-199&lt;br /&gt;254914    profile                                                     profile-499&lt;br /&gt;254915    profile                                                     profile-997&lt;br /&gt;254916    profile                                                     profile-1999&lt;br /&gt;254917    profile                                                     profile-4001&lt;br /&gt;254918    profile                                                     profile-4999&lt;br /&gt;254919    profile                                                     tick-1&lt;br /&gt;254920    profile                                                     tick-10&lt;br /&gt;254921    profile                                                     tick-100&lt;br /&gt;254922    profile                                                     tick-500&lt;br /&gt;254923    profile                                                     tick-1000&lt;br /&gt;254924    profile                                                     tick-5000&lt;br /&gt;319429    profile                                                     tick-1ms&lt;br /&gt;319430    profile                                                     tick-1s&lt;br /&gt;319431    profile                                                     tick-5s&lt;br /&gt;319432    profile                                                     tick-10s&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now let's give a breakdown of the number of probes available for each modules for the FBT (Function Boundary Tracing) provider. This will give you an idea of what kernel modules I have loaded on my test system.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[root@fed14-64 dtrace-20110404]# dtrace -l -P fbt | awk '{print $3}' | sort | uniq -c | sort -n&lt;br /&gt;      1 MODULE&lt;br /&gt;     12 freq_table&lt;br /&gt;     13 output&lt;br /&gt;     14 speedstep_lib&lt;br /&gt;     15 iTCO_vendor_support&lt;br /&gt;     15 p4_clockmod&lt;br /&gt;     23 i2c_i801&lt;br /&gt;     29 ppdev&lt;br /&gt;     30 i2c_algo_bit&lt;br /&gt;     31 iTCO_wdt&lt;br /&gt;     33 snd_page_alloc&lt;br /&gt;     37 snd_seq_device&lt;br /&gt;     37 soundcore&lt;br /&gt;     41 dcdbas&lt;br /&gt;     41 snd_hwdep&lt;br /&gt;     61 sata_sil24&lt;br /&gt;     63 microcode&lt;br /&gt;     79 snd_hda_intel&lt;br /&gt;     83 parport_pc&lt;br /&gt;     99 snd_timer&lt;br /&gt;    100 drm_kms_helper&lt;br /&gt;    109 video&lt;br /&gt;    138 scsi_transport_spi&lt;br /&gt;    141 i2c_core&lt;br /&gt;    155 parport&lt;br /&gt;    199 snd_hda_codec_idt&lt;br /&gt;    337 ttm&lt;br /&gt;    357 snd&lt;br /&gt;    357 tg3&lt;br /&gt;    359 snd_seq&lt;br /&gt;    420 fuse&lt;br /&gt;    424 aic7xxx&lt;br /&gt;    490 snd_hda_codec&lt;br /&gt;    495 snd_pcm&lt;br /&gt;    744 e1000e&lt;br /&gt;    867 drm&lt;br /&gt;   1671 ipv6&lt;br /&gt;   1875 nouveau&lt;br /&gt;  52615 kernel&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you can see from the above, I have two different network interface cards in my system. One is a Broadcom, supported by the 'tg3' module, and the other is an Intel card, supported by the 'e1000e' module. &lt;br /&gt;&lt;br /&gt;Lets list the probes available for one of the FBT modules:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# dtrace -l -n fbt:p4_clockmod::entry&lt;br /&gt;   ID   PROVIDER            MODULE                          FUNCTION NAME&lt;br /&gt;310254        fbt       p4_clockmod                    cpufreq_p4_get entry&lt;br /&gt;310256        fbt       p4_clockmod                  cpufreq_p4_setdc entry&lt;br /&gt;310258        fbt       p4_clockmod                 cpufreq_p4_target entry&lt;br /&gt;310260        fbt       p4_clockmod                 cpufreq_p4_verify entry&lt;br /&gt;310262        fbt       p4_clockmod               cpufreq_p4_cpu_init entry&lt;br /&gt;310264        fbt       p4_clockmod                   cpufreq_p4_exit entry&lt;br /&gt;310266        fbt       p4_clockmod               cpufreq_p4_cpu_exit entry&lt;br /&gt;310268        fbt       p4_clockmod                    cleanup_module entry&lt;br /&gt;# dtrace -l -n fbt:p4_clockmod::return&lt;br /&gt;   ID   PROVIDER            MODULE                          FUNCTION NAME&lt;br /&gt;310255        fbt       p4_clockmod                    cpufreq_p4_get return&lt;br /&gt;310257        fbt       p4_clockmod                  cpufreq_p4_setdc return&lt;br /&gt;310259        fbt       p4_clockmod                 cpufreq_p4_target return&lt;br /&gt;310261        fbt       p4_clockmod                 cpufreq_p4_verify return&lt;br /&gt;310263        fbt       p4_clockmod               cpufreq_p4_cpu_init return&lt;br /&gt;310265        fbt       p4_clockmod                   cpufreq_p4_exit return&lt;br /&gt;310267        fbt       p4_clockmod               cpufreq_p4_cpu_exit return&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, enough of listing probes! Let show some simple DTrace one-liners in action on Linux:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# dtrace -n 'syscall:::entry { @num[execname] = count(); }'&lt;br /&gt;dtrace: description 'syscall:::entry ' matched 635 probes&lt;br /&gt;^C&lt;br /&gt;  audispd                                                           1&lt;br /&gt;  udisks-daemon                                                     6&lt;br /&gt;  rtkit-daemon                                                      8&lt;br /&gt;  gnome-settings-                                                   9&lt;br /&gt;  abrtd                                                            10&lt;br /&gt;  console-kit-dae                                                  10&lt;br /&gt;  hald-addon-acpi                                                  12&lt;br /&gt;  sendmail                                                         14&lt;br /&gt;  gnome-screensav                                                  15&lt;br /&gt;  sshd                                                             17&lt;br /&gt;  crond                                                            18&lt;br /&gt;  dbus-daemon                                                      18&lt;br /&gt;  gnome-panel                                                      33&lt;br /&gt;  gnome-power-man                                                  38&lt;br /&gt;  clock-applet                                                     49&lt;br /&gt;  gvfs-afc-volume                                                  60&lt;br /&gt;  metacity                                                         68&lt;br /&gt;  irqbalance                                                      120&lt;br /&gt;  nautilus                                                        157&lt;br /&gt;  gedit                                                           362&lt;br /&gt;  dtrace                                                         1553&lt;br /&gt;  Xorg                                                          10039&lt;br /&gt;  firefox                                                       12083&lt;br /&gt;#&lt;br /&gt;# dtrace -n 'syscall:::entry { @num[probefunc] = count(); }'&lt;br /&gt;dtrace: description 'syscall:::entry ' matched 635 probes&lt;br /&gt;^C&lt;br /&gt;  rt_sigreturn                                                      1&lt;br /&gt;  brk                                                               2&lt;br /&gt;  getdents                                                          2&lt;br /&gt;  select                                                            6&lt;br /&gt;  stat                                                              8&lt;br /&gt;  nanosleep                                                        11&lt;br /&gt;  rt_sigaction                                                     16&lt;br /&gt;  munmap                                                           18&lt;br /&gt;  close                                                            21&lt;br /&gt;  fstat                                                            21&lt;br /&gt;  mmap                                                             21&lt;br /&gt;  inotify_add_watch                                                26&lt;br /&gt;  open                                                             32&lt;br /&gt;  rt_sigprocmask                                                   32&lt;br /&gt;  ioctl                                                            49&lt;br /&gt;  write                                                           195&lt;br /&gt;  poll                                                            525&lt;br /&gt;  read                                                            736&lt;br /&gt;  futex                                                          1283&lt;br /&gt;#&lt;br /&gt;# dtrace -n 'fbt:e1000e::entry { @num[probefunc] = count(); }'&lt;br /&gt;dtrace: description 'fbt:e1000e::entry ' matched 373 probes&lt;br /&gt;^C&lt;br /&gt;  e1000_clean                                                      17&lt;br /&gt;  e1000_clean_rx_irq                                               17&lt;br /&gt;  e1000_clean_tx_irq                                               17&lt;br /&gt;  e1000_desc_unused.clone.26                                       17&lt;br /&gt;  e1000_intr_msi                                                   17&lt;br /&gt;  e1000_irq_enable                                                 17&lt;br /&gt;  e1000_watchdog                                                   17&lt;br /&gt;  e1000_watchdog_task                                              17&lt;br /&gt;  e1000e_get_laa_state_82571                                       17&lt;br /&gt;  e1000e_has_link                                                  17&lt;br /&gt;  e1000e_update_adaptive                                           17&lt;br /&gt;  e1000e_update_stats                                              17&lt;br /&gt;  napi_schedule_prep                                               17&lt;br /&gt;  test_and_set_bit                                                 17&lt;br /&gt;  e1000_ioctl                                                      34&lt;br /&gt;  e1000_get_stats                                                 411&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is the 'instr' provider in action:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# dtrace -n 'instr:e1000e:: { @num[probefunc] = count(); }'&lt;br /&gt;dtrace: description 'instr:e1000e:: ' matched 3472 probes&lt;br /&gt;^C&lt;br /&gt;&lt;br /&gt;  e1000_get_drvinfo-je                                              1&lt;br /&gt;  e1000_get_drvinfo-jne                                             1&lt;br /&gt;  e1000e_get_sset_count-ja                                          3&lt;br /&gt;  e1000_get_drvinfo-callr                                           5&lt;br /&gt;  e1000_clean_rx_irq-callr                                         27&lt;br /&gt;  e1000_clean_rx_irq-je                                            27&lt;br /&gt;  e1000_desc_unused.clone.26-jbe                                   27&lt;br /&gt;  e1000_irq_enable-je                                              27&lt;br /&gt;  e1000_watchdog-callr                                             27&lt;br /&gt;  e1000e_get_laa_state_82571-jne                                   27&lt;br /&gt;  e1000e_update_adaptive-jbe                                       27&lt;br /&gt;  e1000e_update_adaptive-je                                        27&lt;br /&gt;  e1000e_update_adaptive-jne                                       27&lt;br /&gt;  e1000e_update_stats-jbe                                          27&lt;br /&gt;  napi_schedule_prep-callr                                         27&lt;br /&gt;  napi_schedule_prep-jne                                           27&lt;br /&gt;  test_and_set_bit-lock                                            27&lt;br /&gt;  e1000_clean-jne                                                  54&lt;br /&gt;  e1000_intr_msi-callr                                             54&lt;br /&gt;  e1000_intr_msi-je                                                54&lt;br /&gt;  e1000e_has_link-je                                               54&lt;br /&gt;  e1000e_update_stats-ja                                           54&lt;br /&gt;  e1000_clean-callr                                                81&lt;br /&gt;  e1000_clean-je                                                   81&lt;br /&gt;  e1000_watchdog_task-jne                                          81&lt;br /&gt;  e1000_clean_tx_irq-je                                           108&lt;br /&gt;  e1000_watchdog_task-je                                          108&lt;br /&gt;  e1000_watchdog_task-callr                                       189&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;One of the aspects that Paul has been developing recently is a suite of test programs that can be used to stress test the system, and expose any problems with the DTrace for Linux port. To try this out, run 'make test'.&lt;br /&gt;&lt;br /&gt;Ok, I'm out of time for tonight.  Hopefully I can find time for some more post to this blog soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-2675690873452423512?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/2675690873452423512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=2675690873452423512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/2675690873452423512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/2675690873452423512'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2011/06/dtrace-for-linux-progress-but-still.html' title='DTrace for Linux: Progress, but still a work in progress'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-6952323564829131912</id><published>2011-03-31T22:26:00.028+01:00</published><updated>2011-10-11T15:51:50.891+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='dtrace'/><title type='text'>Trying DTrace for Linux on Fedora 14</title><content type='html'>Some months, or even years ago, I noticed that Paul Fox, the author of the &lt;a href="http://www.crisp.demon.co.uk/"&gt;CRiSP&lt;/a&gt; editor, was working on a port of &lt;a href="http://en.wikipedia.org/wiki/DTrace"&gt;DTrace&lt;/a&gt; to Linux. Paul seems to have started work on this port back at the start of 2008. He has made regular progress reports on his website &lt;a href="http://www.crisp.demon.co.uk/blog/"&gt;blog&lt;/a&gt;, and from June 2010, he also started using Google's &lt;a href="http://crtags.blogspot.com/"&gt;blogger&lt;/a&gt;, which did seem to have taken over as Paul's main blog, but now I notice he has put all the blogger posts back on his website blog!&lt;br /&gt;&lt;br /&gt;In February 2011, I finally go around to trying out the code.&lt;br /&gt;&lt;br /&gt;Paul seems to be developing on/for Ubuntu, but I wanted to try it on Fedora 14. I had a number of problems, first indentifying which RPM packages I needed to install for the build.  And then there were various compile problems, and it took me a while to figure out how to resolve these problems, as I would not claim to be any sort of expert on this.&lt;br /&gt;&lt;br /&gt;Here is a list of the RPM packages I needed to install to get the code to compile:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;binutils-devel&lt;br /&gt;elfutils-libelf-devel&lt;br /&gt;kernel-devel&lt;br /&gt;libdwarf&lt;br /&gt;libdwarf-devel&lt;br /&gt;libdwarf-static&lt;br /&gt;zlib-devel&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I was eventually able to work out the necessary patches to get it to compile on Fedora 14. I did try emailing Paul to give him some feedback, and I think he may have read my emails, but so far I have never received a reply back from him!&lt;br /&gt;&lt;br /&gt;Here for posterity, I publish my patch, just to prove I did some work! But note that this is already out of date, as Paul's DTrace for Linux port has continued to moved on.&lt;br /&gt;&lt;pre&gt;$ diff -uNr dtrace-20110215 dtrace-20110215.fed14/&lt;br /&gt;diff -uNr dtrace-20110215/cmd/ctfconvert/dwarf.c dtrace-20110215.fed14/cmd/ctfconvert/dwarf.c&lt;br /&gt;--- dtrace-20110215/cmd/ctfconvert/dwarf.c      2010-08-24 23:34:26.000000000 +0100&lt;br /&gt;+++ dtrace-20110215.fed14/cmd/ctfconvert/dwarf.c        2011-03-18 01:19:57.786335906 +0000&lt;br /&gt;@@ -88,9 +88,9 @@&lt;br /&gt; #include &amp;lt;errno.h&amp;gt;&lt;br /&gt; #include "linux.h"&lt;br /&gt; #include &amp;lt;libelf.h&amp;gt;&lt;br /&gt;-#include &amp;lt;libdwarf.h&amp;gt;&lt;br /&gt;+#include &amp;lt;libdwarf/libdwarf.h&amp;gt;&lt;br /&gt; #include &amp;lt;libgen.h&amp;gt;&lt;br /&gt;-#include &amp;lt;dwarf.h&amp;gt;&lt;br /&gt;+#include &amp;lt;libdwarf/dwarf.h&amp;gt;&lt;br /&gt; &lt;br /&gt; #include "ctf_headers.h"&lt;br /&gt; #include "ctftools.h"&lt;br /&gt;diff -uNr dtrace-20110215/cmd/ctfconvert/makefile dtrace-20110215.fed14/cmd/ctfconvert/makefile&lt;br /&gt;--- dtrace-20110215/cmd/ctfconvert/makefile     2010-10-17 17:55:26.000000000 +0100&lt;br /&gt;+++ dtrace-20110215.fed14/cmd/ctfconvert/makefile       2011-03-18 01:19:23.255448742 +0000&lt;br /&gt;@@ -44,7 +44,7 @@&lt;br /&gt; LIBS = ../../build/libctf.a -ldwarf -lbfd -lelf -lz&lt;br /&gt;&lt;br /&gt; all:&lt;br /&gt;-       @if [ ! -f /usr/lib/libdwarf.a ]; then \&lt;br /&gt;+       @if [ ! -f /usr/lib64/libdwarf.a ]; then \&lt;br /&gt;                echo "=================================================================" ; \&lt;br /&gt;                echo "=== You need /usr/lib/libdwarf.a and /usr/lib/libbfd.a installed to build." ; \&lt;br /&gt;                echo "=== " ; \&lt;br /&gt;diff -uNr dtrace-20110215/tools/build.pl dtrace-20110215.fed14/tools/build.pl&lt;br /&gt;--- dtrace-20110215/tools/build.pl      2011-01-26 23:36:06.000000000 +0000&lt;br /&gt;+++ dtrace-20110215.fed14/tools/build.pl        2011-03-19 14:16:48.725192127 +0000&lt;br /&gt;@@ -59,7 +59,7 @@&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if (! -f "/usr/include/gelf.h") {&lt;br /&gt;-               print "Error: you dont appear to have /usr/include/elf.h, which means\n";&lt;br /&gt;+               print "Error: you dont appear to have /usr/include/gelf.h, which means\n";&lt;br /&gt;                print "compilation will fail. You should add the libelf-dev package to\n";&lt;br /&gt;                print "your system and retry the 'make all'.\n";&lt;br /&gt;                exit(1);&lt;br /&gt;diff -uNr dtrace-20110215/tools/mkctf.sh dtrace-20110215.fed14/tools/mkctf.sh&lt;br /&gt;--- dtrace-20110215/tools/mkctf.sh      2010-08-26 10:03:21.000000000 +0100&lt;br /&gt;+++ dtrace-20110215.fed14/tools/mkctf.sh        2011-03-18 01:21:59.600884493 +0000&lt;br /&gt;@@ -19,11 +19,11 @@&lt;br /&gt; cd $build_dir&lt;br /&gt; cmd=`grep '^cmd_' $pwd/build/driver/.cpu_x86.o.cmd |&lt;br /&gt; sed -e 's/^.* := //' |&lt;br /&gt;-sed -e 's/-Wp,-MD[^ ]* /-g /' |&lt;br /&gt;+sed -e 's/-Wp,-MD[^ ]* /-gdwarf-2 /' |&lt;br /&gt; sed -e 's/\\\\//g' |&lt;br /&gt; sed -e 's/cpu_x86/ctf_struct/g' `&lt;br /&gt; #echo $cmd&lt;br /&gt; eval $cmd&lt;br /&gt; cd $pwd&lt;br /&gt;-build/ctfconvert -L label -o build/linux-$BUILD_KERNEL.ctf build/driver/.tmp_ctf_struct.o&lt;br /&gt;+build/ctfconvert -L label -o build/linux-$BUILD_KERNEL.ctf build/driver/ctf_struct.o&lt;br /&gt; ls -l build/linux-$BUILD_KERNEL.ctf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And here is a very quick and basic test, to show DTrace running:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# uname -a:&lt;br /&gt;Linux fed14-64 2.6.35.11-83.fc14.x86_64 #1 SMP Mon Feb 7 07:06:44 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;# make load&lt;br /&gt;tools/load.pl&lt;br /&gt;01:26:50 Syncing...&lt;br /&gt;01:26:50 Loading: build/driver/dtracedrv.ko&lt;br /&gt;01:26:52 Preparing symbols...&lt;br /&gt;01:26:52 Probes available: 314700&lt;br /&gt;01:26:56 Time: 6s&lt;br /&gt;&lt;br /&gt;# dtrace -n BEGIN&lt;br /&gt;dtrace: description 'BEGIN' matched 1 probe&lt;br /&gt;CPU     ID                    FUNCTION:NAME&lt;br /&gt;  1      1                           :BEGIN&lt;br /&gt;^C&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Admittedly, that is  the most basic DTrace one-liner you can possibly try. But I did also try a few 'syscall' one-liners, mostly with success.&lt;br /&gt;&lt;br /&gt;Anyway, once I got this going, I wanted to try with Paul's latest release of the code, to get his latest bug fixes, but I was stopped in my tracks, as his FTP site was down. And it continued to be down, for over a week, which was quite frustrating.  I tried emailing him, and leaving a blog comment, but again, I got no response. And there was no mention of this problem on his web sites, or blog.&lt;br /&gt;&lt;br /&gt;Eventualy, while Googling, I discovered that Paul has a Twitter account, and that he had announced there, that he has a new host name for his FTP site. There is no mention of Paul's Twitter account on his web sites or blogs, at this moment. So I will  publicize it here, as he does seem to make good use of it to report progress with DTrace for Linux:&lt;br /&gt;&lt;pre&gt;&lt;a href="http://twitter.com/#!/crispeditor"&gt;http://twitter.com/#!/crispeditor&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;And for anyone wanting to try compiling the DTrace for Linux code, please note the new download site is:&lt;br /&gt;&lt;pre&gt;&lt;a href="ftp://crisp.dyndns-server.com/pub/release/website/dtrace/"&gt;ftp://crisp.dyndns-server.com/pub/release/website/dtrace/&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ok, so now I guess I had better download the latest release of the code, and try it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-6952323564829131912?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/6952323564829131912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=6952323564829131912' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/6952323564829131912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/6952323564829131912'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2011/03/trying-dtrace-for-linux-on-fedora-14.html' title='Trying DTrace for Linux on Fedora 14'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-7483392772925422714</id><published>2011-01-27T17:00:00.002Z</published><updated>2011-01-27T17:03:54.052Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='selinux'/><category scheme='http://www.blogger.com/atom/ns#' term='hwclock'/><title type='text'>selinux, hwclock and /etc/adjtime</title><content type='html'>If you are having problems with hwclock, you may want to remove the file '/etc/adjtime' and let hwclock recreate the file, for reasons discussed here:&lt;br /&gt;&lt;br /&gt;  &lt;a href="http://www.spinics.net/lists/util-linux-ng/msg00015.html"&gt; "hwclock never updates drift factor in /etc/adjtime if time is always set more than once a day"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However, if you have selinux enabled, with an enforcing targeted policy, this will result in the wrong file security context. Here is how to fix it:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  # ls -Z /etc/adjtime&lt;br /&gt;  -rw-r--r--  root root root:object_r:etc_t:s0           /etc/adjtime&lt;br /&gt;&lt;br /&gt;  # restorecon -v /etc/adjtime&lt;br /&gt;  restorecon reset /etc/adjtime context root:object_r:etc_t:s0-&gt;system_u:object_r:adjtime_t:s0&lt;br /&gt;&lt;br /&gt;  # ls -Z /etc/adjtime&lt;br /&gt;  -rw-r--r--  root root system_u:object_r:adjtime_t:s0   /etc/adjtime&lt;br /&gt;&lt;br /&gt;  # grep adjtime /etc/selinux/targeted/contexts/files/file_contexts&lt;br /&gt;  /etc/adjtime    --      system_u:object_r:adjtime_t:s0&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-7483392772925422714?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/7483392772925422714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=7483392772925422714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/7483392772925422714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/7483392772925422714'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2011/01/selinux-hwclock-and-etcadjtime.html' title='selinux, hwclock and /etc/adjtime'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-8739451579003952249</id><published>2010-07-29T17:10:00.003+01:00</published><updated>2010-07-29T17:20:43.444+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Access 97'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Running Access 97 on Windows 7</title><content type='html'>Today I had to get Access 97 running on a Windows 7 64bit PC.  When I arrived on site, my colleague had already successfully installed Office 97, and the SR-1 patch (sr1off97.exe).  So I guess that the well known "Hatten" file issue had already been resolved.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; "There is no license" error message starting Microsoft Access&lt;br /&gt; &lt;a href="http://support.microsoft.com/kb/141373"&gt;http://support.microsoft.com/kb/141373&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;On further investigation, I found that an attempt to install the SR-2 patch had failed, and also that the on-line help for Access 97 was not working at all.  And I could see that the "Programming help" file had not been installed.&lt;br /&gt;&lt;br /&gt;To install "Programming help", I ran the maintenance setup, but it soon failed, reporting message "Setup Error 825 - Object 9807". This issue is covered by the Microsoft support Article ID: 156638&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; OFF97: International English SR-1 Patch Offpro97.inf&lt;br /&gt; &lt;a href="http://support.microsoft.com/kb/156638"&gt;http://support.microsoft.com/kb/156638&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Basically, you need to download file "offpro97.exe" and extract from that the file "off97pro.inf" and copy it across to the 'setup' directory, replacing the existing file.&lt;br /&gt;&lt;br /&gt;To get the help working, you need to install support for "winhelp32.exe".&lt;br /&gt;This issue is covered by the Microsoft support Article ID: 917607&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; I cannot open Help files that require the Windows Help (WinHlp32.exe) program&lt;br /&gt; &lt;a href="http://support.microsoft.com/kb/917607"&gt;http://support.microsoft.com/kb/917607&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;But then when you try to use the Access 97 help files, you will get error "There was a problem running the macro. (1037)".  The fix for this is covered in the same Microsoft support article.&lt;br /&gt;&lt;br /&gt;Basically, you need to run "C:\WINDOWS\syswow64\regedit32.exe" and create key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WinHelp" and then create DWORD "AllowProgrammaticMacros" and set it to value "1".&lt;br /&gt;&lt;br /&gt;In order to install the SR-2 patch (sr2bof97.exe), you need to replace some of the Windows 7 font files, with older versions copied from Windows XP.  These are the font files, from Windows XP, that I used:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;17/07/2004  11:39   127,596 comic.ttf&lt;br /&gt;29/08/2002  13:00   111,476 comicbd.ttf&lt;br /&gt;21/11/1996  00:00    41,408 hatten.ttf&lt;br /&gt;17/07/2004  22:55   383,140 tahoma.ttf&lt;br /&gt;17/07/2004  22:55   355,436 tahomabd.ttf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Finally, I installed file "Jet35sp3.exe" to make sure the Jet Engine was at the final version.&lt;br /&gt;&lt;br /&gt;Ok, so that's it. I tried testing a few things with Access 97, and it seems to run fine on Windows 7.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-8739451579003952249?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/8739451579003952249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=8739451579003952249' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/8739451579003952249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/8739451579003952249'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2010/07/running-access-97-on-windows-7.html' title='Running Access 97 on Windows 7'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-6574425322668626825</id><published>2010-07-19T15:18:00.005+01:00</published><updated>2010-07-21T15:55:16.124+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='esx'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><title type='text'>Patching vmxnet to disable LRO</title><content type='html'>We've been playing with two Centos 5.5 virtual machines connected over a virtual switch on VMware ESX 4.0 update 2. Unfortunately we experienced very poor TCP performance. I think the same issue affects ESX 4.1 as we found this reference in the release notes:&lt;br /&gt;&lt;pre&gt;&lt;b&gt;Poor TCP performance can occur in traffic-forwarding virtual machines with LRO enabled&lt;/b&gt;&lt;br /&gt;Some Linux modules cannot handle LRO-generated packets.&lt;br /&gt;As a result, having LRO enabled on a VMXNET 2 or VMXNET 3 device in a traffic&lt;br /&gt;forwarding virtual machine running a Linux guest operating system can cause&lt;br /&gt;poor TCP performance. LRO is enabled by default on these devices.&lt;br /&gt;&lt;br /&gt;Workaround: In traffic-forwarding virtual machines running Linux guests,&lt;br /&gt;set the module load time parameter for the VMXNET 2 or VMXNET 3 Linux driver&lt;br /&gt;to include disable_lro=1.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We found that this works:&lt;br /&gt;&lt;pre&gt;# rmmod vmxnet&lt;br /&gt;# modprobe vmxnet disable_lro=1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;BUT the problem is how to make vmxnet default to disabling LRO when the VM is first booted.&lt;br /&gt;&lt;br /&gt;We tried editing '/etc/modprobe.conf' and adding 'options vmxnet disable_lro=1' but this was not sufficent.  It seems that the vmxnet module is first loaded during bootup from the initrd.&lt;br /&gt;&lt;br /&gt;Our conclusion was that patching the source code of vmxnet was the best way. So here is what we did:&lt;br /&gt;&lt;pre&gt;# cd /usr/lib/vmware-tools/modules/source/&lt;br /&gt;# tar xvf vmxnet.tar&lt;br /&gt;# cd vmxnet-only&lt;br /&gt;# grep -n disable_lro *&lt;br /&gt;vmxnet.c:155:static int disable_lro = 0;&lt;br /&gt;vmxnet.c:157:   module_param(disable_lro, int, 0);&lt;br /&gt;vmxnet.c:159:   MODULE_PARM(disable_lro, "i");&lt;br /&gt;vmxnet.c:931:       !disable_lro) {&lt;br /&gt;# cp vmxnet.c vmxnet.c.orig&lt;br /&gt;# chmod +w vmxnet.c&lt;br /&gt;# vi vmxnet.c&lt;br /&gt;# diff -u vmxnet.c.orig vmxnet.c&lt;br /&gt;--- vmxnet.c.orig       2010-07-19 13:20:44.000000000 +0100&lt;br /&gt;+++ vmxnet.c    2010-07-19 13:57:43.000000000 +0100&lt;br /&gt;@@ -152,7 +152,7 @@&lt;br /&gt;#endif // VMXNET_DO_ZERO_COPY&lt;br /&gt;&lt;br /&gt;#ifdef VMXNET_DO_TSO&lt;br /&gt;-static int disable_lro = 0;&lt;br /&gt;+static int disable_lro = 1;&lt;br /&gt;#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2, 6, 9)&lt;br /&gt;module_param(disable_lro, int, 0);&lt;br /&gt;#else&lt;br /&gt;@@ -932,6 +932,14 @@&lt;br /&gt;  lp-&gt;lpd = TRUE;&lt;br /&gt;  printk(" lpd");&lt;br /&gt;}&lt;br /&gt;+&lt;br /&gt;+   if (disable_lro) {&lt;br /&gt;+     printk(" disable_lro:1");&lt;br /&gt;+   }&lt;br /&gt;+   else {&lt;br /&gt;+     printk(" disable_lro:0");&lt;br /&gt;+   }&lt;br /&gt;+&lt;br /&gt;#endif&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;# cd ..&lt;br /&gt;# mv vmxnet.tar vmxnet.tar.orig&lt;br /&gt;# tar cvf vmxnet.tar vmxnet-only/&lt;br /&gt;# vmware-config-tools.pl -c&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The change to the source code was just to change the value of the disable_lro variable from zero to one.  And we also added some code to report the value of the variable when the module loads.&lt;br /&gt;&lt;br /&gt;To recompile the modules, you will need these rpm packages installed:&lt;br /&gt;gcc, binutils, kernel-devel, kernel-headers&lt;br /&gt;&lt;br /&gt;For reference, the version of vmware tools we were using was:&lt;br /&gt;VMwareTools-8195-261974&lt;br /&gt;&lt;br /&gt;Of course, if you update vmware-tools, you may need to review this fix, and re-patch the file.&lt;br /&gt;&lt;br /&gt;If you are using the vmxnet3 driver, the fix should be similar to the above.&lt;br /&gt;&lt;br /&gt;I'd like to thank Michael Melling for helping test the above patch.&lt;br /&gt;Regards&lt;br /&gt;Nigel Smith&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-6574425322668626825?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/6574425322668626825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=6574425322668626825' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/6574425322668626825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/6574425322668626825'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2010/07/patching-vmxnet-to-disable-lro.html' title='Patching vmxnet to disable LRO'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-5193570093248246290</id><published>2009-08-21T16:06:00.005+01:00</published><updated>2009-08-22T18:39:40.886+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocs'/><category scheme='http://www.blogger.com/atom/ns#' term='dscp'/><category scheme='http://www.blogger.com/atom/ns#' term='qos'/><title type='text'>DSCP QoS &amp; Microsoft Office Live Meeting</title><content type='html'>Today I've double checked the QoS situation with Live Meeting, with the help of my colleague Michael Melling, and here are our conclusions:&lt;br /&gt;&lt;br /&gt;DSCP QosEnabled works fine with Office Communication 2007 R2 on Windows XP, Vista and Windows 7, provided you use the latest updated 3.5.6907.37 version. You can use WireShark to confirm the correct DSCP values are being used, as per my earlier blog post. The audio packets and the video packets will have a different DSCP value, so you can give them a appropriate priority over your network.&lt;br /&gt;&lt;br /&gt;Now what about Office Live Meeting?  We are using the 8.0.6362.128 version, which AFAIK is the latest.  If you are running Window XP, then no problem.  If you are trying to use Vista or Window 7, then there is a problem, as with those operating systems, Live Meeting fails to set a DCSP code on the packets.&lt;br /&gt;&lt;br /&gt;In our tests today, we started a video call in Office Communicator, then switched into 'Share Information Using Live Meeting' mode. This opens the Live Meeting window, but leaves audio &amp;amp; video going through Office Communicator. But as we are in conference mode, all A/V packets are&lt;br /&gt;now going via the OCS server. At this stage DSCP is still working fine. (We also have DCSP enabled on our OCS 2007 R2 server).&lt;br /&gt;&lt;br /&gt;Now by clicking the WebCam icon in Live Meeting, you can flip the Video into a separate windows called 'Voice &amp;amp; Video'. (Don't forget you also need to click the 'Join Audio' button). Now Live Meeting is handling the Video, and that's fine if you are using Windows XP. But if you use Vista or Windows 7, a check with WireShark will show none of the UDP packets being sent by Live Meeting have a DSCP value - they are all marked 0x00.&lt;br /&gt;&lt;br /&gt;To me that looks like a bug in Live Meeting.&lt;br /&gt;&lt;br /&gt;There is a partial work around. Using Group Policy on Vista and Window 7, you can force all packets generated by a particular application to use a DSCP value that you specify.  Unfortunately this does not allow you to differentiate between Audio and Video.&lt;br /&gt;&lt;br /&gt;Here are a couple of screen-shots were I setup a local group policy on a Vista PC, so that any UDP packets sent by Live Meeting are given a DSCP value of 56'd.  I used that value just while testing, to differentiate then from the A/V packets from Office Communicator.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWR2Wpu4j0I/So66keDApiI/AAAAAAAAABk/X74oHwP7UHc/s1600-h/LM+Qos+On+Vista.GIF"&gt;&lt;img style="cursor: pointer; width: 400px; height: 146px;" src="http://2.bp.blogspot.com/_CWR2Wpu4j0I/So66keDApiI/AAAAAAAAABk/X74oHwP7UHc/s400/LM+Qos+On+Vista.GIF" alt="" id="BLOGGER_PHOTO_ID_5372436541203326498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWR2Wpu4j0I/So66krASIuI/AAAAAAAAABs/W-Ojq1H9DdA/s1600-h/LM+Qos+On+Vista-2.GIF"&gt;&lt;img style="cursor: pointer; width: 400px; height: 204px;" src="http://1.bp.blogspot.com/_CWR2Wpu4j0I/So66krASIuI/AAAAAAAAABs/W-Ojq1H9DdA/s400/LM+Qos+On+Vista-2.GIF" alt="" id="BLOGGER_PHOTO_ID_5372436544681550562" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-5193570093248246290?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/5193570093248246290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=5193570093248246290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/5193570093248246290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/5193570093248246290'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2009/08/dscp-qos-microsoft-office-live-meeting.html' title='DSCP QoS &amp; Microsoft Office Live Meeting'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWR2Wpu4j0I/So66keDApiI/AAAAAAAAABk/X74oHwP7UHc/s72-c/LM+Qos+On+Vista.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-4265393741762392969</id><published>2009-07-29T19:14:00.012+01:00</published><updated>2011-10-07T16:35:29.399+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocs'/><category scheme='http://www.blogger.com/atom/ns#' term='dscp'/><category scheme='http://www.blogger.com/atom/ns#' term='qos'/><category scheme='http://www.blogger.com/atom/ns#' term='wireshark'/><title type='text'>Microsoft Office Communicator 2007 R2 and DSCP QoS</title><content type='html'>Anyone trying to get DSCP working with Office Communicator 2007 R2 on Windows XP needs to grab the 'July' update (v3.5.6907.37) otherwise you will be having problems getting video to work.  Here are the links:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"Description of the update for Communicator 2007 R2: July 2009"&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/969695/"&gt;http://support.microsoft.com/kb/969695/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"Video frames are not displayed in Office Communicator 2007 R2 on a Windows XP-based computer"&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/971846/"&gt;http://support.microsoft.com/kb/971846/&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(BTW, I'd like to thank Michael Melling for spotting those links, and for helping with the testing that I describe below.)&lt;br /&gt;&lt;br /&gt;Before the update, with Office Communicator versions v3.5.6907.0 or v3.5.6907.34, on Windows XP, after setting QoSEnabled to 1, you find audio continues to work fine, but video fails. Most of the time we just got a black video windows, sometimes it was a grey window, and sometimes a frozen image.&lt;br /&gt;&lt;br /&gt;Using OCS's "Monitoring Server Reports" you can see whats going wrong. Click the "User Call List" link, and then filter by one of the users in the call, and this will give you a detailed statistical report of all finished calls. For the Video Stream you will see a "Packet loss Rate" of about 60% !&lt;br /&gt;&lt;br /&gt;Office Communicator, with QoSEnabled, works fine on Vista and Windows 7, without this 'July' update. I think that Microsoft must have done the majority of their testing with their latest operating systems, and have only recently got around to testing with Windows XP.&lt;br /&gt;&lt;br /&gt;We have been battling this problem for a couple of weeks, so this fix comes just in time! In trying to investigate what was goingwrong, we have learned a great deal, so not all the time was wasted, just some!&lt;br /&gt;&lt;br /&gt;DSCP QoS is enabled in the registry, like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RTC\Transport&lt;br /&gt;"QoSEnabled"=dword:00000001&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;.. as per these instructions:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"Enabling DSCP Marking"&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/dd441192(office.13).aspx"&gt;http://technet.microsoft.com/en-us/library/dd441192(office.13).aspx&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;BTW, you need to exit (not just close) Office Communicator and restart it, for this registry setting to take effect.&lt;br /&gt;&lt;br /&gt;Once Office Communicator has setup the call using SIP (over TCP), using Office Communications Server 2007 R2, all audio &amp;amp; video network traffic is sent directly between the two clients using RTP (Real Time Protocol) packets in UDP packets.&lt;br /&gt;&lt;br /&gt;Using WireShark, we could see the packets being tagged correctly:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Audio - DSCP 0x28: Class Selector CS5&lt;br /&gt;Video - DSCP 0x18: Class Selector CS3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;BTW, these are the default values. You can change them using a group policy.&lt;br /&gt;&lt;br /&gt;In WireShark, to just grab the audio &amp;amp; video traffic, use a capture filter like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  udp and ip[1]!=0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This will match any UDP packets that have a non-zero DSCP field in the IP header.You can use the following display filters to select either Audio or Video packets:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;For Audio, use:&lt;br /&gt;    ip.dsfield.dscp == 40&lt;br /&gt;&lt;br /&gt;For Video, use:&lt;br /&gt;    ip.dsfield.dscp == 24&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;BTW, if you use tcpdump to capture the packets, remember that the DSCP values are multiplied by four. So use these capture filters with tcpdump:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;For Audio:&lt;br /&gt;    ip[1]=0xA0&lt;br /&gt;    ip[1]=160&lt;br /&gt;&lt;br /&gt;For Video:&lt;br /&gt;    ip[1]=0x60&lt;br /&gt;    ip[1]=96&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It is very useful to be able to see the RTP headers in the packets. To do this in WireShark, right-click on any of the packets of a UDP stream, and select 'Decode As..', the select 'Transport' as RTP.&lt;br /&gt;&lt;br /&gt;Once you have WireShark decoding the RTP header, you can see a couple of interesting fields in the header. The first is 'Payload type',and this is set as follows:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  Type  97 - RT-Audio encoded redundant data&lt;br /&gt;  Type 111 - 'Siren' audio - used by 'LiveMeeting'&lt;br /&gt;  Type 114 - RTaudio (x-msrta)&lt;br /&gt;  Type 118 - 'Comfort Noise'&lt;br /&gt;  Type 121 - RTvideo (x-rtvc1)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The second interesting RTP header field is the 'Sequence number'. This is a 16-bit counter field, that increments by 1 for each packet sent in a particular stream, and is useful for detecting dropped or duplicated packets. (The sequence number seems to start at a random value.)&lt;br /&gt;&lt;br /&gt;There is a useful feature in WireShark which will do 'Stream Anaysis..'. On WireShark v1.2.0 you will find this under the 'Telephony &gt; RTP' menu. This will highlight where the sequence number goes wrong.&lt;br /&gt;&lt;br /&gt;Ok, so why was the video failing, (before the 'July' update for Office Communication). We had two laptops, running Office Communicator, connected together via a HP Procurve switch,and enabled port mirroring on the switch, to a third laptop to see all network traffic.  Running WireShark on the client sending video, we saw a lot more video packet, then were being received at the other end, on the receiving client. The third monitoring laptop confirmed that packets were being dropped before they emerged 'onto the wire' from the sending laptop. Looking closely at the WireShark capture from the laptop sending video, and using the 'Stream Analysis..' we saw many video packets with duplicate RTP sequence numbers! Correlating with the capture on the receiving client, we saw that any packet that had been duplicated was missing. It was not a case of just the duplicated packet being missing, but also the original packet. Thus from the point of view of the receiving packet, there was a massive level of packet loss, hence it could not display the video stream.&lt;br /&gt;&lt;br /&gt;BTW, on Windows XP, you can use 'tcmon.exe' from the resource kit to see what QoS policies are in effect, and this confirms packet loss onthe video stream. Here are some screen shots:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_CWR2Wpu4j0I/SnCYL2Sf3vI/AAAAAAAAABE/aTjYO9BDQMM/s1600-h/tcmon.01.gif"&gt;&lt;img style="left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 242px;" src="http://1.bp.blogspot.com/_CWR2Wpu4j0I/SnCYL2Sf3vI/AAAAAAAAABE/aTjYO9BDQMM/s320/tcmon.01.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5363954485517344498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_CWR2Wpu4j0I/SnCYMXfCAtI/AAAAAAAAABM/Rs_6rmUbkmE/s1600-h/tcmon.04.gif"&gt;&lt;img style="left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 235px;" src="http://2.bp.blogspot.com/_CWR2Wpu4j0I/SnCYMXfCAtI/AAAAAAAAABM/Rs_6rmUbkmE/s320/tcmon.04.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5363954494428283602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately tcmon does not run on Vista or Windows 7, which is very disapointing. Let's hope that Microsoft get around to fixing this!&lt;br /&gt;&lt;br /&gt;BTW, if you are using Linux to priorities the audio &amp;amp; video traffic as it is sent into the WAN, like we are, you will find the following iptables &amp;amp; 'tc filters' useful to match the packets:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# Audio:&lt;br /&gt;iptables -t mangle -A POSTROUTING -o eth0 -p udp -m dscp --dscp 40 -j mark1&lt;br /&gt;iptables -t mangle -A POSTROUTING -o eth0 -p udp -m dscp --dscp-class CS5 -j mark1&lt;br /&gt;tc filter add dev eth0 parent 10:0 prio 1 protocol ip u32 match ip tos 0xA0 0xff flowid 10:200&lt;br /&gt;&lt;br /&gt;# Video:&lt;br /&gt;iptables -t mangle -A POSTROUTING -o eth0 -p udp -m dscp --dscp 24 -j mark2&lt;br /&gt;iptables -t mangle -A POSTROUTING -o eth0 -p udp -m dscp --dscp-class CS3 -j mark2&lt;br /&gt;tc filter add dev eth0 parent 10:0 prio 1 protocol ip u32 match ip tos 0x60 0xff flowid 10:210&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Best Regards&lt;br /&gt;Nigel Smith&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-4265393741762392969?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/4265393741762392969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=4265393741762392969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/4265393741762392969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/4265393741762392969'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2009/07/microsoft-office-commuicator-2007-r2.html' title='Microsoft Office Communicator 2007 R2 and DSCP QoS'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CWR2Wpu4j0I/SnCYL2Sf3vI/AAAAAAAAABE/aTjYO9BDQMM/s72-c/tcmon.01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-3638460872863910099</id><published>2009-07-29T00:46:00.002+01:00</published><updated>2009-07-29T01:15:58.134+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comstar'/><category scheme='http://www.blogger.com/atom/ns#' term='opensolaris'/><category scheme='http://www.blogger.com/atom/ns#' term='iscsi'/><title type='text'>OpenSolaris 2009-06 and the Comstar iScsi Target</title><content type='html'>Having upgraded from OpenSolaris 2008-11 to 2009-06, I wanted to try the new Comstar iscsi target, to see how well it worked, and to see if it was ready to replace the 'old' iscsi target.  And I wanted to see how far I could get with the package versions in the 'production-quality' release repository, based on snv_111.  To start with, I just wanted to get something basic going as quickly as possible. &lt;br /&gt;&lt;br /&gt;The first tasks was to disable the old iscsi target (to avoid a conflict with the new target which would also want to listen on TCP port 3260), and to enable the 'SCSI Target Mode Framework' - stmf.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# svcs iscsitgt&lt;br /&gt;online         Jul_09   svc:/system/iscsitgt:default&lt;br /&gt;# svcs stmf&lt;br /&gt;disabled       Jul_09   svc:/system/stmf:default&lt;br /&gt;# svcadm disable iscsitgt&lt;br /&gt;# svcs iscsitgt&lt;br /&gt;STATE          STIME    FMRI&lt;br /&gt;disabled       21:29:57 svc:/system/iscsitgt:default&lt;br /&gt;# svcadm enable stmf&lt;br /&gt;# svcs stmf&lt;br /&gt;STATE          STIME    FMRI&lt;br /&gt;online         21:30:55 svc:/system/stmf:default&lt;br /&gt;# stmfadm list-state&lt;br /&gt;Operational Status: online&lt;br /&gt;Config Status     : initialized&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Next I created a new small zfs volume.&lt;br /&gt;(My zfs pool is named 'rz2pool' - it's Raidz2 - dual parity.)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# zfs create -V 4g rz2pool/iscsi_lun1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And then created a 'logical unit', using the zvol as it's backing store.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# sbdadm create-lu /dev/zvol/rdsk/rz2pool/iscsi_lun1&lt;br /&gt;&lt;br /&gt;Created the following LU:&lt;br /&gt;&lt;br /&gt;             GUID                    DATA SIZE           SOURCE&lt;br /&gt;--------------------------------  -------------------  ----------------&lt;br /&gt;600144f00008278f04694a5cf0980001      4294901760       /dev/zvol/rdsk/rz2pool/iscsi_lun1&lt;br /&gt;&lt;br /&gt;# stmfadm list-lu -v&lt;br /&gt;LU Name: 600144F00008278F04694A5CF0980001&lt;br /&gt;   Operational Status: Online&lt;br /&gt;   Provider Name     : sbd&lt;br /&gt;   Alias             : /dev/zvol/rdsk/rz2pool/iscsi_lun1&lt;br /&gt;   View Entry Count  : 0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now using the GUID of the logical unit, we make it visible to any initiators, by adding a 'view'&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# stmfadm add-view 600144f00008278f04694a5cf0980001&lt;br /&gt;# stmfadm list-view -l 600144f00008278f04694a5cf0980001&lt;br /&gt;View Entry: 0&lt;br /&gt;   Host group   : All&lt;br /&gt;   Target group : All&lt;br /&gt;   LUN          : 0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Next we need to do the iscsi part, for which we need to install the iscsi target and the 'itadm' command.  These were not already installed so I had to add the 'SUNWiscsit' package.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# pkg install -v SUNWiscsit&lt;br /&gt;Creating Plan | Before evaluation:&lt;br /&gt;UNEVALUATED:&lt;br /&gt;+pkg:/SUNWiscsit@0.5.11,5.11-0.111:20090508T161047Z&lt;br /&gt;&lt;br /&gt;After evaluation:&lt;br /&gt;None -&gt; pkg:/SUNWiscsit@0.5.11,5.11-0.111:20090508T161047Z&lt;br /&gt;None -&gt; pkg:/SUNWiscsidm@0.5.11,5.11-0.111:20090508T161041Z&lt;br /&gt;Actuators:&lt;br /&gt;     restart_fmri: svc:/system/manifest-import:default&lt;br /&gt;None&lt;br /&gt;DOWNLOAD                                    PKGS       FILES     XFER (MB)&lt;br /&gt;Completed                                    2/2       23/23     0.66/0.66&lt;br /&gt;&lt;br /&gt;PHASE                                        ACTIONS&lt;br /&gt;Install Phase                                  76/76&lt;br /&gt;PHASE                                          ITEMS&lt;br /&gt;Reading Existing Index                           8/8&lt;br /&gt;Indexing Packages                                2/2&lt;br /&gt;&lt;br /&gt;# pkg list -v SUNWiscsit&lt;br /&gt;FMRI                                                             STATE      UFIX&lt;br /&gt;pkg:/SUNWiscsit@0.5.11,5.11-0.111:20090508T161047Z               installed  ----&lt;br /&gt;# pkg list -v SUNWiscsidm&lt;br /&gt;FMRI                                                             STATE      UFIX&lt;br /&gt;pkg:/SUNWiscsidm@0.5.11,5.11-0.111:20090508T161041Z              installed  ----&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;On the next step I had a small problem.&lt;br /&gt;(BTW, I am not using NWAM to configure my network card.)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# svcadm enable -r iscsi/target:default&lt;br /&gt;svcadm: svc:/milestone/network depends on svc:/network/physical, which has multiple instances.&lt;br /&gt;&lt;br /&gt;# svcs -a | grep network/physical&lt;br /&gt;disabled       Jul_09   svc:/network/physical:nwam&lt;br /&gt;online         Jul_09   svc:/network/physical:default&lt;br /&gt;&lt;br /&gt;# svcadm enable  iscsi/target&lt;br /&gt;# svcs -a | grep iscsi&lt;br /&gt;disabled       Jul_09   svc:/network/iscsi_initiator:default&lt;br /&gt;disabled       21:29:57 svc:/system/iscsitgt:default&lt;br /&gt;maintenance    22:29:13 svc:/network/iscsi/target:default&lt;br /&gt;&lt;br /&gt;# svcs -xv&lt;br /&gt;svc:/network/iscsi/target:default (iscsi target)&lt;br /&gt;State: maintenance since Tue Jul 14 22:29:13 2009&lt;br /&gt;Reason: Start method failed repeatedly, last exited with status 4.&lt;br /&gt;  See: http://sun.com/msg/SMF-8000-KS&lt;br /&gt;  See: man -M /usr/share/man -s 1M itadm&lt;br /&gt;  See: /var/svc/log/network-iscsi-target:default.log&lt;br /&gt;Impact: This service is not running.&lt;br /&gt;&lt;br /&gt;# tail /var/svc/log/network-iscsi-target\:default.log&lt;br /&gt;[ Jul 14 22:29:13 Enabled. ]&lt;br /&gt;[ Jul 14 22:29:13 Executing start method ("/lib/svc/method/iscsi-target start"). ]&lt;br /&gt;iscsi-target: Requesting to enable iscsi target&lt;br /&gt;open failed: INVALIDUnable to open device /devices/pseudo/iscsit@0:iscsit[ Jul 14 22:29:13 Method "start" exited with status 4. ]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Rebooting solved this problem.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# svcs -a | grep iscsi&lt;br /&gt;disabled       19:25:15 svc:/network/iscsi_initiator:default&lt;br /&gt;disabled       19:25:18 svc:/system/iscsitgt:default&lt;br /&gt;online         19:25:37 svc:/network/iscsi/target:default&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So now we create the iscsi target and check it looks ok:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# itadm create-target&lt;br /&gt;Target iqn.1986-03.com.sun:02:7e969860-cb8d-475a-ddbb-97bf2f22ce7b successfully created&lt;br /&gt;&lt;br /&gt;# itadm list-target -v&lt;br /&gt;TARGET NAME                                                  STATE    SESSIONS&lt;br /&gt;iqn.1986-03.com.sun:02:7e969860-cb8d-475a-ddbb-97bf2f22ce7b  online   0&lt;br /&gt;       alias:                  -&lt;br /&gt;       auth:                   none (defaults)&lt;br /&gt;       targetchapuser:         -&lt;br /&gt;       targetchapsecret:       unset&lt;br /&gt;       tpg-tags:               default&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I was then able to discover and logon to this iscsi target from a Windows 2003 server, using the Microsoft iscsi initiator.&lt;br /&gt;&lt;br /&gt;The above is just the simplest possible configuration, just to allow some simple tests.  For a more practical setup, you may well want multiple logical units, and want to put some restrictions on the views.  But details on how to do that will have to wait for a follow-up post to this blog!&lt;br /&gt;&lt;br /&gt;I did notice a couple of things fairly quickly.  I saw the connection between the initiator and target was dropping every 50 seconds, followed immediately by a re-logon.  Checking with WireShark showed that it was the target starting this with a [FIN, ACK].  With the old iscsi target I would have used DTrace to confirm this, but the iscsi target provider for the new iscsi target was not available.&lt;br /&gt;&lt;br /&gt;I looked at the source code for the comstar iscsi target:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/comstar/port/iscsit/iscsit.c"&gt;http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/comstar/port/iscsit/iscsit.c&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;.. and from the history link, I could see that a couple of likely fixes had already been committed:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;26-May-2009 Priya Krishnan - 6809997 COMSTAR iscsi target DTrace Provider needed&lt;br /&gt;08-May-2009 Peter Dunlap - 6755803 win2003 initiator numerous iscsi connection lost and connection retries mesgs to iscsi target&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now normally, I would hyper-link those bug number for you.  But in this case there is no point, because Sun has chosen not to allows details of those bugs to be publicly available. (Or any of the other comstar iscsi target bugs AFAIK.)&lt;br /&gt;&lt;br /&gt;Having those fixes is important for me, so it looks like I will have to update my OpenSolaris 2009-06 using the development repository to snv_118.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-3638460872863910099?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/3638460872863910099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=3638460872863910099' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/3638460872863910099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/3638460872863910099'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2009/07/opensolaris-2009-06-and-comstar-iscsi.html' title='OpenSolaris 2009-06 and the Comstar iScsi Target'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-3364798273011789810</id><published>2009-06-25T13:14:00.004+01:00</published><updated>2009-06-25T14:41:58.522+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snmp'/><category scheme='http://www.blogger.com/atom/ns#' term='adsl'/><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>Using SNMP with a Cisco router to troubleshoot &amp; diagnose ADSL problems</title><content type='html'>We've been having numerous errors and problem with an ADSL line at the company where I work.  We're trying to run an Ipsec tunnel across the ADSL line to connect to one of our small branch offices.  Every few hours we would have problems, with the tunnel dropping out.  Restarting the router would often fix the problem, but the problems never went away for long.&lt;br /&gt;&lt;br /&gt;We were using good quality Cisco 1801 routers.  The most useful command for debugging is 'show dsl interface atm0' and 'show int atm0'.  Below is some typical output, while the ADSL line was faulty:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#show int atm 0&lt;br /&gt;ATM0 is up, line protocol is up&lt;br /&gt;  Hardware is MPC ATMSAR (with Alcatel ADSL Module)&lt;br /&gt;  MTU 4470 bytes, sub MTU 4470, BW 832 Kbit/sec, DLY 440 usec,&lt;br /&gt;     reliability 255/255, txload 41/255, rxload 6/255&lt;br /&gt;  Encapsulation ATM, loopback not set&lt;br /&gt;  Encapsulation(s): AAL5  AAL2, PVC mode&lt;br /&gt;  23 maximum active VCs, 1024 VCs per VP, 1 current VCCs&lt;br /&gt;  VC Auto Creation Disabled.&lt;br /&gt;  VC idle disconnect time: 300 seconds&lt;br /&gt;  Last input never, output 00:00:00, output hang never&lt;br /&gt;  Last clearing of "show interface" counters never&lt;br /&gt;  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 48&lt;br /&gt;  Queueing strategy: Per VC Queueing&lt;br /&gt;  5 minute input rate 22000 bits/sec, 20 packets/sec&lt;br /&gt;  5 minute output rate 137000 bits/sec, 24 packets/sec&lt;br /&gt;     322340 packets input, 50047091 bytes, 0 no buffer&lt;br /&gt;     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles&lt;br /&gt;     0 input errors, 182 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort&lt;br /&gt;     345336 packets output, 145468959 bytes, 0 underruns&lt;br /&gt;     0 output errors, 0 collisions, 0 interface resets&lt;br /&gt;     0 output buffer failures, 0 output buffers swapped out&lt;br /&gt;&lt;br /&gt;#show dsl interface atm0&lt;br /&gt;ATM0&lt;br /&gt;Alcatel 20190 chipset information&lt;br /&gt;                ATU-R (DS)                      ATU-C (US)&lt;br /&gt;Modem Status:    Showtime (DMTDSL_SHOWTIME)&lt;br /&gt;DSL Mode:        ITU G.992.1 (G.DMT) Annex A&lt;br /&gt;ITU STD NUM:     0x03                            0x2&lt;br /&gt;Vendor ID:       'STMI'                          'P   '&lt;br /&gt;Vendor Specific: 0x0000                          0x0000&lt;br /&gt;Vendor Country:  0x0F                            0xB5&lt;br /&gt;Chip ID:         C196 (0)&lt;br /&gt;DFE BOM:         DFE3.0 Annex A (1)&lt;br /&gt;Capacity Used:   100%                            85%&lt;br /&gt;Noise Margin:     1.0 dB                         11.0 dB&lt;br /&gt;Output Power:    20.0 dBm                        12.5 dBm&lt;br /&gt;Attenuation:     34.0 dB                         17.0 dB&lt;br /&gt;Defect Status:   None                            None&lt;br /&gt;Last Fail Code:  None&lt;br /&gt;Watchdog Counter: 0xA7&lt;br /&gt;Watchdog Resets: 0&lt;br /&gt;Selftest Result: 0x00&lt;br /&gt;Subfunction:     0x00&lt;br /&gt;Interrupts:      4155 (0 spurious)&lt;br /&gt;PHY Access Err:  0&lt;br /&gt;Activations:     3&lt;br /&gt;LED Status:      ON&lt;br /&gt;LED On Time:     100&lt;br /&gt;LED Off Time:    100&lt;br /&gt;Init FW:         init_AMR-3.0.014_no_bist.bin&lt;br /&gt;Operation FW:    AMR-3.0.014.bin&lt;br /&gt;FW Source:       embedded&lt;br /&gt;FW Version:      3.0.14&lt;br /&gt;&lt;br /&gt;                 Interleave             Fast    Interleave              Fast&lt;br /&gt;Speed (kbps):          4640                0           832                 0&lt;br /&gt;Cells:               716617                0     108647003                 0&lt;br /&gt;Reed-Solomon EC:      43244                0             9                 9&lt;br /&gt;CRC Errors:           25362                0            22                14&lt;br /&gt;Header Errors:        15617                0             9                 7&lt;br /&gt;Total BER:                1610E-8                0E-0&lt;br /&gt;Leakage Average BER:      2734E-8                0E-0&lt;br /&gt;                        ATU-R (DS)      ATU-C (US)&lt;br /&gt;Bitswap:               enabled            enabled&lt;br /&gt;Bitswap success:          0                   0&lt;br /&gt;Bitswap failure:          0                   0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can see from the above that the 'Down Stream' (DS) noise margin is very low at 1dB.  We have also seen 0.5dB reported, or even 0db! You can also see the error counts are high.  In the output of 'show int atm 0', the figure to monitor is the number of CRC errors - in the output above it's 182.  It is also useful to set 'debug atm errors' on the cisco. The in the syslog's you will see messages like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;*Jun 19 10:22:01.894: ATM0: AAL5 rx errors (status = 0C030000)&lt;br /&gt;*Jun 19 10:22:01.974: ATM0: AAL5 rx errors (status = 2C030000)&lt;br /&gt;*Jun 19 10:22:02.758: ATM0: AAL5 rx errors (status = 0C030000)&lt;br /&gt;*Jun 19 10:22:04.058: ATM0: AAL5 rx errors (status = 2C070000)&lt;br /&gt;*Jun 19 10:22:04.922: ATM0: AAL5 rx errors (status = 0C030000)&lt;br /&gt;*Jun 19 10:22:06.174: ATM0: AAL5 rx errors (status = 0C030000)&lt;br /&gt;*Jun 19 10:22:07.822: ATM0: AAL5 rx errors (status = 0C030000)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To try and dig deeper, I used SNMP (from a Linux box on the same LAN), to query the router:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[root@hexdns1 snmp_queries]# snmpwalk -v1 -c public 192.168.6.1  1.3.6.1.2.1.10.94&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.1.1.1.19 = INTEGER: 2&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.1.1.2.19 = INTEGER: 3&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.2.1.2.19 = STRING: "P"&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.2.1.3.19 = STRING: "0"&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.2.1.4.19 = Gauge32: 110&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.2.1.5.19 = Gauge32: 175&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.2.1.7.19 = Gauge32: 200&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.2.1.8.19 = Gauge32: 4492000&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.3.1.1.19 = ""&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.3.1.2.19 = STRING: "STMI"&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.3.1.3.19 = STRING: "0"&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.3.1.4.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.3.1.5.19 = Gauge32: 340&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.3.1.7.19 = Gauge32: 130&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.3.1.8.19 = Gauge32: 967000&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.4.1.2.19 = Gauge32: 4448000&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.5.1.2.19 = Gauge32: 832000&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.1.19 = Counter32: 697&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.2.19 = Counter32: 449&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.4.19 = Counter32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.5.19 = Counter32: 1820&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.6.19 = Counter32: 31&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.10.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.11.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.13.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.14.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.15.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.17.19 = Gauge32: 565&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.18.19 = Gauge32: 381&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.20.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.21.19 = Gauge32: 1034&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.6.1.22.19 = Gauge32: 10&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.1.19 = Counter32: 45&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.2.19 = Counter32: 28&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.3.19 = Counter32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.4.19 = Counter32: 15043&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.8.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.9.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.10.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.11.19 = Gauge32: 328&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.13.19 = Gauge32: 44&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.14.19 = Gauge32: 27&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.15.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.7.1.16.19 = Gauge32: 3717&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.3.19 = Counter32: 1864592813&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.4.19 = Counter32: 804238&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.10.19 = Gauge32: 2538597&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.11.19 = Gauge32: 11493&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.15.19 = Gauge32: 804265846&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.16.19 = Gauge32: 400641&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.11.1.3.19 = Counter32: 31565&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.11.1.4.19 = Counter32: 56466&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.11.1.10.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.11.1.11.19 = Gauge32: 0&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.11.1.15.19 = Gauge32: 18799&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.11.1.16.19 = Gauge32: 44213&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If you have the &lt;a href="http://www.oidview.com/mibs/0/ADSL-LINE-MIB.html"&gt;ADSL-LINE-MIB&lt;/a&gt; in place, these OID's can be translated:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# snmptranslate 1.3.6.1.2.1.10.94&lt;br /&gt;SNMPv2-SMI::transmission.94&lt;br /&gt;# export MIBS=ALL&lt;br /&gt;# snmptranslate 1.3.6.1.2.1.10.94&lt;br /&gt;ADSL-LINE-MIB::adslMIB&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For a guide on how to use Linux SNMP, see my &lt;a href="http://www.nwsmith.net/HintsTips/net-snmp-tutorial.htm"&gt;snmp tutorial&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# snmpwalk -v1 -c public 192.168.6.1 1.3.6.1.2.1.10.94&lt;br /&gt;ADSL-LINE-MIB::adslLineCoding.19 = INTEGER: 2&lt;br /&gt;ADSL-LINE-MIB::adslLineType.19 = INTEGER: interleavedOnly(3)&lt;br /&gt;ADSL-LINE-MIB::adslAtucInvVendorID.19 = STRING: P&lt;br /&gt;ADSL-LINE-MIB::adslAtucInvVersionNumber.19 = STRING: 0&lt;br /&gt;ADSL-LINE-MIB::adslAtucCurrSnrMgn.19 = Wrong Type (should be INTEGER): Gauge32: 110&lt;br /&gt;ADSL-LINE-MIB::adslAtucCurrAtn.19 = Gauge32: 170 tenth dB&lt;br /&gt;ADSL-LINE-MIB::adslAtucCurrOutputPwr.19 = Wrong Type (should be INTEGER): Gauge32: 200&lt;br /&gt;ADSL-LINE-MIB::adslAtucCurrAttainableRate.19 = Gauge32: 4686000 bps&lt;br /&gt;ADSL-LINE-MIB::adslAturInvSerialNumber.19 = STRING:&lt;br /&gt;ADSL-LINE-MIB::adslAturInvVendorID.19 = STRING: STMI&lt;br /&gt;ADSL-LINE-MIB::adslAturInvVersionNumber.19 = STRING: 0&lt;br /&gt;ADSL-LINE-MIB::adslAturCurrSnrMgn.19 = Wrong Type (should be INTEGER): Gauge32: 15&lt;br /&gt;ADSL-LINE-MIB::adslAturCurrAtn.19 = Gauge32: 340 tenth dB&lt;br /&gt;ADSL-LINE-MIB::adslAturCurrOutputPwr.19 = Wrong Type (should be INTEGER): Gauge32: 130&lt;br /&gt;ADSL-LINE-MIB::adslAturCurrAttainableRate.19 = Gauge32: 978000 bps&lt;br /&gt;ADSL-LINE-MIB::adslAtucChanCurrTxRate.19 = Gauge32: 4640000 bps&lt;br /&gt;ADSL-LINE-MIB::adslAturChanCurrTxRate.19 = Gauge32: 832000 bps&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfLofs.19 = Counter32: 453&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfLoss.19 = Counter32: 13&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfLprs.19 = Counter32: 0&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfESs.19 = Counter32: 1997&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfInits.19 = Counter32: 18&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfCurr15MinLofs.19 = Gauge32: 0 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfCurr15MinLoss.19 = Gauge32: 0 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfCurr15MinLprs.19 = Gauge32: 0 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfCurr15MinESs.19 = Gauge32: 0 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfCurr15MinInits.19 = Gauge32: 0&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfCurr1DayLofs.19 = Gauge32: 445 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfCurr1DayLoss.19 = Gauge32: 14 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfCurr1DayLprs.19 = Gauge32: 0 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfCurr1DayESs.19 = Gauge32: 1425 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAtucPerfCurr1DayInits.19 = Gauge32: 9&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfLofs.19 = Counter32: 22 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfLoss.19 = Counter32: 15 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfLprs.19 = Counter32: 0 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfESs.19 = Counter32: 95908 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfCurr15MinLofs.19 = Gauge32: 0 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfCurr15MinLoss.19 = Gauge32: 0 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfCurr15MinLprs.19 = Gauge32: 0 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfCurr15MinESs.19 = Gauge32: 345 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfCurr1DayLofs.19 = Gauge32: 22 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfCurr1DayLoss.19 = Gauge32: 15 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfCurr1DayLprs.19 = Gauge32: 0 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAturPerfCurr1DayESs.19 = Gauge32: 21932 seconds&lt;br /&gt;ADSL-LINE-MIB::adslAtucChanCorrectedBlks.19 = Counter32: 4045523380&lt;br /&gt;ADSL-LINE-MIB::adslAtucChanUncorrectBlks.19 = Counter32: 23129426&lt;br /&gt;ADSL-LINE-MIB::adslAtucChanPerfCurr15MinCorrectedBlks.19 = Gauge32: 6278668&lt;br /&gt;ADSL-LINE-MIB::adslAtucChanPerfCurr15MinUncorrectBlks.19 = Gauge32: 17489&lt;br /&gt;ADSL-LINE-MIB::adslAtucChanPerfCurr1DayCorrectedBlks.19 = Gauge32: 1783723602&lt;br /&gt;ADSL-LINE-MIB::adslAtucChanPerfCurr1DayUncorrectBlks.19 = Gauge32: 10061120&lt;br /&gt;ADSL-LINE-MIB::adslAturChanCorrectedBlks.19 = Counter32: 4235&lt;br /&gt;ADSL-LINE-MIB::adslAturChanUncorrectBlks.19 = Counter32: 9371&lt;br /&gt;ADSL-LINE-MIB::adslAturChanPerfCurr15MinCorrectedBlks.19 = Gauge32: 0&lt;br /&gt;ADSL-LINE-MIB::adslAturChanPerfCurr15MinUncorrectBlks.19 = Gauge32: 0&lt;br /&gt;ADSL-LINE-MIB::adslAturChanPerfCurr1DayCorrectedBlks.19 = Gauge32: 1538&lt;br /&gt;ADSL-LINE-MIB::adslAturChanPerfCurr1DayUncorrectBlks.19 = Gauge32: 5374&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Many of the figure in the output of 'show dsl interface atm0' are available via SNMP.  For example 'Down Stream Noise Margin' is 'adslAturCurrSnrMgn' quoted in tenths of a decibel. So a reading of 15 means 1.5dB.  To get an idea of how these values were changing with time, I used &lt;a href="http://www.cacti.net/"&gt;Cacti&lt;/a&gt; and &lt;a href="http://oss.oetiker.ch/rrdtool/"&gt;RRD &lt;/a&gt;to poll the SNMP and produce some nice graphs.  I Googles and found a Cacti &lt;a href="http://docs.cacti.net/usertemplate:data:adsl_mib:line"&gt;'ADSL Line Data' templates&lt;/a&gt; that allows you to graph Attenuation, Noise margin, and Output Power.  Of those, only Noise Margin is interesting, because I found the Attenuation and Output Power to remain constant.  But the thing the template did not graph was the number of uncorrectable errors, labelled 'adslAtucChanUncorrectBlks' in the MIB, and this is what I was really interested in, as when we were having problems with the ADSL line, the count of uncorrectable errors was high.&lt;br /&gt;&lt;br /&gt;So I modified '/var/www/cacti/resource/snmp_queries/adslLine.xml' to include another OID.  I chose 'ADSL-LINE-MIB::adslAtucChanPerfCurr15MinUncorrectBlks' which the MIB decribes as follows:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# snmptranslate -Td ADSL-LINE-MIB::adslAtucChanPerfCurr15MinUncorrectBlks&lt;br /&gt;ADSL-LINE-MIB::adslAtucChanPerfCurr15MinUncorrectBlks&lt;br /&gt;adslAtucChanPerfCurr15MinUncorrectBlks OBJECT-TYPE&lt;br /&gt;  -- FROM       ADSL-LINE-MIB&lt;br /&gt;  MAX-ACCESS    read-only&lt;br /&gt;  STATUS        current&lt;br /&gt;  DESCRIPTION   "Count of all blocks received with uncorrectable&lt;br /&gt;              errors on this channel within the current 15 minute&lt;br /&gt;              interval."&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I modified the XML for the data query as follows:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# snmptranslate -On ADSL-LINE-MIB::adslAtucChanPerfCurr15MinUncorrectBlks&lt;br /&gt;.1.3.6.1.2.1.10.94.1.1.10.1.11&lt;br /&gt;&lt;br /&gt;# diff -u adslLine.orig.xml adslLine.xml&lt;br /&gt;--- adslLine.orig.xml   2009-05-01 16:57:18.000000000 +0100&lt;br /&gt;+++ adslLine.xml    2009-06-15 18:53:58.000000000 +0100&lt;br /&gt;@@ -27,6 +27,13 @@&lt;br /&gt;          &amp;lt;direction&amp;gt;input&amp;lt;/direction&amp;gt;&lt;br /&gt;          &amp;lt;oid&amp;gt;.1.3.6.1.2.1.10.94.1.1.3.1.2&amp;lt;/oid&amp;gt;&lt;br /&gt;        &amp;lt;/adslAtucInvVendorID&amp;gt;&lt;br /&gt;+      &amp;lt;adslAtuc15mUncrBlks&amp;gt;&lt;br /&gt;+         &amp;lt;name&amp;gt;Local Curr 15min Uncorrectable Blocks&amp;lt;/name&amp;gt;&lt;br /&gt;+         &amp;lt;method&amp;gt;walk&amp;lt;/method&amp;gt;&lt;br /&gt;+         &amp;lt;source&amp;gt;value&amp;lt;/source&amp;gt;&lt;br /&gt;+         &amp;lt;direction&amp;gt;output&amp;lt;/direction&amp;gt;&lt;br /&gt;+         &amp;lt;oid&amp;gt;.1.3.6.1.2.1.10.94.1.1.10.1.11&amp;lt;/oid&amp;gt;&lt;br /&gt;+       &amp;lt;/adslAtuc15mUncrBlks&amp;gt;&lt;br /&gt;       &amp;lt;adslAtucCurrSnrMgn&amp;gt;&lt;br /&gt;          &amp;lt;name&amp;gt;Local Noise Margin (tenth dB)&amp;lt;/name&amp;gt;&lt;br /&gt;          &amp;lt;method&amp;gt;walk&amp;lt;/method&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;When I started to graph this value, I was surprised by the range of values I saw. Often it was low, a few hundred, but some time it would shoot up to 60,000!  I realised that to graph this range of values it would be better to use a logarithmic scale.&lt;br /&gt;&lt;br /&gt;After graphing uncorrectable errors for a while I began to question what does 'within the current 15 minute interval.' actually mean.  So let's look in detail at the OID's related to uncorrectable errors.  Here are some (high) starting figures:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# snmpwalk -v1 -c public 192.168.6.1  1.3.6.1.2.1.10.94.1.1.10.1&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.3.19 = Counter32: 293561906&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.4.19 = Counter32: 1493720&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.10.19 = Gauge32: 6671894&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.11.19 = Gauge32: 80028&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.15.19 = Gauge32: 293561906&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.16.19 = Gauge32: 1493720&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can see that "adslAtucChanCorrectedBlks" and "adslAtucChanPerfCurr1DayUncorrectBlks" are identical values, and they were  increasing exactly in step, so they are both SNMP 'Counters'.  A few minutes latter, we get these reading:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# snmpwalk -v1 -c public 192.168.6.1  1.3.6.1.2.1.10.94.1.1.10.1&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.3.19 = Counter32: 293628501&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.4.19 = Counter32: 1495372&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.10.19 = Gauge32: 27251&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.11.19 = Gauge32: 1383&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.15.19 = Gauge32: 293628501&lt;br /&gt;SNMPv2-SMI::transmission.94.1.1.10.1.16.19 = Gauge32: 1495372&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In the period between taking these readings, the '15Min' figures, have reset to zero, and are counting up again.  If you keep a constant watch on these figures, you can see that every 15 minutes they reset back to zero.  I found the following command to be useful to monitor errors occuring in real time.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# watch -n 5 'snmpwalk -v1 -c public 192.168.6.1  1.3.6.1.2.1.10.94.1.1.10.1'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So with the benefit of hindsight, I may have been better using Cacti to graph 'adslAtucChanUncorrectBlks' as a 'COUNTER', rather than 'adslAtucChanPerfCurr15MinUncorrectBlks' as a 'GAUGE'.&lt;br /&gt;&lt;br /&gt;Eventually we got BT to come on site to check the ADSL line, and they located&lt;br /&gt;a bad connection.  Since they fixed that, the noise margin has remained consistently above 5dB and the uncorrected blocks has been very low.&lt;br /&gt;&lt;br /&gt;Here are some graph, where you can that the ADSL line has been fixed:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWR2Wpu4j0I/SkN7k5bEOTI/AAAAAAAAAAM/T2EWcQszSv8/s1600-h/ADSL-SNMP-graphs.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 285px; height: 320px;" src="http://1.bp.blogspot.com/_CWR2Wpu4j0I/SkN7k5bEOTI/AAAAAAAAAAM/T2EWcQszSv8/s320/ADSL-SNMP-graphs.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5351256656066132274" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-3364798273011789810?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/3364798273011789810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=3364798273011789810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/3364798273011789810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/3364798273011789810'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2009/06/using-snmp-with-cisco-router-to.html' title='Using SNMP with a Cisco router to troubleshoot &amp; diagnose ADSL problems'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CWR2Wpu4j0I/SkN7k5bEOTI/AAAAAAAAAAM/T2EWcQszSv8/s72-c/ADSL-SNMP-graphs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-8145669821931003742</id><published>2008-10-07T00:29:00.005+01:00</published><updated>2008-10-07T00:54:28.540+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensolaris'/><title type='text'>A new way to search &amp; browse the OpenSolaris Mail Lists</title><content type='html'>You can now search and browse through over a quarter million messages posted to the OpenSolaris Mail-lists using a free service called 'MarkMail'.&lt;br /&gt;&lt;br /&gt;Head over to &lt;a href="http://opensolaris.markmail.org/"&gt;http://opensolaris.markmail.org/&lt;/a&gt; and take a look.&lt;br /&gt;&lt;br /&gt;I stumbled across the MarkMail web site last week,via Google.  It seems to have been running for about 12 months, and in that time they have loaded the mail archives of thousands of open-source projects into their system.&lt;br /&gt;&lt;br /&gt;But until last week, they did not include anything on OpenSolaris.  A shocking omission!  So I left feedback, and I was quickly contacted by MarkMail's Jason Hunter.  Jason wasted no time in subscribing their system to most of the OpenSolaris lists, and then within a few days they had loaded the 'MailMan' archive files.  (If you would like to see further lists added then leave feedback on the MarkMail site via their form.)&lt;br /&gt;&lt;br /&gt;By going to this link &lt;a href="http://opensolaris.markmail.org/search/?q="&gt;http://opensolaris.markmail.org/search/?q=&lt;/a&gt; you can see the latest emails that have been added into the system.  I find this a useful way of just getting some idea of the vast amount of activity being generated around the OpenSolaris communities and projects.  If your browser has 'flash' enabled, you will also see a graph of email activity per month, which shows the story of tremendous growth in interest around OpenSolaris.  You will also see some fascinating statistics which tell you which are the most popular mail lists and which individuals have made the most posts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-8145669821931003742?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/8145669821931003742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=8145669821931003742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/8145669821931003742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/8145669821931003742'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2008/10/new-way-to-search-browse-opensolaris.html' title='A new way to search &amp; browse the OpenSolaris Mail Lists'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-416782035007845091</id><published>2008-09-16T22:04:00.005+01:00</published><updated>2008-09-17T08:13:53.059+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zfs'/><category scheme='http://www.blogger.com/atom/ns#' term='fishworks'/><category scheme='http://www.blogger.com/atom/ns#' term='opensolaris'/><category scheme='http://www.blogger.com/atom/ns#' term='iscsi'/><title type='text'>Progress on FISHworks?</title><content type='html'>Very little has been publicly announced by Sun about the FISHworks project.&lt;br /&gt;After some &lt;a href="http://www.sun.com/storagetek/docs/IDC_Fishworks.pdf"&gt;initial news&lt;/a&gt; in &lt;a href="http://www.theregister.co.uk/2007/04/03/sun_fishworks/"&gt;early 2007&lt;/a&gt;, it seemed to go quiet.&lt;br /&gt;&lt;br /&gt;Based on those reports, I would speculate that FISHworks appears to be a project to create a NAS/SAN appliance, based on existing OpenSolaris source code for ZFS, CIFS server, NFS server and the iScsi target, using DTrace observability to instrument under the hood.&lt;br /&gt;&lt;br /&gt;At the start of September 2008, some more details about FISHworks emerged&lt;br /&gt;when one of Sun's top engineers &lt;a href="http://research.sun.com/people/mybio.php?c=870"&gt;Mike Shapiro&lt;/a&gt; gave a &lt;a href="http://blogs.sun.com/storage/entry/mike_shapiro_and_steve_o"&gt;video interview&lt;/a&gt;, bizarrely, on the noisy streets of San Francisco!  It's a pity that this interview was conducted outside of a bar, as the background noise is somewhat distracting!&lt;br /&gt;&lt;br /&gt;So when can we expect a proper announcement from Sun on FISHworks.  Well according to the &lt;a href="http://bits.blogs.nytimes.com/2008/09/05/sun-microsystems-hopes-to-shake-up-storage-industry/"&gt;New York Time&lt;/a&gt;, that will be in November.&lt;br /&gt;&lt;br /&gt;So do you want to know what progress is being made?&lt;br /&gt;&lt;br /&gt;Then I suggest you check out the OpenSolaris bugs database.&lt;br /&gt;This link shows &lt;a href="http://bugs.opensolaris.org/search.do?process=1&amp;type=&amp;sortBy=date&amp;bugStatus=&amp;perPage=20&amp;bugId=&amp;keyword=&amp;textSearch=&amp;category=storage_target&amp;subcategory=&amp;since=30"&gt;bug activity in the iScsi target code for the last 30 days&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In the 'Reported Against' field, you will often see things like fw_36.  This I believe is referring to FISHworks build 36.&lt;br /&gt;&lt;br /&gt;Looking at the bugs for the last 30 days, there seems to be extensive &amp; intensive testing happening of the OpenSolaris iScsi target, using various iScsi initiators and various operating systems, like Vista &amp; Linux.&lt;br /&gt;&lt;br /&gt;Some of the bugs looks quite obscure, occurring in relatively complex scenarios.  Many of the bug comments refer to 'GRITS' and 'Diskomizer'.  These seem to be Sun's internals tools for stress testing storage systems.  Again, there does not seem to be much public information on these tools, but I googled and found these snippets on &lt;a href="http://mail.opensolaris.org/pipermail/nfs-discuss/2006-May/001312.html"&gt;GRITS&lt;/a&gt; and &lt;a href="http://research.sun.com/minds/2008-0312/"&gt;Diskomizer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's good to see that in GRITS and Diskomizer, Sun seems to have the tools that&lt;br /&gt;can expose these bugs.  It's also good that these bugs are being fixed quickly.&lt;br /&gt;Sun's Tim Szeto looks to have been particularly busy, and making good progress.&lt;br /&gt;&lt;br /&gt;Some of the bug descriptions mention the 'Iwashi NAS appliance'&lt;br /&gt;-So what it that?  I would speculate maybe the code name for a Sun appliance?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-416782035007845091?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/416782035007845091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=416782035007845091' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/416782035007845091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/416782035007845091'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2008/09/progress-on-fishworks.html' title='Progress on FISHworks?'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-2350313524754301879</id><published>2008-08-20T12:14:00.001+01:00</published><updated>2008-08-20T12:17:46.969+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>'Java.exe' and Oracle SQL Developer</title><content type='html'>I've just upgraded to v1.5.1 of '&lt;a href="http://www.oracle.com/technology/software/products/sql/index.html"&gt;Oracle SQL Developer&lt;/a&gt;'.  When you first start the program, it will ask for the path to 'java.exe'.  If you need to change or reset that path to a different value, you need to locate text file 'sqldeveloper.conf' and edit the value of setting 'SetJavaHome'.  You may want to change this setting if you try to use an 'Unsupported Java Version'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-2350313524754301879?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/2350313524754301879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=2350313524754301879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/2350313524754301879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/2350313524754301879'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2008/08/javaexe-and-oracle-sql-developer.html' title='&apos;Java.exe&apos; and Oracle SQL Developer'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-8173337950720006190</id><published>2008-08-15T00:27:00.007+01:00</published><updated>2008-08-15T01:47:53.103+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensolaris'/><title type='text'>OpenSolaris and the HP ML-115</title><content type='html'>The HP ML-115 is a very low cost server, that is ideal for trying out VMware ESX:&lt;br /&gt;&lt;a href="http://www.iqubed.biz/blog/2008/08/09/using-the-hp-ml115-as-a-test-server/"&gt;"Using the HP ML115 as a Test Server"&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.techhead.co.uk/building-a-low-cost-cheap-vmware-esx-test-server"&gt;"Building a Low Cost (Cheap) VMware ESX Test Server"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So maybe the ML-115 would also be suitable for OpenSolaris.&lt;br /&gt;So I tried it out, but there are some driver issues.&lt;br /&gt;The good news is that these should be fixed very soon.&lt;br /&gt;&lt;br /&gt;Problem #1 -If you try to boot the Open Solaris 2008.05 live CD, it fails, with error "Console login service(s) cannot run".  See this &lt;a href="http://opensolaris.org/jive/thread.jspa?threadID=61899"&gt;thread&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The problem is that the ML-115's DVD drive is connected to a SATA port on the nVidia MCP55 chipset, and the &lt;a href="http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/sata/adapters/nv_sata/"&gt;nv_sata&lt;/a&gt; driver has only support for disk drives and not CD/DVD drives. But now &lt;a href="http://bugs.opensolaris.org/view_bug.do?bug_id=6595488"&gt;Bug 6595488&lt;/a&gt; is &lt;a href="http://mail.opensolaris.org/pipermail/onnv-notify/2008-July/014591.html"&gt;fixed&lt;/a&gt;, if you use build 95.&lt;br /&gt;&lt;br /&gt;Ok, so with build 95, you should be able to boot from the DVD drive and install OpenSolaris.  I tried this with "Solaris Express Community Edition" and was successful.  You should then see something like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# cfgadm -a | grep sata | grep configured&lt;br /&gt;sata0/0::dsk/c0t0d0            disk         connected    configured   ok&lt;br /&gt;sata1/0::dsk/c4t0d0            disk         connected    configured   ok&lt;br /&gt;sata2/0::dsk/c1t0d0            cd/dvd       connected    configured   ok&lt;br /&gt;# rmformat -l&lt;br /&gt;Looking for devices...&lt;br /&gt;     1. Logical Node: /dev/rdsk/c1t0d0p0&lt;br /&gt;        Physical Node: /pci@0,0/pci103c,1714@5,2/cdrom@0,0&lt;br /&gt;        Connected Device: HL-DT-ST DVD-RAM GH15L    FA01&lt;br /&gt;        Device Type: DVD Reader/Writer&lt;br /&gt; Size: 2.9 GB&lt;br /&gt;# cdrw -l&lt;br /&gt;Looking for CD devices...&lt;br /&gt;    Node            Connected Device            Device type&lt;br /&gt;----------------------+--------------------------------+-----------------&lt;br /&gt; cdrom0               | HL-DT-ST DVD-RAM GH15L    FA01 | CD Reader/Writer&lt;br /&gt;# modinfo | grep nv_sata&lt;br /&gt; 45 fffffffff7883000   6458 207   1  nv_sata (Nvidia ck804/mcp55 HBA v1.7)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Problem #2 - X will not run to give a graphical interface. If you check the Xerrors file, you will see:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(EE) MGA(0): Given color and fb depth combination not supported by this driver&lt;br /&gt;(EE) Screen(s) found, but none have a usable configuration.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The graphics chipset on ML-115 is identified as "MGA G200e [Pilot] ServerEngines"&lt;br /&gt;aka "mgag200 SE A PCI" aka "vendor 0x102b device 0x0522" and uses the MGA driver, in file "mga_drv.so". The version of the MGA driver supplier with OpenSolaris is version 1.4.6&lt;br /&gt;&lt;br /&gt;I tried booting a Linux LiveCD, &lt;a href="http://grml.org/"&gt;GRML&lt;/a&gt; v1.1, which uses &lt;br /&gt;version 1.4.7 of the MGA driver and this worked without problem on the ML-115.&lt;br /&gt;&lt;br /&gt;The OpenSolaris MGA driver has recently been &lt;a href="http://mail.opensolaris.org/pipermail/fox-notify/2008-August/000327.html"&gt;updated&lt;/a&gt;. See &lt;a href="http://bugs.opensolaris.org/view_bug.do?bug_id=6735095"&gt;Bug 6735095&lt;/a&gt; and that fix should be available in build 97. Let's hope that fixes the X problem.&lt;br /&gt;&lt;br /&gt;Problem #3 - No network card detected. The ML-115 network card is identified as &lt;br /&gt;"Broadcom Corporation NetXtreme BCM5722 Gigabit Ethernet PCI Express" aka "vendor 0x14e4 device 0x165a". The &lt;a href="http://mail.opensolaris.org/pipermail/onnv-notify/2008-August/014754.html"&gt;fix&lt;/a&gt; for this should be available in build 96 - see &lt;a href="http://bugs.opensolaris.org/view_bug.do?bug_id=6726056"&gt;Bug 6726056&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Updated ISO for OpenSolaris to build 95 are available &lt;a href="http://blogs.sun.com/dminer/entry/opensolaris_iso_s"&gt;now&lt;/a&gt;. For an update to build 97, I guess that means a wait of a further 4 weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-8173337950720006190?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/8173337950720006190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=8173337950720006190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/8173337950720006190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/8173337950720006190'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2008/08/opensolaris-and-hp-ml-115.html' title='OpenSolaris and the HP ML-115'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-7491821652934796281</id><published>2008-06-20T15:16:00.004+01:00</published><updated>2008-06-26T11:22:16.432+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CLID'/><category scheme='http://www.blogger.com/atom/ns#' term='ISDN'/><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>ISDN Caller ID and Cisco ISDN routers</title><content type='html'>We recently had a ISDN-2e line installed at work. But I forgot to ask BT (British Telecom) for 'caller ID' aka CLID to be enabled. BT terminology for this is the 'Calling Line Identity Presentation' or CLIP service, and BT will only enable it if you specifically ask for it, and there is an additional charge for the service.&lt;br /&gt;&lt;br /&gt;Without the number of the calling party, the Cisco router does not know which 'Dialer profile' to associate with the incoming call, and rejects the call.&lt;br /&gt;&lt;br /&gt;I kept a record of the log from the Cisco router, before and after enabling CLID, so here we can see the differences. &lt;br /&gt;&lt;br /&gt;While doing the testing &amp; troubleshooting, I had debugging enable on the cisco router as follows:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#show debug&lt;br /&gt;Dial on demand:&lt;br /&gt;  Dial on demand events debugging is on&lt;br /&gt;&lt;br /&gt;The following ISDN debugs are enabled on all DSLs:&lt;br /&gt;&lt;br /&gt;debug isdn error is             ON.&lt;br /&gt;debug isdn event is             ON.&lt;br /&gt;debug isdn q931 is              ON.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;First an incoming data call, before BT enabled CLID on the ISDN line:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ISDN BR0 Q931: RX &lt;- SETUP pd = 8  callref = 0x01&lt;br /&gt;        Sending Complete&lt;br /&gt;        Bearer Capability i = 0x8890&lt;br /&gt;                Standard = CCITT&lt;br /&gt;                Transfer Capability = Unrestricted Digital&lt;br /&gt;                Transfer Mode = Circuit&lt;br /&gt;                Transfer Rate = 64 kbit/s&lt;br /&gt;        Channel ID i = 0x89&lt;br /&gt;        Called Party Number i = 0x81, '67xxxx'&lt;br /&gt;                Plan:ISDN, Type:Unknown&lt;br /&gt;ISDN BR0 EVENT: process_rxstate: ces/callid 1/0x14 calltype 1 HOST_INCOMING_CALL&lt;br /&gt;ISDN BR0:1: Incoming call rejected, unbindable&lt;br /&gt;ISDN BR0 **ERROR**: host_incoming_call: DIALER ERROR 0x1: b channel 0, call id 0x14&lt;br /&gt;ISDN BR0 EVENT: process_rxstate: ces/callid 1/0x14 calltype 1 HOST_DISCONNECT_ACK&lt;br /&gt;ISDN BR0 Q931: TX -&gt; RELEASE_COMP pd = 8  callref = 0x81&lt;br /&gt;        Cause i = 0x8095 - Call rejected&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After BT enabled CLID, which was done within a couple of hours, the log shows this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ISDN BR0 Q931: RX &lt;- SETUP pd = 8  callref = 0x01&lt;br /&gt;        Sending Complete&lt;br /&gt;        Bearer Capability i = 0x8890&lt;br /&gt;                Standard = CCITT&lt;br /&gt;                Transfer Capability = Unrestricted Digital&lt;br /&gt;                Transfer Mode = Circuit&lt;br /&gt;                Transfer Rate = 64 kbit/s&lt;br /&gt;        Channel ID i = 0x89&lt;br /&gt;        Calling Party Number i = 0x2183, '142761xxxx'&lt;br /&gt;                Plan:ISDN, Type:National&lt;br /&gt;        Called Party Number i = 0x81, '67xxxx'&lt;br /&gt;                Plan:ISDN, Type:Unknown&lt;br /&gt;ISDN BR0 EVENT: process_rxstate: ces/callid 1/0x17 calltype 1 HOST_INCOMING_CALL&lt;br /&gt;BR0:1 DDR: Caller id 142761xxxx matched to profile&lt;br /&gt;%DIALER-6-BIND: Interface BR0:1 bound to profile Di1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I also tried making a voice call to the ISDN number, which I knew would fail, just to see what it looked like. Here is before CLID was enabled:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ISDN BR0 Q931: RX &lt;- SETUP pd = 8  callref = 0x01&lt;br /&gt;        Sending Complete&lt;br /&gt;        Bearer Capability i = 0x8090A3&lt;br /&gt;                Standard = CCITT&lt;br /&gt;                Transfer Capability = Speech&lt;br /&gt;                Transfer Mode = Circuit&lt;br /&gt;                Transfer Rate = 64 kbit/s&lt;br /&gt;        Channel ID i = 0x89&lt;br /&gt;        Called Party Number i = 0x81, '67xxxx'&lt;br /&gt;                Plan:ISDN, Type:Unknown&lt;br /&gt;ISDN BR0 EVENT: process_rxstate: ces/callid 1/0x11 calltype 2 HOST_INCOMING_CALL&lt;br /&gt;ISDN BR0 **ERROR**: host_incoming_call: Received a call with a bad bearer cap from &amp;lt;unknown&amp;gt; on B1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And here is a voice call, after CLID enabled:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ISDN BR0 Q931: RX &lt;- SETUP pd = 8  callref = 0x01&lt;br /&gt;        Sending Complete&lt;br /&gt;        Bearer Capability i = 0x8090A3&lt;br /&gt;                Standard = CCITT&lt;br /&gt;                Transfer Capability = Speech&lt;br /&gt;                Transfer Mode = Circuit&lt;br /&gt;                Transfer Rate = 64 kbit/s&lt;br /&gt;        Channel ID i = 0x89&lt;br /&gt;        Calling Party Number i = 0x2183, '142768xxxx'&lt;br /&gt;                Plan:ISDN, Type:National&lt;br /&gt;        Called Party Number i = 0x81, '67xxxx'&lt;br /&gt;                Plan:ISDN, Type:Unknown&lt;br /&gt;ISDN BR0 EVENT: process_rxstate: ces/callid 1/0x19 calltype 2 HOST_INCOMING_CALL&lt;br /&gt;ISDN BR0 **ERROR**: host_incoming_call: Received a call with a bad bearer cap from 142768xxxx on B1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;By the way, the Cisco router was a 1721 using IOS v12.3&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#show version&lt;br /&gt;Cisco Internetwork Operating System Software&lt;br /&gt;IOS (tm) C1700 Software (C1700-Y-M), Version 12.3(26), RELEASE SOFTWARE (fc2)&lt;br /&gt;Technical Support: http://www.cisco.com/techsupport&lt;br /&gt;Copyright (c) 1986-2008 by cisco Systems, Inc.&lt;br /&gt;Compiled Mon 17-Mar-08 14:24 by dchih&lt;br /&gt;&lt;br /&gt;ROM: System Bootstrap, Version 12.2(7r)XM1, RELEASE SOFTWARE (fc1)&lt;br /&gt;System returned to ROM by power-on&lt;br /&gt;System restarted at 12:53:16 GMT Wed May 21 2008&lt;br /&gt;System image file is "flash:c1700-y-mz.123-26.bin"&lt;br /&gt;&lt;br /&gt;cisco 1721 (MPC860P) processor (revision 0x100) with 28231K/4537K bytes of memory.&lt;br /&gt;MPC860P processor: part number 5, mask 2&lt;br /&gt;Bridging software.&lt;br /&gt;X.25 software, Version 3.0.0.&lt;br /&gt;Basic Rate ISDN software, Version 1.1.&lt;br /&gt;1 FastEthernet/IEEE 802.3 interface(s)&lt;br /&gt;1 Serial(sync/async) network interface(s)&lt;br /&gt;1 ISDN Basic Rate interface(s)&lt;br /&gt;32K bytes of non-volatile configuration memory.&lt;br /&gt;16384K bytes of processor board System flash (Read/Write)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-7491821652934796281?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/7491821652934796281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=7491821652934796281' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/7491821652934796281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/7491821652934796281'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2008/06/isdn-caller-id-and-cisco-isdn-routers.html' title='ISDN Caller ID and Cisco ISDN routers'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-5614732533042258308</id><published>2008-06-12T11:00:00.002+01:00</published><updated>2008-06-12T11:15:25.926+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='odbc'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle, Access &amp; ODBC: Problems &amp; Solution</title><content type='html'>I was using Microsoft Access, in this case Access 97, to connect to an Oracle 10g database, using the ability of Access to set linked tables using an ODBC data source.&lt;br /&gt;&lt;br /&gt;For the client, I was using the Oracle Instant Client v10.1.0.4 and setting an environmental variable NLS_LANG.&lt;br /&gt;&lt;br /&gt;I was seeing two problems.  First, when trying to link to the tables/views on the Oracle server, after selecting the ODBC data source DSN, Access would list all the tables/views on the Oracle server, but It would only display the first character of the name of the tables/views, making it impossible to find the correct table/view.&lt;br /&gt;&lt;br /&gt;Second, when I tried setting up the Oracle linked tables in the Access MDB file on another PC, where everything was working ok, and then going back to the original problem PC and opening same MDB file, when opening the Oracle linked tables, all rows and all fields contained #Deleted.&lt;br /&gt;&lt;br /&gt;I did a Google and found this Microsoft KnowledgeBase article - Q913070:&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/913070"&gt;#Deleted is displayed in the records when you open a linked ODBC table from an Oracle 10g database in Access 2003, in Access 2002, or in Access 2000&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To cut a long story short, I had set the client side environmental variable&lt;br /&gt;&lt;pre&gt;NLS_LANG = ENGLISH_UNITED KINGDOM.WE8ISO8859P1&lt;/pre&gt;&lt;br /&gt;but this did not match the setting on the Oracle database, and I was advised&lt;br /&gt;by our Oracle DBA that I should have been using:&lt;br /&gt;&lt;pre&gt;NLS_LANG = ENGLISH_UNITED KINGDOM.WE8MSWIN1252&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Apparently, our Oracle DBA had changed the NLS_CHARACTERSET of the database at some stage in the past.&lt;br /&gt;&lt;br /&gt;After I corrected the value of NLS_LANG, everything starting working ok. It seems WE8MSWIN1252 is a binary super set of WE8ISO8859P1.&lt;br /&gt;&lt;br /&gt;See these links for further background:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm"&gt;Oracle NLS_LANG FAQ&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://oradbablog.blogspot.com/2006/07/quotation-marks-changing-in-web-forms.html"&gt;Quotation marks changing in web forms, from being pasted from MS Word&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://fors.com/orasupp/rdbms/nls/13856_1.HTM"&gt;Changing Database Character Set&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-5614732533042258308?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/5614732533042258308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=5614732533042258308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/5614732533042258308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/5614732533042258308'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2008/06/oracle-access-odbc-problems-solution.html' title='Oracle, Access &amp; ODBC: Problems &amp; Solution'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-4964670964679645946</id><published>2008-05-14T23:59:00.003+01:00</published><updated>2008-05-15T00:22:48.245+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grml'/><category scheme='http://www.blogger.com/atom/ns#' term='gigabyte'/><title type='text'>My new motherboard: Discovering hardware with 'grml'</title><content type='html'>I've bought a new motherboard for a new PC I'm building. It's intended to run OpenSolaris with the ZFS file system and the Solaris iScsi target.  But to kick-off, I'm going to start by taking a look at the system, running a Linux Live-CD  distribution called '&lt;a href="http://www.grml.org/"&gt;grml&lt;/a&gt;'.&lt;br /&gt;&lt;br /&gt;Gigabyte seem to have generated some confusion over the numbering of this motherboard.  My board it labelled 'GA-P35C-DS3R v2.1'.  A very similar motherboard, the 'GA-EP35C-DS3R' has been &lt;a href="http://www.pcpro.co.uk/labs/196725/gigabyte-gaep35cds3r.html"&gt;reviewed this month  in 'PCpro' magazine&lt;/a&gt; here in the UK, and was selected as 'Labs Winner'.&lt;br /&gt;&lt;br /&gt;So what is the difference between these two similarly named motherboards. Other are asking the same question, and the answer seems to be '&lt;a href="http://www.tomshardware.co.uk/forum/248429-12-difference-p35c-ds3r-ep35c-ds3r"&gt;there is no difference&lt;/a&gt;'.  They are both 'dynamic energy saver' motherboards.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://del.icio.us/nwsmith/grml"&gt;Grml&lt;/a&gt; originates from Germany, and is based on a Debian.  It boot's directly to a command line prompt, which I love, as this is where the real work is done.&lt;br /&gt;&lt;br /&gt;On any new hardware I get my hands on, I like to boot up grml, and use it to poke around &amp; identify what sort of hardware we have for hard drive interfaces and networking.&lt;br /&gt; &lt;br /&gt;One of the reasons I picked this Gigabyte motherboard was that it used the Intel ICH9R chipset to provide six AHCI compatible SATA interfaces.  In addition it has a JMicron interface chip, which can either provide two more AHCI sata ports, or alternatively run in legacy mode with old style IDE drives.&lt;br /&gt;&lt;br /&gt;Again to kick off, I am running the JMicron in legacy mode, with a DVD drive&lt;br /&gt;and a IDE drive hanging off of the ribbon cable.&lt;br /&gt;&lt;br /&gt;Ok, lets take a look:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;root@grml ~ # uname -a&lt;br /&gt;Linux grml 2.6.23-grml64 #1 SMP PREEMPT Mon Feb 11 16:49:32 CET 2008 x86_64 GNU/Linux&lt;br /&gt;root@grml ~ # lspci -nn&lt;br /&gt;00:00.0 Host bridge [0600]: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller [8086:29c0] (rev 02)&lt;br /&gt;00:01.0 PCI bridge [0604]: Intel Corporation 82G33/G31/P35/P31 Express PCI Express Root Port [8086:29c1] (rev 02)&lt;br /&gt;00:1a.0 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 [8086:2937] (rev 02)&lt;br /&gt;00:1a.1 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 [8086:2938] (rev 02)&lt;br /&gt;00:1a.2 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 [8086:2939] (rev 02)&lt;br /&gt;00:1a.7 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 [8086:293c] (rev 02)&lt;br /&gt;00:1b.0 Audio device [0403]: Intel Corporation 82801I (ICH9 Family) HD Audio Controller [8086:293e] (rev 02)&lt;br /&gt;00:1c.0 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 [8086:2940] (rev 02)&lt;br /&gt;00:1c.3 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 [8086:2946] (rev 02)&lt;br /&gt;00:1c.4 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 [8086:2948] (rev 02)&lt;br /&gt;00:1d.0 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 [8086:2934] (rev 02)&lt;br /&gt;00:1d.1 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 [8086:2935] (rev 02)&lt;br /&gt;00:1d.2 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 [8086:2936] (rev 02)&lt;br /&gt;00:1d.7 USB Controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 [8086:293a] (rev 02)&lt;br /&gt;00:1e.0 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev 92)&lt;br /&gt;00:1f.0 ISA bridge [0601]: Intel Corporation 82801IR (ICH9R) LPC Interface Controller [8086:2916] (rev 02)&lt;br /&gt;00:1f.2 SATA controller [0106]: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA AHCI Controller [8086:2922] (rev 02)&lt;br /&gt;00:1f.3 SMBus [0c05]: Intel Corporation 82801I (ICH9 Family) SMBus Controller [8086:2930] (rev 02)&lt;br /&gt;01:00.0 VGA compatible controller [0300]: nVidia Corporation NV44 [Quadro NVS 285] [10de:0165] (rev a1)&lt;br /&gt;03:00.0 SATA controller [0106]: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller [197b:2363] (rev 02)&lt;br /&gt;03:00.1 IDE interface [0101]: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller [197b:2363] (rev 02)&lt;br /&gt;04:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 01)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here are some 'highlights' from the 'dmesg' command, showing I have a&lt;br /&gt;Samsung SATA drive on one of the ICH9 ports, and a Western Digital drive&lt;br /&gt;on the JMicron IDE port.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;root@grml ~ # dmesg&lt;br /&gt;Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2&lt;br /&gt;ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx&lt;br /&gt;JMB363: IDE controller at PCI slot 0000:03:00.1&lt;br /&gt;PCI: Enabling device 0000:03:00.1 (0000 -&gt; 0001)&lt;br /&gt;ACPI: PCI Interrupt 0000:03:00.1[B] -&gt; GSI 16 (level, low) -&gt; IRQ 16&lt;br /&gt;JMB363: chipset revision 2&lt;br /&gt;JMB363: 100% native mode on irq 16&lt;br /&gt;Probing IDE interface ide0...&lt;br /&gt;hda: SAMSUNG CD-ROM SC-148C, ATAPI CD/DVD-ROM drive&lt;br /&gt;hdb: WDC WD800JB-00CRA1, ATA DISK drive&lt;br /&gt;hda: Disabling (U)DMA for SAMSUNG CD-ROM SC-148C (blacklisted)&lt;br /&gt;hdb: selected mode 0x45&lt;br /&gt;ahci 0000:00:1f.2: version 2.3&lt;br /&gt;ACPI: PCI Interrupt 0000:00:1f.2[B] -&gt; GSI 19 (level, low) -&gt; IRQ 19&lt;br /&gt;ahci 0000:00:1f.2: AHCI 0001.0200 32 slots 6 ports 3 Gbps 0x3f impl SATA mode&lt;br /&gt;ahci 0000:00:1f.2: flags: 64bit ncq sntf stag pm led clo pmp pio slum part&lt;br /&gt;PCI: Setting latency timer of device 0000:00:1f.2 to 64&lt;br /&gt;scsi0 : ahci&lt;br /&gt;scsi1 : ahci&lt;br /&gt;scsi2 : ahci&lt;br /&gt;scsi3 : ahci&lt;br /&gt;scsi4 : ahci&lt;br /&gt;scsi5 : ahci&lt;br /&gt;ata1: SATA max UDMA/133 cmd 0xffffc20000026100 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 507&lt;br /&gt;ata2: SATA max UDMA/133 cmd 0xffffc20000026180 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 507&lt;br /&gt;ata3: SATA max UDMA/133 cmd 0xffffc20000026200 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 507&lt;br /&gt;ata4: SATA max UDMA/133 cmd 0xffffc20000026280 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 507&lt;br /&gt;ata5: SATA max UDMA/133 cmd 0xffffc20000026300 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 507&lt;br /&gt;ata6: SATA max UDMA/133 cmd 0xffffc20000026380 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 507&lt;br /&gt;ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)&lt;br /&gt;ata1.00: ATA-7: SAMSUNG HD400LJ, ZZ100-15, max UDMA7&lt;br /&gt;ata1.00: 781422768 sectors, multi 0: LBA48 NCQ (depth 31/32)&lt;br /&gt;ata1.00: configured for UDMA/133&lt;br /&gt;ata2: SATA link down (SStatus 0 SControl 300)&lt;br /&gt;ata3: SATA link down (SStatus 0 SControl 300)&lt;br /&gt;ata4: SATA link down (SStatus 0 SControl 300)&lt;br /&gt;ata5: SATA link down (SStatus 0 SControl 300)&lt;br /&gt;ata6: SATA link down (SStatus 0 SControl 300)&lt;br /&gt;scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG HD400LJ  ZZ10 PQ: 0 ANSI: 5&lt;br /&gt;sd 0:0:0:0: [sda] 781422768 512-byte hardware sectors (400088 MB)&lt;br /&gt;sd 0:0:0:0: [sda] Write Protect is off&lt;br /&gt;sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00&lt;br /&gt;sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA&lt;br /&gt;ACPI: PCI Interrupt 0000:03:00.0[A] -&gt; GSI 19 (level, low) -&gt; IRQ 19&lt;br /&gt;ahci 0000:03:00.0: AHCI 0001.0000 32 slots 2 ports 3 Gbps 0x3 impl SATA mode&lt;br /&gt;ahci 0000:03:00.0: flags: 64bit ncq pm led clo pmp pio slum part&lt;br /&gt;PCI: Setting latency timer of device 0000:03:00.0 to 64&lt;br /&gt;scsi6 : ahci&lt;br /&gt;scsi7 : ahci&lt;br /&gt;ata7: SATA max UDMA/133 cmd 0xffffc20000028100 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 19&lt;br /&gt;ata8: SATA max UDMA/133 cmd 0xffffc20000028180 ctl 0x0000000000000000 bmdma 0x0000000000000000 irq 19&lt;br /&gt;ata7: SATA link down (SStatus 0 SControl 300)&lt;br /&gt;ata8: SATA link down (SStatus 0 SControl 300)&lt;br /&gt;r8169 Gigabit Ethernet driver 2.2LK-NAPI loaded&lt;br /&gt;eth0: RTL8168b/8111b at 0xffffc20000030000, 00:1a:4d:5e:b9:ba, XID 38500000 IRQ 16&lt;br /&gt;r8169: eth0: link up&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, that's enough excitement for this time, as I'm out of time.&lt;br /&gt;See you next time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-4964670964679645946?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/4964670964679645946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=4964670964679645946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/4964670964679645946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/4964670964679645946'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2008/05/my-new-motherboard-discovering-hardware.html' title='My new motherboard: Discovering hardware with &apos;grml&apos;'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-1364232103387184798</id><published>2008-03-25T15:56:00.006Z</published><updated>2008-03-26T12:58:07.745Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='letpd'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='l2tp'/><title type='text'>Vista SP1 crashes Linux L2TP daemon</title><content type='html'>In the last week, one of our users has had problems connecting to our VPN, which uses Smoothwall and the Linux L2TP daemon. Until recently this user had not experienced a problem.&lt;br /&gt;&lt;br /&gt;I checked our Smoothwall box, and found that the L2TP daemon (l2tpd) was not running. But after restarting it, it crashed again as soon as the user tried to connect. Other users could connect without problem.&lt;br /&gt;&lt;br /&gt;Here is the tail end of the log from /var/log/messages:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;l2tpd version 0.70-smoothwall started on smoothwallAF1 PID:28094&lt;br /&gt;Linux version 2.4.34.5-up on a i686, listening on IP address 0.0.0.0, port 1701&lt;br /&gt;&lt;--snip--&gt;&lt;br /&gt;handle_avps: handling avp's for tunnel 61598, call 0&lt;br /&gt;message_type_avp: message type 10 (Incoming-Call-Request)&lt;br /&gt;message_type_avp: new incoming call&lt;br /&gt;ourcid = 13433, entropy_buf = 3479&lt;br /&gt;assigned_session_avp: assigned session id: 1&lt;br /&gt;call_serno_avp: serial number is 0&lt;br /&gt;bearer_type_avp: peer bears: analog&lt;br /&gt;handle_avps: Bad exit status handling attribute 1 (Result Code).&lt;br /&gt;Segmentation fault      (core dumped) /modules/tunnel/usr/sbin/l2tpd&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So, why suddenly a problem?&lt;br /&gt;The Windows XP users could connect ok.  The Windows Vista users could connect ok. &lt;br /&gt;&lt;br /&gt;Ahh! The user who was having problems had recently applied Vista SP1.&lt;br /&gt;&lt;br /&gt;Using tcpdump, I captured the packets arriving at Smoothwall on UDP port 1701, and then examined the capture file using WireShark. The problem seems to occur on the ICRQ packet, which is the 'Incomming Call Request', transmitted by the Windows client to the Smoothwall server.&lt;br /&gt;&lt;br /&gt;For Windows XP clients, we see the following AVP's (Attribute Value pair):&lt;br /&gt;'Control Message', 'Assigned Session', 'Call Serial Number' and 'Bearer Type'.&lt;br /&gt;&lt;br /&gt;For the Windows Vista SP1 client, there was an extra AVP tagged onto the end. This is a 'Vendor-Specific' AVP of 'Type 1', specifying a 'Vendor ID' of 311 (0x0137), meaning 'Microsoft'.&lt;br /&gt;&lt;br /&gt;So what is this extra Microsoft AVP?  A quick google finds a &lt;a href="http://www.cisco.com/en/US/docs/ios/12_2/security/configuration/guide/scfrdat3.html"&gt;Cisco document&lt;/a&gt;, implying it may be a related to RADIUS. It talks about Vendor-Specific Attributes (VSAs). Table 36 lists Vendor-Specific RADIUS IETF Attributes with Vendor company code 311 and Sub-type 1 which is a "MSCHAP-Response" attribute.&lt;br /&gt;&lt;br /&gt;Ok, so it seems the version of l2tpd we are using does not like the presence of this extra AVP, and mistakes it for a 'Result Code' AVP, which should only be present in CDN and StopCCN messages.&lt;br /&gt;&lt;br /&gt;The relavent RFC is: &lt;a href="http://www.ietf.org/rfc/rfc2661.txt"&gt;RFC2261 - "Layer Two Tunneling Protocol"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Looking at the top of page 50 of the RFC, for an ICRQ, it lists the AVPs that MUST be present, and the AVPs that MAY be present. This would seem to indicate that a vendor specific AVP is NOT valid at this stage.&lt;br /&gt;&lt;br /&gt;Looking at page 12 of the RFC, section 4.1, which details the format of the AVP, implies that the problem could be fixed if l2tpd were to look at the 'Vendor ID' field, and ignore the AVP in the ICRQ where the Vendor ID was non zero.&lt;br /&gt;&lt;br /&gt;Looking at the code for l2tpd, in the file "&lt;a href="http://csourcesearch.net/package/l2tpd/0.70_pre20031121/l2tpd-0.70-pre20031121.orig/avp.c"&gt;avp.c&lt;/a&gt;" and in function "handle_avps()" there is no code that checks to confirm that (avp-&gt;vendorid) is zero.&lt;br /&gt;&lt;br /&gt;At the moment we do not have a fix, other than to un-install Vista SP1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-1364232103387184798?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/1364232103387184798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=1364232103387184798' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/1364232103387184798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/1364232103387184798'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2008/03/vista-sp1-crashes-linux-l2tp-daemon.html' title='Vista SP1 crashes Linux L2TP daemon'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-1313123866633947021</id><published>2008-02-28T15:57:00.003Z</published><updated>2008-02-28T16:02:39.618Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='windbg'/><title type='text'>Windbg Symbols for ntoskrnl.exe</title><content type='html'>In this case the OS was Windows Vista 64-bit with SP1 RTM applied,&lt;br /&gt;so the kernel was  "6001.18000.amd64fre.longhorn_rtm.080118-1840".&lt;br /&gt;&lt;br /&gt;I tried setting WinDbg to load sysmbols across the Internet&lt;br /&gt;from Microsoft's symbol server. But I got errors like the following:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; ERROR: Module load completed but symbols could not be loaded for ntoskrnl.exe&lt;br /&gt; Kernel symbols are WRONG. Please fix symbols to do analysis.&lt;br /&gt; Your debugger is not using the correct symbols&lt;br /&gt; Type referenced: nt!_KPRCB&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So I decided to download the symbols, from here:&lt;br /&gt;&lt;a href="http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx"&gt;http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I extracted them onto my hard drive, updated my symbols path,&lt;br /&gt;but I still got the same errors.&lt;br /&gt;&lt;br /&gt;I discovered that to fix this, you need to go into&lt;br /&gt;the SYMBOLS\EXE folder and copy file 'ntkrnlmp.pdb'&lt;br /&gt;to 'ntoskrnl.pdb'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-1313123866633947021?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/1313123866633947021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=1313123866633947021' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/1313123866633947021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/1313123866633947021'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2008/02/windbg-symbols-for-ntoskrnlexe.html' title='Windbg Symbols for ntoskrnl.exe'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-7194656905780319885</id><published>2008-01-18T11:39:00.000Z</published><updated>2008-01-18T11:50:23.086Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Calling Oracle Stored Procedure with PHP</title><content type='html'>I've just been following this excellent tutorial article&lt;br /&gt;on the Oracle WebSite:&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/pub/articles/oracle_php_cookbook/fuecks_sps.html"&gt;Calling Oracle Stored Procedure with PHP&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;I'm only just starting to use Oracle PL/SQL and PHP,&lt;br /&gt;and it's still early days. So I'm making really stupid&lt;br /&gt;mistakes and getting errors like this:&lt;br /&gt;&lt;pre&gt;Warning: oci_execute() [function.oci-execute]: ORA-06550: line 1, column 7:&lt;br /&gt;PLS-00201: identifier 'ROLLROUTE' must be declared ORA-06550: line 1, column 7:&lt;/pre&gt;&lt;br /&gt;Here was my code:&lt;br /&gt;&lt;pre&gt; $sql = "BEGIN RollRoute(:PartNo); END;";&lt;br /&gt;&lt;br /&gt; $s = oci_parse($c, $sql );&lt;br /&gt; oci_bind_by_name($s,':PartNo',$PartNo,32);&lt;br /&gt; oci_execute($s);&lt;/pre&gt;&lt;br /&gt;The fix was simple:&lt;br /&gt;&lt;pre&gt; $sql = "BEGIN RROUTING_API.RollRoute(:PartNo); END;";&lt;/pre&gt;&lt;br /&gt;Yes, the Procedure is in a Package.&lt;br /&gt;So you need to prefix the procedure name, with the package name.&lt;br /&gt;Being a newbie, it look me a while to spot that!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-7194656905780319885?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/7194656905780319885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=7194656905780319885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/7194656905780319885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/7194656905780319885'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2008/01/calling-oracle-stored-procedure-with.html' title='Calling Oracle Stored Procedure with PHP'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-273307762837620917</id><published>2007-08-30T12:30:00.000+01:00</published><updated>2007-08-30T14:33:04.487+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WMI'/><category scheme='http://www.blogger.com/atom/ns#' term='kerberos'/><title type='text'>WMI and "Permission denied"</title><content type='html'>Today we were trying to use vbscript and WMI to audit the software installed on PCs connected to our network. The PC's were running Windows XP Pro, and were members of an Active Directory Domain.&lt;br /&gt;&lt;br /&gt;The script worked fine in most cases, but we occasionally got errors like these:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Error 462 on GetObject()&lt;br /&gt;"The remote server machine does not exist or is unavailable"&lt;br /&gt;&lt;br /&gt;Error 70 on GetObject()&lt;br /&gt;"Permission denied"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The line of code in question was:&lt;br /&gt;&lt;pre&gt;Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate,authenticationLevel=Pkt}!//" &amp; strComputer &amp; sDNS &amp; "/root/default:StdRegProv")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To cut a long story short, we used WireShark to capture the conversation between the source and target PC's.&lt;br /&gt;&lt;br /&gt;Here is a RPC packet sent from the source to the target PC.&lt;br /&gt;The target PC is "PC-ONE-LAP".&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;DCE RPC Bind, Fragment: Single, FragLen: 1440, Call: 2&lt;br /&gt;    Version: 5&lt;br /&gt;    Version (minor): 0&lt;br /&gt;    Packet type: Bind (11)&lt;br /&gt;    Packet Flags: 0x03&lt;br /&gt;    Data Representation: 10000000&lt;br /&gt;    Frag Length: 1440&lt;br /&gt;    Auth Length: 1360&lt;br /&gt;    Call ID: 2&lt;br /&gt;    Max Xmit Frag: 5840&lt;br /&gt;    Max Recv Frag: 5840&lt;br /&gt;    Assoc Group: 0x0000b254&lt;br /&gt;    Num Ctx Items: 1&lt;br /&gt;    Ctx Item[1]: ID:1&lt;br /&gt;        Context ID: 1&lt;br /&gt;        Num Trans Items: 1&lt;br /&gt;        Abstract Syntax: ISystemActivator V0.0&lt;br /&gt;            Interface: ISystemActivator UUID: 000001a0-0000-0000-c000-000000000046&lt;br /&gt;            Interface Ver: 0&lt;br /&gt;            Interface Ver Minor: 0&lt;br /&gt;        Transfer Syntax[1]: 8a885d04-1ceb-11c9-9fe8-08002b104860 V2&lt;br /&gt;    Auth type: SPNEGO (9)&lt;br /&gt;    Auth level: Connect (2)&lt;br /&gt;    Auth pad len: 0&lt;br /&gt;    Auth Rsrvd: 0&lt;br /&gt;    Auth Context ID: 1277840&lt;br /&gt;    GSS-API Generic Security Service Application Program Interface&lt;br /&gt;        OID: 1.3.6.1.5.5.2 (SPNEGO - Simple Protected Negotiation)&lt;br /&gt;        SPNEGO&lt;br /&gt;            negTokenInit&lt;br /&gt;                mechTypes: 3 items&lt;br /&gt;                    Item: 1.2.840.48018.1.2.2 (MS KRB5 - Microsoft Kerberos 5)&lt;br /&gt;                    Item: 1.2.840.113554.1.2.2 (KRB5 - Kerberos 5)&lt;br /&gt;                    Item: 1.3.6.1.4.1.311.2.2.10 (NTLMSSP - Microsoft NTLM Security Support Provider)&lt;br /&gt;                mechToken: 6E82050A30820506A003020105A10302010EA20703050020...&lt;br /&gt;                krb5_blob: 6E82050A30820506A003020105A10302010EA20703050020...&lt;br /&gt;                    Kerberos AP-REQ&lt;br /&gt;                        Pvno: 5&lt;br /&gt;                        MSG Type: AP-REQ (14)&lt;br /&gt;                        Padding: 0&lt;br /&gt;                        APOptions: 20000000 (Mutual required)&lt;br /&gt;                        Ticket&lt;br /&gt;                            Tkt-vno: 5&lt;br /&gt;                            Realm: COMPANY.NET&lt;br /&gt;                            Server Name (Service and Instance): &lt;font color="red"&gt;RPCSS/PC-ONE-LAP.company.net&lt;/font&gt;&lt;br /&gt;                            enc-part rc4-hmac&lt;br /&gt;                        Authenticator rc4-hmac&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can see it is using kerberos to authenticate.&lt;br /&gt;Here is the response from the target PC:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;DCE RPC Bind_ack, Fragment: Single, FragLen: 199, Call: 2&lt;br /&gt;    Version: 5&lt;br /&gt;    Version (minor): 0&lt;br /&gt;    Packet type: Bind_ack (12)&lt;br /&gt;    Packet Flags: 0x03&lt;br /&gt;    Data Representation: 10000000&lt;br /&gt;    Frag Length: 199&lt;br /&gt;    Auth Length: 131&lt;br /&gt;    Call ID: 2&lt;br /&gt;    Max Xmit Frag: 5840&lt;br /&gt;    Max Recv Frag: 5840&lt;br /&gt;    Assoc Group: 0x0000b254&lt;br /&gt;    Scndry Addr len: 4&lt;br /&gt;    Scndry Addr: 135&lt;br /&gt;    Num results: 1&lt;br /&gt;    Context ID[1]&lt;br /&gt;    Auth type: SPNEGO (9)&lt;br /&gt;    Auth level: Connect (2)&lt;br /&gt;    Auth pad len: 0&lt;br /&gt;    Auth Rsrvd: 0&lt;br /&gt;    Auth Context ID: 1277840&lt;br /&gt;    GSS-API Generic Security Service Application Program Interface&lt;br /&gt;        SPNEGO&lt;br /&gt;            negTokenTarg&lt;br /&gt;                negResult: accept-incomplete (1)&lt;br /&gt;                supportedMech: 1.2.840.48018.1.2.2 (MS KRB5 - Microsoft Kerberos 5)&lt;br /&gt;                responseToken: 606606092A864886F71201020203007E573055A003020105...&lt;br /&gt;                krb5_blob: 606606092A864886F71201020203007E573055A003020105...&lt;br /&gt;                    KRB5 OID: 1.2.840.113554.1.2.2 (KRB5 - Kerberos 5)&lt;br /&gt;                    krb5_tok_id: KRB5_ERROR (0x0003)&lt;br /&gt;                    Kerberos KRB-ERROR&lt;br /&gt;                        Pvno: 5&lt;br /&gt;                        MSG Type: KRB-ERROR (30)&lt;br /&gt;                        stime: 2007-08-30 10:19:06 (Z)&lt;br /&gt;                        susec: 851504&lt;br /&gt;                        error_code: KRB5KRB_AP_ERR_MODIFIED (41)&lt;br /&gt;                        Realm: COMPANY.NET&lt;br /&gt;                        Server Name (Principal): &lt;font color="red"&gt;PC-TWO-LAP$&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The response show an Kerberos error "KRB5KRB_AP_ERR_MODIFIED", as it is basically saying - hold on, my name is "PC-TWO-LAP" and not "PC-ONE-LAP".&lt;br /&gt;&lt;br /&gt;In the System Event Log for the source PC, you will see the following:&lt;br /&gt;&lt;pre&gt;Event Type: Error&lt;br /&gt;Event Source: DCOM&lt;br /&gt;Event Category: None&lt;br /&gt;Event ID: 10009&lt;br /&gt;Date:  30/08/2007&lt;br /&gt;Time:  10:22:52&lt;br /&gt;User:  COMPANY\USER&lt;br /&gt;Computer: SOURCEPC&lt;br /&gt;Description:&lt;br /&gt;DCOM was unable to communicate with the computer PC-ONE-LAP.company.net&lt;br /&gt; using any of the configured protocols.&lt;br /&gt;&lt;br /&gt;Event Type: Error&lt;br /&gt;Event Source: Kerberos&lt;br /&gt;Event Category: None&lt;br /&gt;Event ID: 4&lt;br /&gt;Date:  30/08/2007&lt;br /&gt;Time:  10:22:52&lt;br /&gt;User:  N/A&lt;br /&gt;Computer: SOURCEPC&lt;br /&gt;Description:&lt;br /&gt;The kerberos client received a KRB_AP_ERR_MODIFIED error from the&lt;br /&gt; server PC-TWO-LAP$.  This indicates that the password used to encrypt&lt;br /&gt; the kerberos service ticket is different than that on the target server.&lt;br /&gt; Commonly, this is due to identically named  machine accounts in the&lt;br /&gt;  target realm (COMPANY.NET), and the client realm.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The explanation is that the DNS server was returning the same IP address for both "PC-ONE-LAP" and "PC-TWO-LAP". Only "PC-TWO-LAP" was actually connected to the network, but when we tried "PC-ONE-LAP", it was actually "PC-TWO-LAP" that responded.&lt;br /&gt;&lt;br /&gt;Kerberos authenticates both the User and the Computer, so that is why we got the error. If you get this error, then check your DNS records.&lt;br /&gt;&lt;br /&gt;For other similar problems you may find this link useful:&lt;br /&gt;&lt;a href="http://www.invirtus.com/content/view/819/0/"&gt;Failed to get remote resources: Remote server is unavailable. The RPC server is unavailable.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-273307762837620917?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/273307762837620917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=273307762837620917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/273307762837620917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/273307762837620917'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/08/wmi-and-permission-denied.html' title='WMI and &quot;Permission denied&quot;'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-1578007077125085832</id><published>2007-08-27T16:26:00.000+01:00</published><updated>2007-08-27T16:36:36.532+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wget'/><title type='text'>A problem with wget on OpenSolaris</title><content type='html'>Ok, here is a stupid little problem.I waisted an hour trying to figure this one out.  Maybe this will help someone to avoid the same mistake!&lt;br /&gt;&lt;br /&gt;I was using 'wget' to try to download a file from a http server onto my OpenSolaris PC. Here is what I did:&lt;br /&gt;&lt;pre&gt;# uname -a&lt;br /&gt;SunOS solaris 5.11 snv_60 i86pc i386 i86pc&lt;br /&gt;# wget -V&lt;br /&gt;GNU Wget 1.10.2&lt;br /&gt;# cd /home&lt;br /&gt;# /usr/sfw/bin/wget http://www.nwsmith.net/index.htm&lt;br /&gt;--18:31:13--  http://www.nwsmith.net/index.htm&lt;br /&gt;           =&gt; `index.htm'&lt;br /&gt;Resolving www.nwsmith.net... NNN.NNN.NNN.NNN&lt;br /&gt;Connecting to www.nwsmith.net|NNN.NNN.NNN.NNN|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 11,774 (11K) [text/html]&lt;br /&gt;index.htm: Operation not applicable&lt;br /&gt;Cannot write to `index.htm' (Operation not applicable).&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Did you spot my mistake?&lt;br /&gt;I must have thought I was using a Linux PC, because then the '/home' directory would have been fine. But on Solaris...&lt;br /&gt;&lt;pre&gt;# ls -ld /home&lt;br /&gt;dr-xr-xr-x   1 root     root           1 Apr 18 00:03 /home&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;...you cannot write to that directory.&lt;br /&gt;Choose a directory that is writeable, and then wget will work without error.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-1578007077125085832?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/1578007077125085832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=1578007077125085832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/1578007077125085832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/1578007077125085832'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/08/problem-with-wget-on-opensolaris.html' title='A problem with wget on OpenSolaris'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-4470366409771587104</id><published>2007-08-16T15:27:00.000+01:00</published><updated>2007-08-16T15:37:44.333+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mdadm'/><category scheme='http://www.blogger.com/atom/ns#' term='sfdisk'/><category scheme='http://www.blogger.com/atom/ns#' term='fdisk'/><title type='text'>fdisk, sfdisk, mdadm and SCSI hard drive geometry</title><content type='html'>At work, one of our servers, uses Linux software RAIDand we have two mirrored hard drives setup as RAID1.&lt;br /&gt;Smartmontools reported that one of the hard drives was starting to fail:&lt;br /&gt;&lt;pre&gt;# smartctl -a /dev/sda&lt;br /&gt;SMART Health Status: LOGICAL UNIT FAILURE PREDICTION THRESHOLD EXCEEDED [asc=5d,ascq=2]&lt;br /&gt;# smartctl -l selftest /dev/sda&lt;br /&gt;SMART Self-test log&lt;br /&gt;Num  Test              Status                 segment  LifeTime  LBA_first_err [SK ASC ASQ]&lt;br /&gt;     Description                              number   (hours)&lt;br /&gt;# 1  Background long   Failed in segment --&gt;       2 10572  0x         22f0e6c [0x4 0x40 0x85]&lt;br /&gt;# 2  Background long   Failed in segment --&gt;       2 10404  0x         22f0e6c [0x3 0x11 0x0]&lt;br /&gt;# 3  Background long   Failed in segment --&gt;       2 10236  0x         22f0e63 [0x4 0x40 0x85]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So we executed the following commands:&lt;br /&gt;&lt;pre&gt;mdadm --manage /dev/md0 --set-faulty  /dev/sda1&lt;br /&gt;mdadm --manage /dev/md0 --remove /dev/sda1&lt;br /&gt;mdadm --manage /dev/md1 --set-faulty /dev/sda2&lt;br /&gt;mdadm --manage /dev/md1 --remove /dev/sda2&lt;br /&gt;mdadm --manage /dev/md2 --set-faulty /dev/sda3&lt;br /&gt;mdadm --manage /dev/md2 --remove /dev/sda3&lt;br /&gt;mdadm --manage /dev/md3 --set-faulty /dev/sda5&lt;br /&gt;mdadm --manage /dev/md3 --remove /dev/sda5&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And then hot un-plugged the drive.&lt;br /&gt;When the replacement drive arrived, although it was an identical model&lt;br /&gt;to the original, and had an identical total size, the new drive had a different geometry.&lt;br /&gt;&lt;pre&gt;[root@ifsclstr02 ~]# smartctl -i /dev/sda&lt;br /&gt;Device: IBM-ESXS BBD036C3ESTT0ZFN Version: JP86&lt;br /&gt;Device type: disk&lt;br /&gt;Transport protocol: Parallel SCSI (SPI-4)&lt;br /&gt;&lt;br /&gt;[root@ifsclstr02 ~]# smartctl -i /dev/sdb&lt;br /&gt;Device: IBM-ESXS BBD036C3ESTT0ZFN Version: JP85&lt;br /&gt;Device type: disk&lt;br /&gt;Transport protocol: Parallel SCSI (SPI-4)&lt;br /&gt;&lt;br /&gt;# fdisk -l /dev/sda&lt;br /&gt;Disk /dev/sda: 36.4 GB, 36401479680 bytes&lt;br /&gt;64 heads, 32 sectors/track, 34715 cylinders&lt;br /&gt;Units = cylinders of 2048 * 512 = 1048576 bytes&lt;br /&gt;&lt;br /&gt;# fdisk -l /dev/sdb&lt;br /&gt;Disk /dev/sdb: 36.4 GB, 36401479680 bytes&lt;br /&gt;255 heads, 63 sectors/track, 4425 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The potential problem was that if we had to specify the start and end of the partition in terms of cylinders, then we would not be able to get an exact match in the size of the partitions between the new disk and the existing working half of the mirror.&lt;br /&gt;After some googling, we concluded that having to align the partition boundaries with the cylinders was a DOS legacy issue, and was not something that would cause a problem for Linux.&lt;br /&gt;So to copy the partitions from the working disk to the new disk we used the following:&lt;br /&gt;&lt;pre&gt;# sfdisk -d /dev/sdb | sfdisk --Linux /dev/sda&lt;br /&gt;Checking that no-one is using this disk right now ...&lt;br /&gt;OK&lt;br /&gt;Disk /dev/sda: 34715 cylinders, 64 heads, 32 sectors/track&lt;br /&gt;Old situation:&lt;br /&gt;Units = cylinders of 1048576 bytes, blocks of 1024 bytes, counting from 0&lt;br /&gt;&lt;br /&gt;   Device Boot Start     End   #cyls    #blocks   Id  System&lt;br /&gt;/dev/sda1          0       -       0          0    0  Empty&lt;br /&gt;/dev/sda2          0       -       0          0    0  Empty&lt;br /&gt;/dev/sda3          0       -       0          0    0  Empty&lt;br /&gt;/dev/sda4          0       -       0          0    0  Empty&lt;br /&gt;New situation:&lt;br /&gt;Units = sectors of 512 bytes, counting from 0&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End   #sectors  Id  System&lt;br /&gt;/dev/sda1   *        63    208844     208782  fd  Linux raid autodetect&lt;br /&gt;/dev/sda2        208845  16980704   16771860  fd  Linux raid autodetect&lt;br /&gt;/dev/sda3      16980705  25366634    8385930  fd  Linux raid autodetect&lt;br /&gt;/dev/sda4      25366635  71087624   45720990   5  Extended&lt;br /&gt;/dev/sda5      25366698  71087624   45720927  fd  Linux raid autodetect&lt;br /&gt;Warning: partition 1 does not end at a cylinder boundary&lt;br /&gt;Warning: partition 2 does not start at a cylinder boundary&lt;br /&gt;Warning: partition 2 does not end at a cylinder boundary&lt;br /&gt;Warning: partition 3 does not start at a cylinder boundary&lt;br /&gt;Warning: partition 3 does not end at a cylinder boundary&lt;br /&gt;Warning: partition 4 does not start at a cylinder boundary&lt;br /&gt;Warning: partition 4 does not end at a cylinder boundary&lt;br /&gt;Warning: partition 5 does not end at a cylinder boundary&lt;br /&gt;Successfully wrote the new partition table&lt;br /&gt;Re-reading the partition table ...&lt;br /&gt;# mdadm --manage /dev/md0 --add /dev/sda1&lt;br /&gt;# mdadm --manage /dev/md1 --add /dev/sda2&lt;br /&gt;# mdadm --manage /dev/md2 --add /dev/sda3&lt;br /&gt;# mdadm --manage /dev/md3 --add /dev/sda5&lt;br /&gt;# cat /proc/mdstat&lt;br /&gt;Personalities : [raid1]&lt;br /&gt;md1 : active raid1 sda2[0] sdb2[1]&lt;br /&gt;      8385856 blocks [2/2] [UU]&lt;br /&gt;&lt;br /&gt;md2 : active raid1 sda3[2] sdb3[1]&lt;br /&gt;      4192896 blocks [2/1] [_U]&lt;br /&gt;        resync=DELAYED&lt;br /&gt;md3 : active raid1 sda5[2] sdb5[1]&lt;br /&gt;      22860352 blocks [2/1] [_U]&lt;br /&gt;      [============&gt;........]  recovery = 61.8% (14148928/22860352) finish=2.1min speed=67707K/sec&lt;br /&gt;md0 : active raid1 sda1[0] sdb1[1]&lt;br /&gt;      104320 blocks [2/2] [UU]&lt;br /&gt;&lt;br /&gt;unused devices: &lt;none&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Using the sfdisk command, you can specify the unit of measure when listing the partition table. Use '-uS' for Sectors and '-uC' for Cylinders:&lt;br /&gt;&lt;pre&gt;# sfdisk -l -uS /dev/sda&lt;br /&gt;Disk /dev/sda: 34715 cylinders, 64 heads, 32 sectors/track&lt;br /&gt;Warning: extended partition does not start at a cylinder boundary.&lt;br /&gt;DOS and Linux will interpret the contents differently.&lt;br /&gt;Units = sectors of 512 bytes, counting from 0&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End   #sectors  Id  System&lt;br /&gt;/dev/sda1   *        63    208844     208782  fd  Linux raid autodetect&lt;br /&gt;/dev/sda2        208845  16980704   16771860  fd  Linux raid autodetect&lt;br /&gt;/dev/sda3      16980705  25366634    8385930  fd  Linux raid autodetect&lt;br /&gt;/dev/sda4      25366635  71087624   45720990   5  Extended&lt;br /&gt;/dev/sda5      25366698  71087624   45720927  fd  Linux raid autodetect&lt;br /&gt;&lt;br /&gt;# sfdisk -l -uS /dev/sdb&lt;br /&gt;Disk /dev/sdb: 4425 cylinders, 255 heads, 63 sectors/track&lt;br /&gt;Units = sectors of 512 bytes, counting from 0&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End   #sectors  Id  System&lt;br /&gt;/dev/sdb1   *        63    208844     208782  fd  Linux raid autodetect&lt;br /&gt;/dev/sdb2        208845  16980704   16771860  fd  Linux raid autodetect&lt;br /&gt;/dev/sdb3      16980705  25366634    8385930  fd  Linux raid autodetect&lt;br /&gt;/dev/sdb4      25366635  71087624   45720990   5  Extended&lt;br /&gt;/dev/sdb5      25366698  71087624   45720927  fd  Linux raid autodetect&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It's only when you think in terms of cylinders, that there appears to be a problem:&lt;br /&gt;&lt;pre&gt;# sfdisk -l -uC /dev/sda&lt;br /&gt;Disk /dev/sda: 34715 cylinders, 64 heads, 32 sectors/track&lt;br /&gt;Warning: extended partition does not start at a cylinder boundary.&lt;br /&gt;DOS and Linux will interpret the contents differently.&lt;br /&gt;Units = cylinders of 1048576 bytes, blocks of 1024 bytes, counting from 0&lt;br /&gt;&lt;br /&gt;   Device Boot Start     End   #cyls    #blocks   Id  System&lt;br /&gt;/dev/sda1   *      0+    101-    102-    104391   fd  Linux raid autodetect&lt;br /&gt;/dev/sda2        101+   8291-   8190-   8385930   fd  Linux raid autodetect&lt;br /&gt;/dev/sda3       8291+  12386-   4095-   4192965   fd  Linux raid autodetect&lt;br /&gt;/dev/sda4      12386+  34710-  22325-  22860495    5  Extended&lt;br /&gt;/dev/sda5      12386+  34710-  22325-  22860463+  fd  Linux raid autodetect&lt;br /&gt;&lt;br /&gt;# sfdisk -l -uC /dev/sdb&lt;br /&gt;Disk /dev/sdb: 4425 cylinders, 255 heads, 63 sectors/track&lt;br /&gt;Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0&lt;br /&gt;&lt;br /&gt;   Device Boot Start     End   #cyls    #blocks   Id  System&lt;br /&gt;/dev/sdb1   *      0+     12      13-    104391   fd  Linux raid autodetect&lt;br /&gt;/dev/sdb2         13    1056    1044    8385930   fd  Linux raid autodetect&lt;br /&gt;/dev/sdb3       1057    1578     522    4192965   fd  Linux raid autodetect&lt;br /&gt;/dev/sdb4       1579    4424    2846   22860495    5  Extended&lt;br /&gt;/dev/sdb5       1579+   4424    2846-  22860463+  fd  Linux raid autodetect&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The pluses and minuses, just mean that the numbers are not exact and are rounded up or down.&lt;br /&gt;For comparison, here is what fdisk reports:&lt;br /&gt;&lt;pre&gt;# fdisk -l /dev/sda&lt;br /&gt;Disk /dev/sda: 36.4 GB, 36401479680 bytes&lt;br /&gt;64 heads, 32 sectors/track, 34715 cylinders&lt;br /&gt;Units = cylinders of 2048 * 512 = 1048576 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/sda1   *           1         102      104391   fd  Linux raid autodetect&lt;br /&gt;Partition 1 does not end on cylinder boundary.&lt;br /&gt;/dev/sda2             102        8292     8385930   fd  Linux raid autodetect&lt;br /&gt;/dev/sda3            8292       12387     4192965   fd  Linux raid autodetect&lt;br /&gt;/dev/sda4           12387       34711    22860495    5  Extended&lt;br /&gt;/dev/sda5           12387       34711    22860463+  fd  Linux raid autodetect&lt;br /&gt;&lt;br /&gt;# fdisk -l /dev/sdb&lt;br /&gt;Disk /dev/sdb: 36.4 GB, 36401479680 bytes&lt;br /&gt;255 heads, 63 sectors/track, 4425 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/sdb1   *           1          13      104391   fd  Linux raid autodetect&lt;br /&gt;/dev/sdb2              14        1057     8385930   fd  Linux raid autodetect&lt;br /&gt;/dev/sdb3            1058        1579     4192965   fd  Linux raid autodetect&lt;br /&gt;/dev/sdb4            1580        4425    22860495    5  Extended&lt;br /&gt;/dev/sdb5            1580        4425    22860463+  fd  Linux raid autodetect&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-4470366409771587104?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/4470366409771587104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=4470366409771587104' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/4470366409771587104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/4470366409771587104'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/08/fdisk-sfdisk-mdadm-and-scsi-hard-drive.html' title='fdisk, sfdisk, mdadm and SCSI hard drive geometry'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-9104102505028212462</id><published>2007-08-08T17:26:00.001+01:00</published><updated>2007-08-08T18:23:40.257+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smartmontools'/><title type='text'>Smartmontools and fixing Unreadable Disk Sectors</title><content type='html'>Smartmontools was showing some problems on the disk.&lt;br /&gt;At least two bad LBAs:&lt;br /&gt;&lt;pre&gt;# smartctl -l selftest /dev/hda&lt;br /&gt;smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen&lt;br /&gt;Home page is http://smartmontools.sourceforge.net/&lt;br /&gt;&lt;br /&gt;=== START OF READ SMART DATA SECTION ===&lt;br /&gt;SMART Self-test log structure revision number 1&lt;br /&gt;Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error&lt;br /&gt;# 1  Extended offline    Completed: read failure       20%      1596         44724966&lt;br /&gt;# 2  Extended offline    Completed: read failure       40%      1519         12622427&lt;br /&gt;&lt;br /&gt;# smartctl -A /dev/hda | egrep 'Reallocated|Pending|Uncorrectable'&lt;br /&gt;5 Reallocated_Sector_Ct   0x0033   253   253   063    Pre-fail  Always       -       2&lt;br /&gt;196 Reallocated_Event_Count 0x0008   252   252   000    Old_age   Offline      -       1&lt;br /&gt;197 Current_Pending_Sector  0x0008   253   253   000    Old_age   Offline      -       2&lt;br /&gt;198 Offline_Uncorrectable   0x0008   252   252   000    Old_age   Offline      -       1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I found a document:&lt;a href="http://smartmontools.sourceforge.net/BadBlockHowTo.txt"&gt;&lt;br /&gt;"SHOWS HOW TO IDENTIFY THE FILE ASSOCIATED&lt;br /&gt;WITH AN UNREADABLE DISK SECTOR, AND HOW TO&lt;br /&gt;FORCE THAT SECTOR TO REALLOCATE."&lt;/a&gt;&lt;br /&gt;and followed the procedure.&lt;br /&gt;&lt;br /&gt;Note the LBA values are given as decimal values. The document seems to refer&lt;br /&gt;to an older version of smarctl that gives the LBA as a hexadecimal number.&lt;br /&gt;&lt;br /&gt;Lets look at the partition sizes to see where this LBA drops in.&lt;br /&gt;&lt;pre&gt;# fdisk -lu /dev/hda&lt;br /&gt;&lt;br /&gt;Disk /dev/hda: 255 heads, 63 sectors, 3738 cylinders&lt;br /&gt;Units = sectors of 1 * 512 bytes&lt;br /&gt;&lt;br /&gt;Device Boot    Start       End    Blocks   Id  System&lt;br /&gt;/dev/hda1   *        63    160649     80293+  83  Linux&lt;br /&gt;/dev/hda2        160650   1204874    522112+  82  Linux swap&lt;br /&gt;/dev/hda3       1204875  53737424  26266275   83  Linux&lt;br /&gt;/dev/hda4      53737425  60050969   3156772+   f  Win95 Ext'd (LBA)&lt;br /&gt;/dev/hda5      53737488  55841939   1052226   83  Linux&lt;br /&gt;/dev/hda6      55842003  57946454   1052226   83  Linux&lt;br /&gt;/dev/hda7      57946518  60050969   1052226   83  Linux&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, so the problem is in '/dev/hda3 '.&lt;br /&gt;What's mounted there? As the partitions are labeled, we need to use:&lt;br /&gt;&lt;pre&gt;# grep `e2label /dev/hda3` /etc/fstab&lt;br /&gt;LABEL=/var              /var                    ext3    defaults        1 2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, so the problem is in '/var'.&lt;br /&gt;&lt;pre&gt;# tune2fs -l /dev/hda3 | grep Block&lt;br /&gt;Block count:              6566568&lt;br /&gt;Block size:               4096&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Let's do the maths:&lt;br /&gt;LBA 12622427 - 1204875 and multiply by (512/4096) equals 1427194.&lt;br /&gt;LBA 44724966 - 1204875 and multiply by (512/4096) equals 5440011.375&lt;br /&gt;&lt;br /&gt;Ok, now let's use 'debugfs':&lt;br /&gt;&lt;pre&gt;# debugfs&lt;br /&gt;debugfs 1.27 (8-Mar-2002)&lt;br /&gt;debugfs:  open /dev/hda3&lt;br /&gt;debugfs:  icheck 1427194&lt;br /&gt;Block   Inode number&lt;br /&gt;1427194 526482&lt;br /&gt;debugfs:  ncheck 526482&lt;br /&gt;Inode   Pathname&lt;br /&gt;526482  /log/ntp/peers.20070717&lt;br /&gt;debugfs:  icheck 5440011&lt;br /&gt;icheck: Can't read next inode while doing inode scan&lt;br /&gt;debugfs:  quit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So that means LBA 12622427 is in file "/var/log/ntp/peers.20070717".&lt;br /&gt;And it looks like LBA 44724966 is in currently unused space on the disk.&lt;br /&gt;&lt;br /&gt;As this file is not critical, I will just overwrite part of it&lt;br /&gt;to force it to be reallocated:&lt;br /&gt;&lt;pre&gt;# dd if=/dev/zero of=/dev/hda3 bs=4096 count=1 seek=1427194&lt;br /&gt;1+0 records in&lt;br /&gt;1+0 records out&lt;br /&gt;# sync&lt;br /&gt;# smartctl -A /dev/hda | egrep 'Reallocated|Pending|Uncorrectable'&lt;br /&gt;5 Reallocated_Sector_Ct   0x0033   253   253   063    Pre-fail  Always       -       1&lt;br /&gt;196 Reallocated_Event_Count 0x0008   252   252   000    Old_age   Offline      -       1&lt;br /&gt;197 Current_Pending_Sector  0x0008   253   253   000    Old_age   Offline      -       1&lt;br /&gt;198 Offline_Uncorrectable   0x0008   252   252   000    Old_age   Offline      -       1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, that seems to have made that error go away for the time being.&lt;br /&gt;&lt;br /&gt;Then while googling I found this perl script to help with&lt;br /&gt;automation of badblocks on Linux:&lt;br /&gt;&lt;a href="http://isg.ee.ethz.ch/tools/isgtc/index.cgi?page=module_source;module=smartfixdisk;source=smartfixdisk"&gt;&lt;br /&gt;"smartfixdisk - assistant that helps to repair bad LBAs detected by Smartmontools"&lt;/a&gt;&lt;br /&gt;developed by the "IT-Support-Group" (ISG.EE),&lt;br /&gt;which is a service organisation of the&lt;br /&gt;"Department of Information Technology and Electrical Engineering" (D-ITET)&lt;br /&gt;of the "Swiss Federal Institute of Technology", Zurich.&lt;br /&gt;&lt;br /&gt;I wanted to use it on a old RedHat 9 server.&lt;br /&gt;The script immediately fell over on this line:&lt;br /&gt;&lt;pre&gt;open(DISKEND,"&amp;lt;/sys/block/$diskname/size") or die "$!";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Not too surprising, as the '/sys' does not exist on my old server!&lt;br /&gt;It seems to be a feature of newer kernels.&lt;br /&gt;On a Centos-5 box I tried this:&lt;br /&gt;&lt;pre&gt;# cat /proc/ide/hda/capacity&lt;br /&gt;78165360&lt;br /&gt;# cat /sys/block/hda/size&lt;br /&gt;78165360&lt;br /&gt;# cat /proc/ide/hda/geometry&lt;br /&gt;physical     16383/16/63&lt;br /&gt;logical      65535/16/63&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So DISKEND seems to be related to the number of sectors on the hard drive.&lt;br /&gt;The '/proc' version was available on the old Redhat 9 server,&lt;br /&gt;so I change the perl code line like this:&lt;br /&gt;&lt;pre&gt;open(DISKEND,"&amp;lt;/proc/ide/$diskname/capacity") or die "$!";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;..and it was happy.&lt;br /&gt;To figure out what the script is doing, it's useful to add in a few&lt;br /&gt;'print' commands into the script, or just uncomment the ones that&lt;br /&gt;already in place. Here's what the script told me on this server:&lt;br /&gt;&lt;pre&gt;# ./smartfixdisk.pl --noaction /dev/hda&lt;br /&gt;Block size = 4096, factor = 0.125&lt;br /&gt;Searching for inode... this may take a while...&lt;br /&gt;&lt;br /&gt;LBA 12622427&lt;br /&gt;    Partition and partition type: /dev/hda3 Linux_Ext2&lt;br /&gt;    Status: used&lt;br /&gt;    Comment: EXT2/3: File found at inode 526482: /log/ntp/peers.20070717&lt;br /&gt;&lt;br /&gt;LBA 44724966&lt;br /&gt;    Partition and partition type: /dev/hda3 Linux_Ext2&lt;br /&gt;    Status: free&lt;br /&gt;    Comment: block not used in filesystem&lt;br /&gt;    dd if=/dev/zero of=/dev/hda seek=5590620 bs=4096 count=1 conv=sync&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Looks good.&lt;br /&gt;Ok, so let's finish off:&lt;br /&gt;&lt;pre&gt;# dd if=/dev/zero of=/dev/hda seek=5590620 bs=4096 count=1 conv=sync&lt;br /&gt;1+0 records in&lt;br /&gt;1+0 records out&lt;br /&gt;# sync&lt;br /&gt;# smartctl -A /dev/hda | egrep 'Reallocated|Pending|Uncorrectable'&lt;br /&gt;5 Reallocated_Sector_Ct   0x0033   253   253   063    Pre-fail  Always       -       1&lt;br /&gt;196 Reallocated_Event_Count 0x0008   252   252   000    Old_age   Offline      -       1&lt;br /&gt;197 Current_Pending_Sector  0x0008   253   253   000    Old_age   Offline      -       0&lt;br /&gt;198 Offline_Uncorrectable   0x0008   252   252   000    Old_age   Offline      -       1&lt;br /&gt;&lt;br /&gt;# smartctl -t long /dev/hda&lt;br /&gt;&lt;br /&gt;=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===&lt;br /&gt;Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".&lt;br /&gt;Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.&lt;br /&gt;Testing has begun.&lt;br /&gt;Please wait 17 minutes for test to complete.&lt;br /&gt;Test will complete after Wed Aug  8 16:38:15 2007&lt;br /&gt;&lt;br /&gt;Use smartctl -X to abort test.&lt;br /&gt;# smartctl -l selftest /dev/hda&lt;br /&gt;Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error&lt;br /&gt;# 1  Extended offline    Completed without error       00%      1599         -&lt;br /&gt;# 2  Extended offline    Completed: read failure       20%      1596         44724966&lt;br /&gt;# 3  Extended offline    Completed: read failure       40%      1519         12622427&lt;br /&gt;&lt;br /&gt;# smartctl -A /dev/hda | egrep 'Reallocated|Pending|Uncorrectable'&lt;br /&gt;5 Reallocated_Sector_Ct   0x0033   253   253   063    Pre-fail  Always       -       1&lt;br /&gt;196 Reallocated_Event_Count 0x0008   252   252   000    Old_age   Offline      -       1&lt;br /&gt;197 Current_Pending_Sector  0x0008   253   253   000    Old_age   Offline      -       0&lt;br /&gt;198 Offline_Uncorrectable   0x0008   253   252   000    Old_age   Offline      -       0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, that looks to have cleared the errors for the time being.&lt;br /&gt;But I'm going to keep a careful eye on that disk, using smartd and logwatch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-9104102505028212462?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/9104102505028212462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=9104102505028212462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/9104102505028212462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/9104102505028212462'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/08/smartmontools-and-fixing-unreadable.html' title='Smartmontools and fixing Unreadable Disk Sectors'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-3668020162533361967</id><published>2007-03-25T00:30:00.000Z</published><updated>2007-03-25T00:40:18.917Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Using 'prtpci' to list PCI devices</title><content type='html'>On Solaris, if you want to check the details of the hardware installed&lt;br /&gt;in your PC, you can use the command 'prtconf -pv'.  However, the output is&lt;br /&gt;very long, and gives too great a level of detail.  Sun's Dan Mick has written&lt;br /&gt;a perl program, called 'prtpci' which gives a more useful summary.&lt;br /&gt;Here is how I installed the program:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;bash-3.00# wget ftp://playground.sun.com/pub/dmick/prtpci.tar.Z&lt;br /&gt;--00:08:09--  ftp://playground.sun.com/pub/dmick/prtpci.tar.Z&lt;br /&gt;           =&gt; `prtpci.tar.Z'&lt;br /&gt;Resolving playground.sun.com... 192.9.5.5&lt;br /&gt;Connecting to playground.sun.com|192.9.5.5|:21... connected.&lt;br /&gt;Logging in as anonymous ... Logged in!&lt;br /&gt;==&gt; SYST ... done.    ==&gt; PWD ... done.&lt;br /&gt;==&gt; TYPE I ... done.  ==&gt; CWD /pub/dmick ... done.&lt;br /&gt;==&gt; PASV ... done.    ==&gt; RETR prtpci.tar.Z ... done.&lt;br /&gt;Length: 163,050 (159K) (unauthoritative)&lt;br /&gt;&lt;br /&gt;100%[====================================&gt;] 163,050       57.69K/s&lt;br /&gt;&lt;br /&gt;00:08:16 (57.54 KB/s) - `prtpci.tar.Z' saved [163050]&lt;br /&gt;&lt;br /&gt;bash-3.00# gunzip &lt; prtpci.tar.Z | tar xvf -&lt;br /&gt;x prtpci, 5954 bytes, 12 tape blocks&lt;br /&gt;x pciids/pci.ids, 349313 bytes, 683 tape blocks&lt;br /&gt;x pciids/class.ids, 3445 bytes, 7 tape blocks&lt;br /&gt;x pciids/getnew.pci.ids, 81 bytes, 1 tape blocks&lt;br /&gt;&lt;br /&gt;bash-3.00# chown -R root:root prtpci pciids/&lt;br /&gt;&lt;br /&gt;bash-3.00# ls -l&lt;br /&gt;total 350&lt;br /&gt;drwxr-xr-x   2 root     root         512 Mar 25 00:10 pciids&lt;br /&gt;-r-xr-xr-x   1 root     root        5954 Jul 12  2005 prtpci&lt;br /&gt;-rw-r--r--   1 root     root      163050 Mar 25 00:08 prtpci.tar.Z&lt;br /&gt;&lt;br /&gt;bash-3.00# ls -l pciids/&lt;br /&gt;total 714&lt;br /&gt;-rw-rw-r--   1 root     root        3445 Mar 24  2002 class.ids&lt;br /&gt;-rwxrwxr-x   1 root     root          81 Mar 18  2005 getnew.pci.ids&lt;br /&gt;-rw-rw-r--   1 root     root      349313 May 27  2005 pci.ids&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And here is the (edited) output of what it shows&lt;br /&gt;on my Dell Precision 380:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;bash-3.00# ./prtpci&lt;br /&gt;0/0x0/0 8086,2774 (1028,1a8) rev 0x0&lt;br /&gt;Intel Corporation 955X Memory Controller Hub&lt;br /&gt;class 6/0/0: Bridge/Host bridge&lt;br /&gt;&lt;br /&gt;0/0x1/0 8086,2775 0  rev 0x0&lt;br /&gt;Intel Corporation 955X PCI Express Graphics Port&lt;br /&gt;class 6/4/0: Bridge/PCI bridge&lt;br /&gt;&lt;br /&gt;1/0x0/0 1002,71d2 (1002,3b02) rev 0x0&lt;br /&gt;ATI Technologies Inc&lt;br /&gt;class 3/0/0: Display controller/VGA compatible controller&lt;br /&gt;BAR[0]: prefetchable 64-bit memory 0xe0000000 0x10000000&lt;br /&gt;BAR[2]: 64-bit memory 0xfe9e0000 0x10000&lt;br /&gt;BAR[4]: I/O 0xdc00 0x100&lt;br /&gt;legacy reg #3: aliased I/O 0x3b0 0xc&lt;br /&gt;legacy reg #4: aliased I/O 0x3c0 0x20&lt;br /&gt;legacy reg #5: 32-bit memory 0xa0000 0x20000&lt;br /&gt;&lt;br /&gt;1/0x0/1 1002,71f2 (1002,3b03) rev 0x0&lt;br /&gt;ATI Technologies Inc&lt;br /&gt;class 3/80/0: Display controller/Display controller&lt;br /&gt;BAR[0]: 64-bit memory 0xfe9f0000 0x10000&lt;br /&gt;&lt;br /&gt;0/0x1c/0 8086,27d0 1  rev 0x0&lt;br /&gt;Intel Corporation 82801G (ICH7 Family) PCI Express Port 1&lt;br /&gt;class 6/4/0: Bridge/PCI bridge&lt;br /&gt;&lt;br /&gt;4/0x0/0 14e4,1677 (1028,1a8) rev 0x1&lt;br /&gt;Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express&lt;br /&gt;class 2/0/0: Network controller/Ethernet controller&lt;br /&gt;BAR[0]: 64-bit memory 0xfe7f0000 0x10000&lt;br /&gt;&lt;br /&gt;0/0x1f/0 8086,27b8 1  rev 0x0&lt;br /&gt;Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge&lt;br /&gt;class 6/1/0: Bridge/ISA bridge&lt;br /&gt;&lt;br /&gt;0/0x1f/1 8086,27df (1028,1a8) rev 0x1&lt;br /&gt;Intel Corporation 82801G (ICH7 Family) IDE Controller&lt;br /&gt;class 1/1/8a: Mass storage controller/IDE interface&lt;br /&gt;BAR[0]: I/O 0x1f0 0x8&lt;br /&gt;BAR[1]: I/O 0x3f6 0x1&lt;br /&gt;BAR[2]: I/O 0x170 0x8&lt;br /&gt;BAR[3]: I/O 0x376 0x1&lt;br /&gt;BAR[4]: I/O 0xffa0 0x10&lt;br /&gt;&lt;br /&gt;0/0x1f/2 8086,27c1 (1028,1a8) rev 0x1&lt;br /&gt;Intel Corporation 82801GR/GH (ICH7 Family) Serial ATA Storage Controllers cc=AHCI&lt;br /&gt;class 1/6/1: Mass storage controller/&lt;br /&gt;BAR[0]: I/O 0xfe00 0x8&lt;br /&gt;BAR[1]: I/O 0xfe10 0x4&lt;br /&gt;BAR[2]: I/O 0xfe20 0x8&lt;br /&gt;BAR[3]: I/O 0xfe30 0x4&lt;br /&gt;BAR[4]: I/O 0xfea0 0x10&lt;br /&gt;BAR[5]: 32-bit memory 0xfebfbc00 0x400&lt;br /&gt;&lt;br /&gt;0/0x1f/3 8086,27da (1028,1a8) rev 0x1&lt;br /&gt;Intel Corporation 82801G (ICH7 Family) SMBus Controller&lt;br /&gt;class c/5/0: Serial bus controller/SMBus&lt;br /&gt;BAR[4]: I/O 0xece0 0x20&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The above clearly shows the ATI graphics card, the Broadcom Gigabit Ethernet card, and the ICH7 SATA card (using AHCI).&lt;br /&gt;&lt;br /&gt;Here's the link to the &lt;a href="http://blogs.sun.com/dmick/entry/prtpci_digest_and_display_prtconf"&gt;post&lt;/a&gt; on Dan Mick's blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-3668020162533361967?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/3668020162533361967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=3668020162533361967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/3668020162533361967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/3668020162533361967'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/03/using-prtpci-to-list-pci-devices.html' title='Using &apos;prtpci&apos; to list PCI devices'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-6331570856551411671</id><published>2007-03-24T23:58:00.000Z</published><updated>2007-08-16T15:39:55.611+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnu'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Using wget, gcc &amp; gmake on Solaris, by fixing the PATH</title><content type='html'>Solaris has a number of useful commands, like gcc and wget, hidden away in&lt;br /&gt;directory '/usr/sfw/bin'. But, by default, for user root, Solaris does not add this&lt;br /&gt;directory to the path. So assuming you are using Bash as your shell,&lt;br /&gt;try the following:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;bash-3.00# echo $PATH&lt;br /&gt;/usr/sbin:/usr/bin&lt;br /&gt;bash-3.00# export PATH=$PATH:/usr/sfw/bin&lt;br /&gt;bash-3.00# echo $PATH&lt;br /&gt;/usr/sbin:/usr/bin:/usr/sfw/bin&lt;br /&gt;bash-3.00# wget -V&lt;br /&gt;GNU Wget 1.10.2&lt;br /&gt;bash-3.00# gcc -v&lt;br /&gt;gcc version 3.4.3 (csl-sol210-3_4-20050802)&lt;br /&gt;bash-3.00# gmake -v&lt;br /&gt;GNU Make 3.80&lt;br /&gt;bash-3.00# uname -a&lt;br /&gt;SunOS solaris 5.11 snv_57 i86pc i386 i86pc&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-6331570856551411671?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/6331570856551411671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=6331570856551411671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/6331570856551411671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/6331570856551411671'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/03/using-wget-gcc-gmake-on-solaris-by.html' title='Using wget, gcc &amp; gmake on Solaris, by fixing the PATH'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-5408176546317773857</id><published>2007-02-23T18:05:00.000Z</published><updated>2007-02-23T18:26:21.115Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDI'/><title type='text'>How to waste half a day with EDI</title><content type='html'>Yes, thats EDI or Electronic Data Interchange.&lt;br /&gt;&lt;br /&gt;The problem for me, is that one of our big customers wants to stop sending us Odette DELINS messages, and instead start using Edifact DELFOR messages. It's a problem for me, because I need to work out how to do it!&lt;br /&gt;&lt;br /&gt;So let's start by seeing if we can translate a simple DELFOR file into the in-house format to feed into our ERP system.  Let's created the test file, by copying &amp; pasting the sample provided in the pdf of the specification.  Simple... No...it does not work.  Why? Every thing looks ok!&lt;br /&gt;&lt;br /&gt;After hours of double checking &amp;amp; going around in circles. Finally the answer.&lt;br /&gt;&lt;br /&gt;In an EDI file, each line is terminated with a ' character - thats ASCII code 0x27. But I finally realised that the lines in my file were terminated with character code 0x92, which looks very similar in the character set I was using.&lt;br /&gt;&lt;br /&gt;When you use the correct terminating character, it all works a lot better!&lt;br /&gt;So todays lesson is - be careful when you copy &amp;amp; paste text from a pdf!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-5408176546317773857?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/5408176546317773857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=5408176546317773857' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/5408176546317773857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/5408176546317773857'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/02/how-to-waste-half-day-with-edi.html' title='How to waste half a day with EDI'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-6851105381380808753</id><published>2007-02-21T00:24:00.000Z</published><updated>2007-08-16T15:42:18.909+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iscsi'/><category scheme='http://www.blogger.com/atom/ns#' term='dtrace'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Checking Solaris iScsi Performance with Dtrace</title><content type='html'>I've just discovered David Weibel's &lt;a href="http://www.weibeltech.com/"&gt;Blog&lt;/a&gt; and he has a couple of interesting posts regarding using dtrace(1M) to check performance issues with iScsi on Solaris.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://weibeltech.com/?p=83"&gt;iSCSI Kernel Visibilty&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://weibeltech.com/?p=82"&gt;iSCSI device reporting lots of iSCSI sessions logging in and out&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And David show a way to disable MPxIO for the Solaris iSCSI initiator &lt;a href="http://weibeltech.com/?p=85"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;David worked on the Solaris iScsi initiator code when he was at Sun Microsystems, Inc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-6851105381380808753?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/6851105381380808753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=6851105381380808753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/6851105381380808753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/6851105381380808753'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/02/checking-solaris-iscsi-performance-with.html' title='Checking Solaris iScsi Performance with Dtrace'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-4107368365212271279</id><published>2007-01-17T00:43:00.000Z</published><updated>2007-08-16T15:41:53.649+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netbsd'/><category scheme='http://www.blogger.com/atom/ns#' term='iscsi'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Using the NetBSD iScsi Target code on Solaris</title><content type='html'>The NetBSD iScsi target will, quite happily, compile and run on Solaris. The code was developed by  Alistair Crooks, and is based on code released by Intel, under the BSD licence.&lt;br /&gt;&lt;br /&gt;To try it out, I used the &lt;a href="http://www.genunix.org/distributions/belenix_site/"&gt;Belenix&lt;/a&gt; LiveCD distribution of OpenSolaris.&lt;br /&gt;&lt;pre&gt;(root)# uname -a&lt;br /&gt;SunOS belenix 5.11 BeleniX0.4.3 i86pc i386 i86pc&lt;br /&gt;(root)# gcc -v&lt;br /&gt;Reading specs from /usr/foss/lib/gcc/i386-pc-solaris2.10/3.4.3/specs&lt;br /&gt;Thread model: posix&lt;br /&gt;gcc version 3.4.3 (csl-sol210-3_4-branch+sol_rpath)&lt;br /&gt;(root)# cd tmp&lt;br /&gt;(root)# curl -O http://www.alistaircrooks.co.uk/src/netbsd-iscsi-20060526.tar.gz&lt;br /&gt;(root)# ls -l netbsd-iscsi-20060526.tar.gz&lt;br /&gt;-rw-------   1 root     root      239964 May 27 22:21 netbsd-iscsi-20060526.tar.gz&lt;br /&gt;(root)# gunzip &lt; netbsd-iscsi-20060526.tar.gz | tar xvf -&lt;br /&gt;(root)# cd iscsi&lt;br /&gt;(root)# cd src&lt;br /&gt;(root)# ./configure&lt;br /&gt;(root)# make&lt;br /&gt;(root)# cd ../bin&lt;br /&gt;(root)# ls -l&lt;br /&gt;-rwx------   1 root     root      226580 May 27 22:24 iscsi-harness&lt;br /&gt; -rwx------   1 root     root      219028 May 27 22:24 iscsi-target&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I just wanted to use the iScsi target to confirm if the Microsoft iScsi initiator would work ok with it, and take some Ethereal traces of the initial login sequence. So I just used the following simple configuration file, which exports out a 100 mega byte file.&lt;br /&gt;&lt;pre&gt;(root)# cat /etc/iscsi/targets&lt;br /&gt;extent0         /tmp/iscsi-target0      0       100MB&lt;br /&gt;&lt;br /&gt;target0         rw      extent0         0.0.0.0/0&lt;br /&gt;(root)# ./iscsi-target &amp;amp;&lt;br /&gt;(root)# ls -l /tmp/iscsi-target0&lt;br /&gt;-rw-------   1 root     root     104857601 May 27 23:17 /tmp/iscsi-target0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I tried the target with v2.03 of the Microdoft iScsi initiator, and and I can report that every thing I tried worked ok.&lt;br /&gt;&lt;br /&gt;You can browse the source code of the iScsi target at the &lt;a href="http://cvsweb.netbsd.org/bsdweb.cgi/src/dist/iscsi/doc/"&gt;NetBSD CVS&lt;/a&gt; server. To get the latest version of the code, it may be best to get it from the CVS server.&lt;br /&gt;&lt;br /&gt;I've just noted that Alistair make some further changes to the code at the start of 2007, which are noted at this &lt;a href="http://digest.coris.org.uk/src/20070113/digest.html"&gt;digest&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-4107368365212271279?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/4107368365212271279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=4107368365212271279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/4107368365212271279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/4107368365212271279'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/01/using-netbsd-iscsi-target-code-on.html' title='Using the NetBSD iScsi Target code on Solaris'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-6955793637969247180</id><published>2007-01-14T20:58:00.000Z</published><updated>2007-08-16T15:41:33.777+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='iscsi'/><title type='text'>Linux iScsi Target and the Inquiry LUN Response</title><content type='html'>Ok, last time we completed compiling and installing the Linux iScsi target. Now we need to configure it and start it. All I wanted to do, at this stage, was a simple test. So I just did the minimal amount of configuration.  I was going to be running the target on Centos-4, running under VmWare, so it was easy to add a second virtual hard drive to the environment, in this case '/dev/sdb', to export out from the target.&lt;br /&gt;&lt;pre&gt;# cat /etc/ietd.conf&lt;br /&gt;#IncomingUser nwsmith secretsecret&lt;br /&gt;Target iqn.2007-01.net.nwsmith:test01&lt;br /&gt;Lun 0 /dev/sdb fileio&lt;br /&gt;Alias iscsitest01&lt;br /&gt;&lt;br /&gt;# service iscsi-target start&lt;br /&gt;Starting iSCSI target service:    [  OK  ]&lt;br /&gt;&lt;br /&gt;# netstat -ntlp | grep 3260&lt;br /&gt;tcp  0  0  0.0.0.0:3260  0.0.0.0:*  LISTEN 3160/ietd&lt;br /&gt;&lt;br /&gt;# tail /var/log/messages&lt;br /&gt;Jan 14 15:59:02 localhost kernel: iSCSI Enterprise Target Software - version 0.4.5&lt;br /&gt;Jan 14 15:59:02 localhost kernel: iotype_init(91) register fileio&lt;br /&gt;Jan 14 15:59:03 localhost kernel: target_param(109) d 1 8192 262144 65536 2 20 8 0&lt;br /&gt;Jan 14 15:59:03 localhost iscsi-target: ietd startup succeeded&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The Linux iScsi target seems to work fine with the Microsoft iScsi initiator (v2.03).  &lt;br /&gt;&lt;br /&gt;Ok, now we have the target running, one of the thing I wanted to look at was how the Linux iScsi target handled the initial login and connection from the Microsoft initiator.  I was looking for how it handles the "Inquiry LUN" packet.  I used Ethereal to capture and analyse the packets - filter on port 3260.&lt;br /&gt;&lt;br /&gt;I had a look at the source code, and found what I was looking for in file "target_disk.c" and in function:&lt;br /&gt;&lt;pre&gt;static int build_inquiry_response(struct iscsi_cmnd *cmnd)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;By editing the values in this function, you can adjust the following fields in the response packet:&lt;br /&gt;&lt;br /&gt;Version, Flags, Vendor Id:, Product Id:, Product Revision Level:&lt;br /&gt;&lt;br /&gt;I tried changing some of these fields in the code, recompiling, restarting the target, and then used Ethereal to check that the response (from the target) to the (initiators) 'Inquiry' LUN packet changed as expected. And it did what I expected. (To change the Version returned, edit the line "data[2] = 3;").&lt;br /&gt;&lt;br /&gt;The Version field indicates which version of SCSI is supported by the target.  You can check which values are valid by reading the specification. The specification is called "SCSI Primary Commands - 3" or SPC-3 and you can download it from &lt;a href="http://www.t10.org/scsi-3.htm"&gt;www.t10.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In the case of the version field, the valid values are shown in table 84:&lt;br /&gt;&lt;pre&gt;0x00 - The device does not claim conformance to any standard.&lt;br /&gt;0x02 - Obsolete.&lt;br /&gt;0x03 - The device complies to ANSI INCITS 301-1997 (SPC).&lt;br /&gt;0x04 - The device complies to ANSI INCITS 351-2001 (SPC-2).&lt;br /&gt;0x05 - The device complies to T10/1416-D (SPC-3).&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, I think that's enough detail for this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-6955793637969247180?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/6955793637969247180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=6955793637969247180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/6955793637969247180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/6955793637969247180'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/01/linux-iscsi-target-and-inquiry-lun.html' title='Linux iScsi Target and the Inquiry LUN Response'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-8668780283362050304</id><published>2007-01-13T17:07:00.000Z</published><updated>2007-08-16T15:41:05.376+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='iscsi'/><title type='text'>Centos 4 and the Linux iScsi Target</title><content type='html'>I wanted to do some tests with the Microsoft iScsi initiator and the Linux iScsi target, but first I had to install and configure the target.   I had Centos 4.4 (a RHEL4 Linux clone) setup in VmWare, so i thought that using that would be the easy way to do the test.&lt;br /&gt;&lt;br /&gt;I had read in PcPro magazine, last year, issue 137 (March 2006) page 197, that the Linux iScsi target would compile &amp;amp; install on Centos-4, but they did not say exactly which version they used.&lt;br /&gt;&lt;br /&gt;Ok, so I download the latest version "&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=108475"&gt;iscsitarget-0.4.14.tar.gz&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;I knew there was a potential problem, as the README file said it needed kernel version of 2.6.14 or newer, and the CONFIG_CRYPTO_CRC32C option had to be enabled.  Centos 4.4 uses kernel 2.6.9, but with many additional patches from latter kernels, and the PCpro people said it would be ok.&lt;br /&gt;&lt;br /&gt;Ok, so lets try it:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# cat /etc/redhat-release&lt;br /&gt;CentOS release 4.4 (Final)&lt;br /&gt;# uname -a&lt;br /&gt;Linux localhost.localdomain 2.6.9-42.0.3.EL #1 Fri Oct 6 05:59:54 CDT 2006 i686 i686 i386 GNU/Linux&lt;br /&gt;# cat /usr/src/kernels/2.6.9-42.0.3.EL-i686/crypto/Kconfig | grep -A 6 CRC&lt;br /&gt;config CRYPTO_CRC32C&lt;br /&gt;       tristate "CRC32c CRC algorithm"&lt;br /&gt;       depends on CRYPTO&lt;br /&gt;       select LIBCRC32C&lt;br /&gt;       help&lt;br /&gt;         Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used&lt;br /&gt;         by iSCSI for header and data digests and by others.&lt;br /&gt;         See Castagnoli93.  This implementation uses lib/libcrc32c.&lt;br /&gt;         Module will be crc32c.&lt;br /&gt;&lt;br /&gt;# cd /home&lt;br /&gt;# tar xfz iscsitarget-0.4.14.tar.gz&lt;br /&gt;# chown -R root:root iscsitarget-0.4.14&lt;br /&gt;# ll&lt;br /&gt;drwxr-xr-x  7 root root  4096 Oct 19 10:48 iscsitarget-0.4.14&lt;br /&gt;-rw-r--r--  1 root root 92608 Mar 14  2006 iscsitarget-0.4.14.tar.gz&lt;br /&gt;# cd iscsitarget-0.4.14&lt;br /&gt;# export KERNELSRC=/usr/src/kernels/2.6.9-42.0.3.EL-i686/&lt;br /&gt;# make&lt;br /&gt;make -C usr&lt;br /&gt;make[1]: Entering directory `/home/iscsitarget-0.4.14/usr'&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o ietd.o ietd.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o iscsid.o iscsid.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o conn.o conn.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o session.o session.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o target.o target.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o message.o message.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o ctldev.o ctldev.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o log.o log.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o chap.o chap.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o event.o event.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o param.o param.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o plain.o plain.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o isns.o isns.c&lt;br /&gt;cc ietd.o iscsid.o conn.o session.o target.o message.o ctldev.o log.o chap.o event.o param.o plain.o isns.o -o ietd -lcrypto&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o ietadm.o ietadm.c&lt;br /&gt;cc ietadm.o param.o -o ietadm&lt;br /&gt;make[1]: Leaving directory `/home/iscsitarget-0.4.14/usr'&lt;br /&gt;make -C /lib/modules/2.6.9-42.0.3.EL/build SUBDIRS=/home/iscsitarget-0.4.14/kernel modules&lt;br /&gt;make[1]: Entering directory `/usr/src/kernels/2.6.9-42.0.3.EL-i686'&lt;br /&gt; CC [M]  /home/iscsitarget-0.4.14/kernel/tio.o&lt;br /&gt; CC [M]  /home/iscsitarget-0.4.14/kernel/iscsi.o&lt;br /&gt; CC [M]  /home/iscsitarget-0.4.14/kernel/nthread.o&lt;br /&gt; CC [M]  /home/iscsitarget-0.4.14/kernel/wthread.o&lt;br /&gt; CC [M]  /home/iscsitarget-0.4.14/kernel/config.o&lt;br /&gt;/home/iscsitarget-0.4.14/kernel/config.c:312: error: unknown field `unlocked_ioctl' specified in initializer&lt;br /&gt;/home/iscsitarget-0.4.14/kernel/config.c:312: warning: initialization from incompatible pointer type&lt;br /&gt;/home/iscsitarget-0.4.14/kernel/config.c:313: error: unknown field `compat_ioctl' specified in initializer&lt;br /&gt;/home/iscsitarget-0.4.14/kernel/config.c:313: warning: initialization from incompatible pointer type&lt;br /&gt;make[2]: *** [/home/iscsitarget-0.4.14/kernel/config.o] Error 1&lt;br /&gt;make[1]: *** [_module_/home/iscsitarget-0.4.14/kernel] Error 2&lt;br /&gt;make[1]: Leaving directory `/usr/src/kernels/2.6.9-42.0.3.EL-i686'&lt;br /&gt;make: *** [mods] Error 2&lt;br /&gt;&lt;br /&gt;# cat /home/iscsitarget-0.4.14/kernel/config.c | grep -n ioctl&lt;br /&gt;219:static long ioctl(struct file *file, unsigned int cmd, unsigned long arg)&lt;br /&gt;312:    .unlocked_ioctl = ioctl,&lt;br /&gt;313:    .compat_ioctl   = ioctl,&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Oops! It failed to compile.&lt;br /&gt;Ok, let's google around and see who else has this problem...&lt;br /&gt;&lt;br /&gt;It seems other people are getting the same sort of problem with the target versions 4.13 and 4.12 and the older Centos kernel 2.6.9-22.EL&lt;br /&gt;&lt;br /&gt;I found this &lt;a href="http://www.umiacs.umd.edu/~toaster/iscsi.html"&gt;link&lt;/a&gt;, where you can download a patch for the target version 0.4.12, which should allow it to compile on kernel 2.6.9, but I did not try it, as it's a "quick hack - Use at your own risk". Maybe someone else can try this patch and give a report.&lt;br /&gt;&lt;br /&gt;Ok, so should I dump Centos-4 for now and install Fedora 6, which has an up-to-date kernel. Or should I try and work out which version of the target it was that the Pcpro guy's were using?  Ok, I choose the latter.&lt;br /&gt;&lt;br /&gt;I went back and downloaded the older versions of the target. And to cut a long story short, I discovered that this version "&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=108475"&gt;iscsitarget-0.4.5.tar.gz&lt;/a&gt;" will compile on Centos-4.  (If you look at the README for that version of the target, it says it is happy with kernel 2.6.10)&lt;br /&gt;Here is the proof that it compiles:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# tar xfz iscsitarget-0.4.5.tar.gz&lt;br /&gt;# chown -R root:root iscsitarget-0.4.5&lt;br /&gt;# cd iscsitarget-0.4.5&lt;br /&gt;# make&lt;br /&gt;make -C usr&lt;br /&gt;make[1]: Entering directory `/home/iscsitarget-0.4.5/usr'&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o ietd.o ietd.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o iscsid.o iscsid.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o conn.o conn.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o session.o session.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o target.o target.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o message.o message.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o ctldev.o ctldev.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o log.o log.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o md5.o md5.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o isns.o isns.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o sha1.o sha1.c&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o chap.o chap.c&lt;br /&gt;cc ietd.o iscsid.o conn.o session.o target.o message.o ctldev.o log.o md5.o isns.o sha1.o chap.o -o ietd&lt;br /&gt;cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include   -c -o ietadm.o ietadm.c&lt;br /&gt;cc ietadm.o ctldev.o -o ietadm&lt;br /&gt;make[1]: Leaving directory `/home/iscsitarget-0.4.5/usr'&lt;br /&gt;make -C /usr/src/kernels/2.6.9-42.0.3.EL-i686/ SUBDIRS=/home/iscsitarget-0.4.5/kernel modules&lt;br /&gt;make[1]: Entering directory `/usr/src/kernels/2.6.9-42.0.3.EL-i686'&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/tio.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/iscsi.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/nthread.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/wthread.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/config.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/digest.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/conn.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/session.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/target.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/volume.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/iotype.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/file-io.o&lt;br /&gt;  CC [M]  /home/iscsitarget-0.4.5/kernel/target_disk.o&lt;br /&gt;  LD [M]  /home/iscsitarget-0.4.5/kernel/iscsi_trgt.o&lt;br /&gt;  Building modules, stage 2.&lt;br /&gt;  MODPOST&lt;br /&gt;  CC      /home/iscsitarget-0.4.5/kernel/iscsi_trgt.mod.o&lt;br /&gt;  LD [M]  /home/iscsitarget-0.4.5/kernel/iscsi_trgt.ko&lt;br /&gt;make[1]: Leaving directory `/usr/src/kernels/2.6.9-42.0.3.EL-i686'&lt;br /&gt;&lt;br /&gt;# make install&lt;br /&gt;`usr/ietd' -&gt; `/usr/sbin/ietd'&lt;br /&gt;`usr/ietadm' -&gt; `/usr/sbin/ietadm'&lt;br /&gt;if [ -f /etc/debian_version ]; then \&lt;br /&gt;        install -v -m 755 etc/initd/initd.debian /etc/init.d/iscsi-target; \&lt;br /&gt;elif [ -f /etc/redhat-release ]; then \&lt;br /&gt;        install -v -m 755 etc/initd/initd.redhat /etc/init.d/iscsi-target; \&lt;br /&gt;elif [ -f /etc/slackware-version ]; then \&lt;br /&gt;        install -v -m 755 etc/initd/initd /etc/rc.d/iscsi-target; \&lt;br /&gt;else \&lt;br /&gt;        install -v -m 755 etc/initd/initd /etc/init.d/iscsi-target; \&lt;br /&gt;fi&lt;br /&gt;`etc/initd/initd.redhat' -&gt; `/etc/init.d/iscsi-target'&lt;br /&gt;install: creating directory `/lib/modules/2.6.9-42.0.3.EL/kernel/iscsi'&lt;br /&gt;`kernel/iscsi_trgt.ko' -&gt; `/lib/modules/2.6.9-42.0.3.EL/kernel/iscsi/iscsi_trgt.ko'&lt;br /&gt;depmod -aq&lt;br /&gt;#&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Version 0.4.5 was released on 2005-02-21, so that PcPro article must have been on the editors desk for a year!&lt;br /&gt;&lt;br /&gt;Ok, I still need to see if it will work, but that something for another post!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-8668780283362050304?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/8668780283362050304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=8668780283362050304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/8668780283362050304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/8668780283362050304'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2007/01/centos-4-and-linux-iscsi-target.html' title='Centos 4 and the Linux iScsi Target'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-8989207158234112654</id><published>2006-11-22T16:57:00.000Z</published><updated>2006-11-22T17:56:43.002Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><title type='text'>Vista 3-D Flip</title><content type='html'>We installed Vista for the first time today. Of course the 'killer' feature we all wanted to see was the 'Windows Flip 3D', where it stacks the windows side-on &amp;amp; allows you to scroll through them. But how do you activate it?&lt;br /&gt;&lt;br /&gt;After much searching, our &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;resident&lt;/span&gt; Vista &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;evangelist 'Chris (BrightNorth) Martin'&lt;/span&gt; came up with the answer. Press and hold the Control Key, the Windows Key and the Tab Key. Or for a slightly different alternative, press and hold the Windows Key and the Tab Key.&lt;br /&gt;&lt;br /&gt;Chris provided this &lt;a href="http://207.46.197.98/Windows/en-US/Help/ffab5395-d72f-420a-a04f-a309a2450eff1033.mspx"&gt;link &lt;/a&gt;which is the official explanation of how to do it from Microsoft.&lt;br /&gt;&lt;br /&gt;Even latter, we found there was a button on the 'quick launch' bar, called "Switch between Windows". Just click that and it flips the windows into the 3D stack. How did we miss that button??&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-8989207158234112654?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/8989207158234112654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=8989207158234112654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/8989207158234112654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/8989207158234112654'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2006/11/vista-3-d-flip.html' title='Vista 3-D Flip'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4685462481734307117.post-5899800724747938120</id><published>2006-08-23T01:05:00.000+01:00</published><updated>2006-08-23T01:14:09.988+01:00</updated><title type='text'>First post</title><content type='html'>Ok, this is something I've been going to do for quite some time - well over a year.  I was going to use Wordpress, but I just cannot find the free time to finish getting it going.  And I have a load of information waiting to be posted to a blog, so I've (finally) decided to get something up and running quickly with "blogger.com".   It looks like I've picked a good time to do this (hopefully), as they have  a new Beta version that I'm going to try out. Seems ok so far so lets click the "publish" buttons and take a look...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4685462481734307117-5899800724747938120?l=nwsmith.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nwsmith.blogspot.com/feeds/5899800724747938120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4685462481734307117&amp;postID=5899800724747938120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/5899800724747938120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4685462481734307117/posts/default/5899800724747938120'/><link rel='alternate' type='text/html' href='http://nwsmith.blogspot.com/2006/08/first-post.html' title='First post'/><author><name>Nigel Smith</name><uri>http://www.blogger.com/profile/08381869598305700143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
