Search Results: "js"

23 April 2009

Matthew Palmer: Insane/Brilliant Idea of the Day

I've been talking serial consoles with a couple of the other guys at work: how nice they are to have for machines in the datacenter, how annoying it is that vPro serial-over-LAN doesn't seem to be robust (yet?), and how serial access concentrators are lung-and-kidney expensive (especially when you've got 50-some racks to outfit). This discussion, combined with my ongoing embedded-hardware-fascination lust for a SheevaPlug appears to have spurred my brain into coming up with a Brilliant Idea: tie a SheevaPlug to a pile of USB to serial adapters and use that as your per-rack serial concentrator. Imagine: faffenheimer, a dedicated server you manage for a customer, and located in rack 27 of your DC, has just crashed, and you'd like to know WTF has happened rather than just blindly reboot, but you're in the office 15 minutes away from the DC floor, and the customer's going to want that machine back up and running pretty quickly.
workstation:~/porn$ ssh rack27.serial
rack27:~$ sconsole faffenheimer
[screen session attached]
[minicom running, shows the horror of a kernel crash dump]
[oh look at that, kernel bug]
^A ESC
[pgup pgup]
[enter]
[pgdn pgdn]
[enter]
^A >/tmp/faffenheimer-crash-dump
^A d
rack27:~$ exit
workstation:~/porn$ scp rack27.serial:/tmp/faffenheimer-crash-dump ~
workstation:~/porn$ powercycle rack27 faffenheimer
Shiny! We got a crash dump in a minute or so (rather than having to take phonecam photos of KVM screens in the DC), never had to leave our comfy seat, and the machine's on it's way back up. We're now free to pursue diagnostic activities on that crash dump at our leisure. 10 minutes later, the downtime for faffenheimer that was automatically set when we ran powercycle runs out and Nagios sends us threatening messages. Hmm, something's gone wrong here. Back into the console...
workstation:~/porn$ ssh rack27.serial
rack27:~$ sconsole faffenheimer
[screen session attached]
[Boot is hung waiting for root password after initrd has bombed]
[Type root password]
[Oh look, the root MD appears to have come asunder]
[clickety-click... fixee fixee]
[reboot]
The more I think about this, the more I reckon I'm onto a bona fide winner. The sheevaplug is a powerful ARM-based system with USB/ethernet/SD ports that is packaged literally in it's own power supply wall wart -- it's a plastic box with power plug prongs poking out the side. That's all there is to it. The USB to serial adapter things are likely to be a bit more of a pain, but I've played with enough of them by now to not be too scared. So, you plug the Sheeva into a power socket, plug an Ethernet cable and USB hub into the Sheeva, configure things a bit so that the system knows which serial adapter maps to which machine, and you're away. Oh, and the best bit: the Sheeva apparently draws as little as 2W when idle. A whole datacentre's worth of serial goodness for about a server's worth of power. The cost per rack should be somewhere below AU$250, especially in bulk. Let's see if I can convince work to spring for a Sheeva, a USB hub, and a half dozen or so USB to serial adapters to test this whole thing out. Given that the whole thing looks like it'd cost less than AU$250 (plus my R&D time), I can't imagine it'll be too hard a sell to at least give it a go. Watch this space...

22 April 2009

Martin Michlmayr: OSI signs an MOU with the Korea Software Copyright Committee

I visited Seoul last week to represent the Open Source Initiative (OSI) at an open source conference and to sign a Memorandum of Understanding (MOU) with the Korea Software Copyright Committee (SOCOP). SOCOP organized a conference with the title "Free Open Source Software License Insight Conference", and the international speakers included Brett Smith of the FSF, Brendan Scott of Open Source Law, Michael Cot of RedMonk and myself. From the questions we received, it seems that there is a lot of interest in legal questions related to open source. There were a number of folks from hardware companies that asked specific questions what they could do and couldn't do (e.g. related to including sources for GPL code and properly giving credit for BSD code). I think the conference was a great success. The talks were of high value and we got good questions. The audience was quite mixed, ranging from managers to developers. Even though they had simultaneous translation of the talks, the majority of the people listened in English... this gives me hope that some of these folks will end up becoming involved in the international open source community. Mr Koo and Dr Michlmayr signing MOU SOCOP is working on a number of activities related to open source, including: The day after the conference, I went to the SOCOP office to sign the MOU between SOCOP and OSI with Mr Yung Bo Koo, the chairman of SOCOP. The MOU says that we'll share knowledge and expertise, help with promotional activities and support each other's activities in other ways. I was delighted to sign the MOU between SOCOP and OSI, and I look forward to a fruitful cooperation between our organizations in the future. It's great to see so much interest and so many activities around open source in the Republic of Korea.

16 April 2009

Peter Eisentraut: Web browsers vs. debtags

So I wanted to see what web browsers are available in Debian. The first stop was http://packages.debian.org/. Going to the page of one browser package and clicking on "Browser" in the tags area only gives you the explanation of the tag, but not the list of other packages with that tag. Is that available somewhere?

So next try maybe grep-dctrl ... oh, grep-debtags appears to be the ticket.

$ grep-debtags -n -sPackage web::browser
arora
browser-history
caudium-dev
caudium-modules
caudium-perl
caudium-pixsl
caudium-ultralog
chimera2
conkeror
cookietool
dhelp
edbrowse
elinks
elinks-lite
elvis
elvis-console
epiphany-browser
epiphany-browser-dev
epiphany-extensions
epiphany-gecko
ezmlm-browse
galeon
galeon-common
gtkcookie
iceweasel
jsmath
junior-internet
kazehakase
konq-plugins
links
links2
lynx
lynx-cur
lynx-cur-wrapper
mozilla-firefox-adblock
mozilla-noscript
netrik
netsurf
saods9
stripclub
sugar-web-activity
surfraw
w3m
w3m-el
w3m-img
wapua
claws-mail-dillo-viewer
dillo
konqueror
midori

How many of those are actually web browsers? Probably about half of them. (Example: caudium (not listed) is a web server, caudium-dev is its development package, not very close to a web browser.)

This would actually be quite a useful interface if the tags had any relationship to reality. I was in fact looking for a lightweight graphical browser, so this is a plausible command:

$ grep-debtags -n -d -sPackage web::browser -a interface::x11 -a -! suite::gnome -a -! suite::kde

which gives me 15 hits, of which 8 or 9 are actual web browsers.

Well, my search for a lightweight browser stopped here:

iceweasel
lightweight web browser based on Mozilla

Yeah! ;-)

12 April 2009

Biella Coleman: Too cute to handle

Possibly the cutest pictures and story of the decade?!

10 April 2009

David Pashley: Check maven dependencies

One really nice feature of maven is the dependency resolution stuff that it does. The dependency plugin also has an analyse goal that can detect a number of problems with your dependencies. It can detect libraries you use but haven't declared in your POM, but work through transitive dependencies. This can cause build problems when you remove the library that was dragging in the undeclared dependency. It can also work out which dependencies you are no longer using, but have a declared dependency.
mojo-jojo david% mvn dependency:analyze
[INFO] Scanning for projects...
...
[INFO] [dependency:analyze]
[WARNING] Used undeclared dependencies found:
[WARNING]    commons-collections:commons-collections:jar:3.2:compile
[WARNING]    commons-validator:commons-validator:jar:1.3.1:compile
[WARNING]    org.apache.myfaces.core:myfaces-api:jar:1.2.6:compile
[WARNING] Unused declared dependencies found:
[WARNING]    javax.faces:jsf-api:jar:1.2_02:compile
...
Read Comments (0)

8 April 2009

Jurij Smakov: VoIP client for Android

I ve been working on a fun little project lately, trying to make a simple VoIP client which can be used on an Android device. It was fairly straightforward to port PJSIP SIP stack to it, however hooking it up with Android s audio system took a bit more fiddling. Once it was done, I just needed some JNI wrappers for the native functions, allowing me to call them from Java UI. Alltogether, it probably took about a month, most of the time spent chasing down incredibly stupid bugs, like trying to load a binary instead of dynamic library into Java :-). Finally, a couple of days ago I was able to build a primitive, but working application, which can successfully do SIP calls from my G1. The source code and the instructions on how to build it are available at http://android.wooyd.org.

5 April 2009

Jose Carlos Garcia Sogo: Backup your system for a desktop user

While Linux and Debian are plenty of programs for backing up your system, things change when you need a backup system for a common desktop user. In this area there is a lot of room for improvement, as programs for KDE and GNOME are years behind what programs for Windows and Mac OS X are offering.
There has been some programs intents of writing a good program, full featured and with a nice graphical interface, as Simple Backup, and its fork Not So Simple Backup, pybackpack, or TimeVault, an intent to clone Apple s TImeMachine, and it s fork TimeVaultNG written for KDE. Those are projects that start with a great impulse, even some of the mentored by Google Summer of Code, and when they reach some basic functionality, they get abandoned or not being properly maintained.
What I would like to see for a backup system for desktop user is: A lot of improvement and innovation has taken place in Linux Desktop during all these years, but backups are also important for SOHO users, and they need a well integrated program for doing that, as console based solutions usually require configuration skills which desktop users don t have.
Updated 6th April 22:26 CEST: I have been recommended in comments to try Back in Time and D j Dup. Both are in active delopment, which is a bonus. The first one works in a similar way to TimeVault, while the second one works using duplicity as backend, but has support to upload the resulting files to a remote server using SSH or to Amazon S3. I will investigate more on these apps.

2 April 2009

Biella Coleman: Rocket Fuel where it should not be

Blast your infant to the sky with rocket fuel.

Thijs Kinkhorst: IPCCommTimeout not working with mod_fcgid 2.2

In a setup where we use Apache FastCGI with PHP through mod_fcgid and suEXEC, we experienced the problem that long running scripts always resulted in a 500 Internal Server Error after exactly 40 seconds. This is due to the IPCCommTimeout setting, but changing that setting didn't seem to yield any effect. I stumbled on a blog entry saying that they only work within the VirtualHost block. I tried this for my test-vhost but it also didn't work. It took me a while to find the complete solution (workaround): you need to specify IPCommTimeout in every VirtualHost block, because a later VirtualHost will globally reset your setting in a previous one. So until this bug is fixed the neat workaround is to place the mod_fcgid settings in a separate configuration file and Include that file inside each VirtualHost.

1 April 2009

Julian Andres Klode: python-apt 0.7.10 released


I have just uploaded a version of python-apt 0.7.10 to unstable ( my first upload of python-apt, all previous uploads were done by Michael Vogt). This release is mainly a bugfix release, but also brings new features like apt.package.Version.uri and apt.package.Version.fetch_binary().I also added a Breaks: debdelta (<< 0.28~) because debdelta 0.27 is not working anymore since python-apt 0.7.9 and I expect that this problem will be fixed in 0.28, which could then use the new apt.package.Version.uri API to fetch the uris of the packages). Here is the changelog: python-apt (0.7.10) unstable; urgency=low
  • Build-Depend on python-debian, use it to get version number from changelog
  • Depend on libjs-jquery, and remove internal copy (Closes: #521532)
  • apt/package.py:
    • Introduce Version. uri,uris,fetch_binary()
  • debian/control:
    • Remove mdz from Uploaders (Closes: #521477), add myself.
    • Update Standards-Version to 3.8.1
    • Use $ binary:Version instead of $ Source-Version
    • Fix spelling error: python -> Python
  • debian/copyright: Switch to machine-interpretable copyright
  • Fix documentation building
    • doc/source/conf.py: Only include directories for current python version.
    • debian/control: Build-Depend on python-gtk2, python-vte.
    • setup.py: If pygtk can not be imported, do not build the documentation.
  • Breaks: debdelta (<< 0.28~) to avoid more problems due to the internal API changes from 0.7.9.
Julian Andres Klode <jak@debian.org> Wed, 01 Apr 2009 15:24:29 +0200 Have fun. Posted in Debian

28 March 2009

Matthew Garrett

"Open"Solaris. Especially ironic given that there's a 2-clause BSD implementation out there already.

19 March 2009

Jose Carlos Garcia Sogo: Is ext4 unsafe?

There has been a lot of hype about ext4 lately, following an Ubuntu bug which rose a lot of concerns about ext4 security. I know these are no news, and I know also that I am not a kernel guru, but let s resume some important concepts.
Ext4 implements something called allocate-on-flush. This means that kernel will decide how to write to disk in an efficient way by batching allocations together in larger runs. It increases performance and reduces fragmentation. But if a system crash happens between metadata and data is actually written to disk a 0-size length file can be found in the filesystem. With ext3 journal had a default timeout of 5 seconds and then was flushed to disk. With ext4 this time is unknown, so appplications that want to ensure everything is on disk have to call fsync() on file and directory after every operation. To avoid this, a series of patches have been queued for 2.6.30 so when a file is going to be replaced, it is written to disk with no delay.
Another concern raised is the need for atomicity and durability of files. For achieving this applications have first to write a temporary file and then rename() it over the old file. This will ensure that new or old file will be found in the filesystem after a crash, instead of a corrupted file that can be found when it is opened with O_TRUNC.
Anyway, my opinion is that when choosing a filesystem, one have to know what the computer is going to be used for. Using binary propietary drivers is an option, which can lead your Linux installation to behave most like Vista and filesystem cannot be blamed for losing files if it is making its job as designed. Perhaps, it s better to use ext3 in this situation, but at the cost of missing performance.
If you want to learn more about this issues I recommend you to read both articles by Theodore Tso, Delayed allocation and the zero-length file problem and Don t fear the fsync! and also AlessanderAlexander Larsson s one ext4 vs fsync, my take as well as comment in all of them.

15 March 2009

Jose Carlos Garcia Sogo: Upgrading my laptop to ext4

Warning: Don t upgrade root partition (/) or the partition in which /boot is placed unless you know what you are doing. More on this later.
Warning2: Make backups of your data. Last Friday I went on upgrading to ext4 my laptop. I decided to go first with /home partition, as / has also /boot and can give some problems if not handled with care. Upgrading it is quite easy, and fast, as the old data is not upgraded, only new files will be added using new features. First, I installed latest linux-image package to start using kernel version 2.6.28, which includes production ready ext4 support. After rebooting, I logged in as root so I could umount /home. The steps to upgrade are as follows:

# uname -a
Linux gimli 2.6.28-1-686 #1 SMP Mon Feb 23 03:13:24 UTC 2009 i686 GNU/Linux
# umount /home
# tune2fs -O extents,uninit_bg,dir_index /dev/home_partition
# fsck -pfD /dev/home_partition
# mount /home

You MUST run fsck. If not, ext4 won t mount your filesystem, so don t forgive this step if you re upgrading your / partition. You will see some checksums errors appear. Don t be afraid, that s expected, and that s why -p is added to fsck command, you it is not asking which action to perform in every error. Upgrading partition containing /boot
For upgrading your / partition you have to take into account what grub and klibc version you have installed. The former is need so grub can read your kernel image from filesystem, and the second is needed due a bug that made initramfs detect ext4 filesystems as ext3, and passing incorrect option to mount, which failed. Versions in Debian known to work are libklibc >=1.5.15-1 and grub2 (packaged as grub-pc). Make sure you have these versions installed before trying to go to ext4.
Also, as you have to upgrade having your partition unmounted, you will have to get a console before root partition is mounted. You can do that by passing mount=break break=mount to your boot options in grub. ENJOY!

4 March 2009

Jose Carlos Garcia Sogo: Innovation in netbooks

After the release of Asus Eee PC and the discovery of the market that was eager to buy cheap and wearable computers every laptop manufacturer has jumped into the hype and released their own versions of netbooks, with different success.
But somehow it was a cloning phase. Vendors were just cloning what Asus did, with more or less changes, but without innovating. Now, it seems that the path has opened again, from the open source and open hardware front, and it has been released AlwaysInnovating s touchbook. It is a netbook with a detachable keyboard (it is even sold separated) and built upon an ARM processor from Texas Instruments, and a 8GB microSD card. Thus they claim the battery last from 10 to 15h with the keyboard, and 3 to 5h in touchscreen mode.
As is said above, the whole machine is open source based. Software is based upon OpenEmbedded, and hardware schematics of the board are released under GPL on Beagleboard project. They say that you can also install Ubuntu, Android or even Windows CE on it. Update: Just discovered that AlwaysInnovating is a Gr goire Gentil startup. Gr gory is a Civil Engineer from cole des ponts et Chauss es. We know how to build things :-D

26 February 2009

Riku Voipio: The not-slug: SheevaPlug

popcon lists approximately 1000 arm/armel Debian installations. There is also listed 864 installations of nslu2-utils, letting us estimate that approximately 85% of debian/arm(el) installations are Linksys nslu2's. It is nicked sympathetically as "The Slug", which pretty accurately describes the performance of nslu2. Still, people have found absolutely amazing amount of ways to use their slugs. What would you do with something approximately 10x more powerful with same prize/size range?

Enter the Marvell SheevaPlug




What Slug SheevaPlug
CPU 266Mhz 1.2Ghz
Cache 32KB 32+256KB
Flash 8MB 512MB
MEM 32MB 512MB
Net 100Mb 1Gb


And that's not everything - SheevaPlug comes with SDIO slot and miniusb to be used as a serial console (and JTAG). No soldering needed for hacking.

Some more details on the LinuxDevices article.

For those of you who think that has one port too few of something, or don't like the wall-wart design, Other devices based on kirkwood SoC (which SheevaPlug is based on) are on the way from various ODM/OEM houses.

Dirk Eddelbuettel: Review of 'Applied Econometrics in R' in JSS

A short review of Kleiber and Zeileis' excellent Applied Econometrics with R is now out at the (online) Journal of Statistical Software.

11 February 2009

Enrico Zini: DDE, Debian Data Export

DDE, Debian Data Export After testing the idea and the prototype with my presentation at Fosdem, I'm proud to announce DDE, Debian Data Export. The problem In Debian, we publish all sort of information, using all sorts of data formats (often ad hoc and obscure), in obscure places. Try to think of an application, for example, that wants to access all this information together: A nightmare, uh? The solution DDE is a way to make it simple to publish and download data. The aim is to be able to access all sorts of Debian information without worrying about data formats, protocols and access control, and to make it easy to discover what data is available. DDE exports data as a big virtual tree. You can pick a node in the tree by its URL and download all the data that it contains, in a format of your choice: currently it supports JSON/JSONP, YAML, CSV and Python pickled objects. This means that you can now get Debian data using a trivial HTTP client tool or library, and read it using commonly available decoders: both should be available in almost any programming language nowadays. Since JSON and JSONP are supported, this even includes JavaScript in Ajaxy web pages. DDE is not a competitor to UDD: UDD is about creating a central location where all the data can be accessed, while DDE is about giving people a simple way to access data or subsets of data. In a way, DDE and UDD complete each other: the more data enters UDD, the more data is available for DDE. In turn, DDE gives a simple interface to the most popular and useful UDD queries. The dream Here are some hints at what can be done with this: A call for action You can add data to the DDE tree by just putting a data file in yaml, json or pickle format under ~/.dde (I've written a specific guide to this on the Debian wiki). If you wish to create new and fancy Debian statistics or compute other sorts of data, or if you already maintain tools that generate Debian data, including but not limited to, for example: Then please have a look at http://wiki.debian.org/DDE/StaticData and try to publish your data in ~/.dde on merkel.debian.org. For more complicated cases (like accessing a remote database), it is possible to extend DDE via python plugins. You can get in touch with me if you need to go that way.

2 February 2009

David Moreno: And now Apache2::EmbedMP3 for your songs collections!

After I spent time working on Apache2::EmbedFLV, I thought it was a good idea to do the same for audio files, specifically MP3 files. So now that you have your MP3 files on your web server and they are accessible to the world, you may want to show them with an embedded audio player. Well, Apache2::EmbedMP3 is exactly for you! EmbedMP3 uses the fabulous WP Audio Player, a small, elegant, GPL Flash audio player, similarly to how Apache2::EmbedFLV uses Flowplayer. The interesting thing about EmbedMP3 is that you can display more interesting data on the template such as song name, artist, album, year and also lyrics, which was an interesting feature I added. In this fashion, it s very easy to just drop a whole bunch of files into a directory and all be served with the custom interface. You have to instruct Apache2:
<Files ~ "\.mp3$">
       SetHandler modperl
       PerlSetVar wpaudioplayer /audio-player/player.swf
       PerlSetVar wpaudioplayer_js /audio-player/wpaudioplayer.js
       PerlResponseHandler Apache2::EmbedMP3
</Files>
And that s it. Take a look at the documentation to see how to point it to specific locations for WP Audio Player, template file, etc. You can see the hack in action at http://dev.axiombox.com/~david/mp3. If it struggles a bit by buffering, it s because that s directly from my home Internet connection, so give it a small break :-) And, as I suggested the Radiohead video with EmbedFLV, I suggest now this Black Eyed Peas song, Like That, it s very catchy and I love it ;-) Go get the code at the Git repo or at CPAN (once it s updated and published).

28 January 2009

Wouter Verhelst: dlhack()

In my living room, there's a TV, with a computer connected to it. In that computer, there's a DVD-ROM player, a hard disk, and a card with a TV output. On that hard disk, there's Debian with xine to view DVDs When I originally put it there, I would pick up the keyboard to do some user input. This works, but a keyboard is klunky. So, instead, I've been working on jsxine, a little application that does not much more than open a window, and tell xine to play a DVD there, but use the joystick for UI[1]. My 'joystick' is a Logitech Wingman Gamepad Extreme, which has a cable long enough for me to be able to use it comfortably from the couch, so I can use it as a sort of remote control. The current version has quite some things hardcoded: button 0 is 'select', button 5 is 'eject', button 6 'previous chapter', button 7 'next chapter', and button 8 is 'start or stop playing'. The primary two axes move around in the DVD menu; and other stuff is not yet implemented. This layout, of course, makes a lot of sense on this particular gamepad, but I doubt it does on other joystick devices. And since I want this to eventually be useful for other people, too, I recognized that I would need some way to configure things. My initial stab at configuration would create a hash table of available actions, read out a configuration file, and then find the appropriate function pointer in the hash table. While this works, it has one rather important downside: adding a configurable action would requrie another item in the hash table; this would eventually make the hash table horribly long. So I thought, why not use the configuration value to ask the dynamic linker to get me a function pointer? With a little help from my friends, that's exactly what I did. Proof-of-concept code:
#include <dlfcn.h>
#include <stdio.h>
int function()  
	printf("In function!\n");
 
int main(int argc, char**argv)  
	int (*funcptr)(void);
	void* handle;
	printf("foo\n");
	handle = dlopen(NULL, RTLD_NOW);
	funcptr = dlsym(handle, "function");
	funcptr();
	return 0;
 
Compile with cc -ldl -rdynamic. Et voila, that gets you an application which can do a lookup of function names at run time. Long live C. Of course, there's a bit of a danger in the above example. A user could just write a config file that has things like 'open' and/or 'write' as arguments, or the like. One should make sure that it can be obvious from the function name that it does indeed define an action; for example, by giving them a common prefix, and prepending that prefix to the function name before handing the name off to dlsym(). But other than that, this seems to work. It apparently also is documented in the FreeBSD documentation on dlopen(), so maybe it's not as much a hack as I thought... Oh well. Note that on GNU systems, you can also put a #define _GNU_SOURCE before the #include <dlfcn.h>, you can drop the dlopen() call and go straight to dlsym(), with RTLD_DEFAULT as the handle. [1] Yes, I could have done a Xine plugin. I didn't want to. This is as much a project to produce something useful as it is a project to hack and have fun.

23 January 2009

Ingo Juergensmann: Seagate Firmware Problems

Some time ago I've blogged about the downside of large disks being long the huge amount of time that it needs to check them with badblocks for medium errors.

As I told there, I bought two Seagate Barracuda ES.2 ST31000340NS and most of you might have heard about the firmware problems of those disks from Seagate. Seagate writes:

*Please email discsupport@seagate.com to request a firmware upgrade if your drive is on a release earlier than SN06.

Please include "ES.2" in the subject line of your email request for proper routing.


Well, I did write last week already, but haven't got any reply yet. This morning I mailed Seagate again, but no reaction so far until afternoon. Not even an automated "We got your mail and will answer it!" mail.
So, if you're in a similar situation you might ask yourself: "How can I get those firmware updates for my ES.2 drives then?"

Well, for me this trick worked quite fast:

  1. Go to the Seagate Contact Page
  2. Choose your region and country of Technical Support
  3. Click on "Chat" and wait...
  4. ... and wait...
  5. ... and wait...
  6. ... and wait...
  7. Request your firmware update from the friendly support staff that appeared somewhen
  8. Check your emails
  9. Follow the instructions in that mail



Yes, I've had to wait nearly one hour until someone showed up in that chat window, but then it worked quite nicely: I've got my email, downloaded that ZIP file and ... no! I didn't updat the firmware yet. I think I'll wait some more days, maybe until next week, and see if this firmware update is now working properly for others.
Maybe some will call me a coward, but I'm just following those friendly letters on that specific book you all know:

Don't Panic!

My disks are still working and my UPS does so as well. So, no need to hurry... But it's good to know that I could upgrade if I would like to... :->

Next.

Previous.