]> pere.pagekite.me Git - homepage.git/blobdiff - blog/index.html
Generated.
[homepage.git] / blog / index.html
index 252a7af78ac7a647bfa5d3610f7707285e419385..3ad5a25166692282e66192eb485e3c0672fbee11 100644 (file)
 
 
     
+    <div class="entry">
+      <div class="title"><a href="http://people.skolelinux.org/pere/blog/Saving_power_with_Debian_Edu___Skolelinux_using_shutdown_at_night.html">Saving power with Debian Edu / Skolelinux using shutdown-at-night</a></div>
+      <div class="date"> 5th February 2012</div>
+      <div class="body"><p>Since the Lenny version of
+<a href="http://www.skolelinux.org/">Debian Edu / Skolelinux</a>, a
+feature to save power have been included.  It is as simple as it is
+practical: Shut down unused clients at night, and turn them on again
+in the morning.  This is done using the
+<a href="http://packages.qa.debian.org/s/shutdown-at-night.html">shutdown-at-night</a> Debian package.</p>
+
+<p>To enable this feature on a client, the machine need to be added to
+the netgroup shutdown-at-night-hosts.  For Debian Edu, This is done in
+LDAP, and once this is in place, the machine in question will check
+every hour from 16:00 until 06:00 to see if the machine is unused, and
+shut it down if it is.  If the hardware in question is supported by
+the
+<a href="http://packages.qa.debian.org/n/nvram-wakeup.html">nvram-wakeup</a>
+package, the BIOS is told to turn the machine back on around 07:00 +-
+10 minutes.  If this isn't working, one can configure wake-on-lan to
+try to turn on the client.  The wake-on-lan option is only documented
+and not enabled by default in Debian Edu.</p>
+
+<p>It is important to not turn all machines on at once, as this can
+blow a fuse if several computers are connected to the same fuse like
+the common setup for a classroom.  The nvram-wakeup method only work
+for machines with a functioning hardware/BIOS clock.  I've seen old
+machines where the BIOS battery were dead and the hardware clock were
+starting from 0 (or was it 1990?) every boot.  If you have one of
+those, you have to turn on the computer manually.</p>
+
+<p>The shutdown-at-night package is completely self contained, and can
+also be used outside the Debian Edu environment.  For those without a
+central LDAP server with netgroups, one can instead touch the file
+<tt>/etc/shutdown-at-night/shutdown-at-night</tt> to enable it.
+Perhaps you too can use it to save some power?</p>
+</div>
+      <div class="tags">
+        
+        
+        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>. 
+        
+        
+      </div>
+    </div>
+    <div class="padding"></div>
+    
     <div class="entry">
       <div class="title"><a href="http://people.skolelinux.org/pere/blog/Third_beta_version_of_Debian_Edu___Skolelinux_based_on_Squeeze.html">Third beta version of Debian Edu / Skolelinux based on Squeeze</a></div>
       <div class="date"> 4th February 2012</div>
@@ -576,200 +622,6 @@ organiserte møtene med foredrag, konferanser og utviklersamlinger.</p>
     </div>
     <div class="padding"></div>
     
-    <div class="entry">
-      <div class="title"><a href="http://people.skolelinux.org/pere/blog/Automatically_upgrading_server_firmware_on_Dell_PowerEdge.html">Automatically upgrading server firmware on Dell PowerEdge</a></div>
-      <div class="date">21st November 2011</div>
-      <div class="body"><p>At work we have heaps of servers.  I believe the total count is
-around 1000 at the moment.  To be able to get help from the vendors
-when something go wrong, we want to keep the firmware on the servers
-up to date.  If the firmware isn't the latest and greatest, the
-vendors typically refuse to start debugging any problems until the
-firmware is upgraded.  So before every reboot, we want to upgrade the
-firmware, and we would really like everyone handling servers at the
-university to do this themselves when they plan to reboot a machine.
-For that to happen we at the unix server admin group need to provide
-the tools to do so.</p>
-
-<p>To make firmware upgrading easier, I am working on a script to
-fetch and install the latest firmware for the servers we got.  Most of
-our hardware are from Dell and HP, so I have focused on these servers
-so far.  This blog post is about the Dell part.</P>
-
-<p>On the Dell FTP site I was lucky enough to find
-<a href="ftp://ftp.us.dell.com/catalog/Catalog.xml.gz">an XML file</a>
-with firmware information for all 11th generation servers, listing
-which firmware should be used on a given model and where on the FTP
-site I can find it.  Using a simple perl XML parser I can then
-download the shell scripts Dell provides to do firmware upgrades from
-within Linux and reboot when all the firmware is primed and ready to
-be activated on the first reboot.</p>
-
-<p>This is the Dell related fragment of the perl code I am working on.
-Are there anyone working on similar tools for firmware upgrading all
-servers at a site?  Please get in touch and lets share resources.</p>
-
-<p><pre>
-#!/usr/bin/perl
-use strict;
-use warnings;
-use File::Temp qw(tempdir);
-BEGIN {
-    # Install needed RHEL packages if missing
-    my %rhelmodules = (
-        'XML::Simple' => 'perl-XML-Simple',
-        );
-    for my $module (keys %rhelmodules) {
-        eval "use $module;";
-        if ($@) {
-            my $pkg = $rhelmodules{$module};
-            system("yum install -y $pkg");
-            eval "use $module;";
-        }
-    }
-}
-my $errorsto = 'pere@hungry.com';
-
-upgrade_dell();
-
-exit 0;
-
-sub run_firmware_script {
-    my ($opts, $script) = @_;
-    unless ($script) {
-        print STDERR "fail: missing script name\n";
-        exit 1
-    }
-    print STDERR "Running $script\n\n";
-
-    if (0 == system("sh $script $opts")) { # FIXME correct exit code handling
-        print STDERR "success: firmware script ran succcessfully\n";
-    } else {
-        print STDERR "fail: firmware script returned error\n";
-    }
-}
-
-sub run_firmware_scripts {
-    my ($opts, @dirs) = @_;
-    # Run firmware packages
-    for my $dir (@dirs) {
-        print STDERR "info: Running scripts in $dir\n";
-        opendir(my $dh, $dir) or die "Unable to open directory $dir: $!";
-        while (my $s = readdir $dh) {
-            next if $s =~ m/^\.\.?/;
-            run_firmware_script($opts, "$dir/$s");
-        }
-        closedir $dh;
-    }
-}
-
-sub download {
-    my $url = shift;
-    print STDERR "info: Downloading $url\n";
-    system("wget --quiet \"$url\"");
-}
-
-sub upgrade_dell {
-    my @dirs;
-    my $product = `dmidecode -s system-product-name`;
-    chomp $product;
-
-    if ($product =~ m/PowerEdge/) {
-
-        # on RHEL, these pacakges are needed by the firwmare upgrade scripts
-        system('yum install -y compat-libstdc++-33.i686 libstdc++.i686 libxml2.i686 procmail');
-
-        my $tmpdir = tempdir(
-            CLEANUP => 1
-            );
-        chdir($tmpdir);
-        fetch_dell_fw('catalog/Catalog.xml.gz');
-        system('gunzip Catalog.xml.gz');
-        my @paths = fetch_dell_fw_list('Catalog.xml');
-        # -q is quiet, disabling interactivity and reducing console output
-        my $fwopts = "-q";
-        if (@paths) {
-            for my $url (@paths) {
-                fetch_dell_fw($url);
-            }
-            run_firmware_scripts($fwopts, $tmpdir);
-        } else {
-            print STDERR "error: Unsupported Dell model '$product'.\n";
-            print STDERR "error: Please report to $errorsto.\n";
-        }
-        chdir('/');
-    } else {
-        print STDERR "error: Unsupported Dell model '$product'.\n";
-        print STDERR "error: Please report to $errorsto.\n";
-    }
-}
-
-sub fetch_dell_fw {
-    my $path = shift;
-    my $url = "ftp://ftp.us.dell.com/$path";
-    download($url);
-}
-
-# Using ftp://ftp.us.dell.com/catalog/Catalog.xml.gz, figure out which
-# firmware packages to download from Dell.  Only work for Linux
-# machines and 11th generation Dell servers.
-sub fetch_dell_fw_list {
-    my $filename = shift;
-
-    my $product = `dmidecode -s system-product-name`;
-    chomp $product;
-    my ($mybrand, $mymodel) = split(/\s+/, $product);
-
-    print STDERR "Finding firmware bundles for $mybrand $mymodel\n";
-
-    my $xml = XMLin($filename);
-    my @paths;
-    for my $bundle (@{$xml->{SoftwareBundle}}) {
-        my $brand = $bundle->{TargetSystems}->{Brand}->{Display}->{content};
-        my $model = $bundle->{TargetSystems}->{Brand}->{Model}->{Display}->{content};
-        my $oscode;
-        if ("ARRAY" eq ref $bundle->{TargetOSes}->{OperatingSystem}) {
-            $oscode = $bundle->{TargetOSes}->{OperatingSystem}[0]->{osCode};
-        } else {
-            $oscode = $bundle->{TargetOSes}->{OperatingSystem}->{osCode};
-        }
-        if ($mybrand eq $brand && $mymodel eq $model && "LIN" eq $oscode)
-        {
-            @paths = map { $_->{path} } @{$bundle->{Contents}->{Package}};
-        }
-    }
-    for my $component (@{$xml->{SoftwareComponent}}) {
-        my $componenttype = $component->{ComponentType}->{value};
-
-        # Drop application packages, only firmware and BIOS
-        next if 'APAC' eq $componenttype;
-
-        my $cpath = $component->{path};
-        for my $path (@paths) {
-            if ($cpath =~ m%/$path$%) {
-                push(@paths, $cpath);
-            }
-        }
-    }
-    return @paths;
-}
-</pre>
-
-<p>The code is only tested on RedHat Enterprise Linux, but I suspect
-it could work on other platforms with some tweaking.  Anyone know a
-index like Catalog.xml is available from HP for HP servers?  At the
-moment I maintain a similar list manually and it is quickly getting
-outdated.</p>
-</div>
-      <div class="tags">
-        
-        
-        Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>. 
-        
-        
-      </div>
-    </div>
-    <div class="padding"></div>
-    
     <p style="text-align: right;"><a href="index.rss"><img src="http://people.skolelinux.org/pere/blog/xml.gif" alt="RSS feed" width="36" height="14" /></a></p>
     <div id="sidebar">
       
@@ -783,7 +635,7 @@ outdated.</p>
 
 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
 
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (1)</a></li>
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (2)</a></li>
 
 </ul></li>
 
@@ -904,11 +756,11 @@ outdated.</p>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (54)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (72)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (73)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (7)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (104)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (105)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (13)</a></li>