Welcome to my blog.

Have a look at the most recent posts below, or browse the tag cloud on the right. An archive of all posts is also available.

Atom Add a new post titled:

I am considering buying an android phone, and two possibilities (at equal price) are the Samsung Galaxy S and the Google Nexus S (made by Samsung).

Some thoughts:

  • The Galaxy lacks a flash for the camera.
  • The Nexus doesn't have removable memory.
  • The Nexus doesn't have an FM radio.
  • The Galaxy comes with horrible Samsung addons, while the Nexus is cleaner, and is more likely to get updates.
  • It might be hard to update the Galaxy anyway, as the update tool from Samsung requires windows, though it looks like there might be some alternatives that support linux.
  • The nexus is ~10g heavier.
Posted Fri Dec 2 05:10:33 2011

So I have a RAID1 system (with 1 spare disk), and I want to use the spare disk to make a RAID5.

The system has LVM on top of the raid.

I use the ideas at http://www.arkf.net/blog/?p=47

It turns out (read comments on that page) that this is a bad idea. Better to start from scratch.

Posted Mon Nov 28 18:42:20 2011

In order to combine several PDF files (eg scanned pages) into one PDF, the following works

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf input1.pdf ... inputN.pdf

and the argument

-dPDFSETTINGS=/ebook

can be used to reduce the quality. In order from least good to best

  • screen
  • ebook
  • printer
  • prepress
Posted Wed Nov 17 01:20:09 2010

So, I want to install gitweb (http://git-scm.com and http://git.or.cz/gitwiki/Gitweb) on nearlyfreespeech.net for interest's sake more than anything else. I already have cgit, but I'm inquisitive or something.

Firstly, get a tar-ball of git, or get a source package of git somehow.

wget http://kernel.org/pub/software/scm/git/git-1.6.6.tar.bz2
tar -xf git-1.6.6.tar.bz2
cd git-1.6.6

Then, to find out appropriate commands, we can examine the files gitweb/README and gitweb/INSTALL.

In short, we need to run

$MAKE prefix=$PREFIX GITWEB_PROJECTROOT=../../path/to/git/folder/ \
GITWEB_SITENAME=aaatos.net GITWEB_HOME_LINK_STR='http://www.aaatos.net/git/gitweb.cgi' \
gitweb/gitweb.cgi

where $MAKE is the GNU make command, $PREFIX is the prefix for git, in my case /usr/local, and ../../path/to/git/folder is the directory in which to scan fir git projects. In my case, I know my web server's user sees a slightly different directory root than my shell user, so I used a relative path, which in this case is correct both for the compliation and the directory the script will be run from, which I suppose is the important one, though that might be wrong; experiment!

We then need to copy the files into place;

mkdir $WEBDIR/gitweb
cp gitweb/gitweb.cgi gitweb/gitweb.css gitweb/gitweb.js gitweb/git-logo.png gitweb/git-favicon.png $WEBDIR/gitweb

where $WEBDIR is the website root (or, the folder in which the gitweb folder should sit).

This is still not entriely satisfactory; gitweb works, but the owner field is still not quite right; I'd like to customise it, which should be possible according to README and INSTALL. To set the owner, for each repository, edit the $NAME.git/config file, and add the lines

[gitweb]
    owner = $YOUR_NAME

where the $YOUR_NAME is the name you would like displayed.

I intend to work out some rewriting so that the repository can be cloned over HTTP, but that's not done yet - more to follow, either in this post, or as a new one.

Posted Tue Jan 5 10:03:53 2010

I had left an Ubuntu 9.10 LiveCD session running, and had installed openssh-server and set the password for ubuntu by running

passwd

so I was able to ssh into the session later. However, I wanted to restart back into my normal session, which requires restarting. I think it's possible to pass some argument to shutdown so that it doesn't halt gracefully, but there should be an easier way. Indeed, I found a useful clue at http://www.pendrivelinux.com/ubuntu-remove-the-prompt-to-eject-cd/. Specifically, the bit about S*casper. I was able to modify /etc/rc0.d/S89casper, and comment out a line that said

read x < /dev/console

which appears to have work, as I managed to ssh into my normal session. Not bad. It may be worth mentioning that the boot order for my PC does not include the CD drive - that is selected via a boot menu, so when the computer restarts it will not boot from the CD again, which I guess is why that `feature' is there.

Also, after searching a bit, it appears that this sort of thing is a common issue for people using USB drives. However, a lot of solutions seem to recommend simply deleting the file, rather than simply uncommenting the irritating bit.

Posted Sun Jan 3 10:57:02 2010

Here are some suggestions for things that should be included in any good conference presentation:

  • With the power of an ox

That is all so far. More to come, hopefully.

Posted Tue Dec 29 21:07:07 2009

Okay, this is further to Move an existing system to LVM on RAID1, but instead of moving an existing system, we are using the LiveCD (not alternate) to install onto LVM on top of RAID1.

  • Boot the LiveCD you want to install from (eg 9.10 alpha4 is what I used, there are newer versions out already though).
  • Install mdadm and lvm

    :/# apt-get install mdadm lvm2

  • If you don't have your raid-array set up yet, do that now. Instructions in Move an existing system to LVM on RAID1. Also set up the lvm array.

  • If you have the array set up,

    :/# mdadm --assemble --scan

    to set it up.

  • If you like, you can set up partitions for the installation outside the installer, which is what I do.
  • Start the installer. Just do it as normal, making sure you pick manual partitioning.
  • Once installed, you can't just reboot. You won't be able to boot into your new system. Instead, you must start a chroot, install mdadm and lvm, as in the previous post (don't forget to modify /etc/modules too).
  • Reboot into your new system. That should be everything.
Posted Sat Sep 5 23:15:28 2009 Tags:

You should make backups of stuff before trying this

My computer had a single 750GB SATAII hard drive in it, with a variety of LVM partitions (/, /home) and non-LVM ones (/boot, swap, some other random ones). I wanted to consolidate slightly, and set up a RAID in case a drive died... (I do have backups of important stuff, but the downtime would be a pain) I also wanted to avoid reinstalling - while it is easy (using Jaunty), I didn't have a 64-bit jaunty cd (only 32-bit ones).

There are some things you could do here that should make stuff easier, but I didn't.

  • Boot into a LiveCD. I used the 32-bit desktop cd from shipit.
  • Install mdadm and lvm2
  • Set up a partition, type 0xfd, covering all of one, blank drive

Now we need to create our md array

#mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdXN missing

where X and N identify the partition you created - for me /dev/sdb1 . Next, create an LVM array, so

#pvcreate /dev/md0
#vgcreate raid /dev/md0

We have now allocated all of the space on the partition to LVM. Now, create a few lv's:

#lvcreate -L300M -nboot raid
#lvcreate -L20G -njaunty raid
#lvcreate -L30G -nhome raid
#lvcreate -L4G -nswap raid

Adjust sizes as necessary. I have a separate boot partition, though I'm not sure this is necessary with this setup. Now create filesystems

#mkfs.ext4 /dev/mapper/raid-boot
#mkfs.ext4 /dev/mapper/raid-home
#mkfs.ext4 /dev/mapper/raid-jaunty
#mkswap /dev/mapper/raid-swap

Obviously, you can use a different fs if you like. Then, we copy across the data from our old system.

#mount /dev/mapper/raid-boot /mnt/boot-new
#mount /dev/sdXN /mnt/boot-old
#cd /mnt/boot-new
#cp -a ../boot-old/* .

Those directories will probably have to be created first. Use X,N as appropriate. Repeat for the root partiton, and home, etc. If you don't have a separate boot partition, don't worry about the boot one (I think you shouldn't need it.)

Now comes the bit that didn't work -- I was using a 32-bit cd, so couldn't chroot into the new system. So reboot back into the old system. Then,

#mdadm --assemble /dev/md0 /dev/sdb1
#mount /dev/mapper/raid-jaunty /mnt/jaunty
#cd /mnt/jaunty    
#mount /dev/mapper/raid-boot boot
#mount -o bind /dev/ dev
#mount -t proc none proc
#mount -t sysfs none sys
#mount -t tmpfs none tmp
#chroot .
#echo md >> /etc/modules
#echo lvm >> /etc/modules
#echo raid1 >> /etc/modules
#update-initramfs -k all -u
#apt-get install grub2

grub2 is needed as we're booting off lvm and raid

#update-grub2
#grub-install /dev/md0 --recheck

This would have been easier if we'd put the md, lvm and raid1 in /etc/modules before copying the os, and run update-initramfs then. I would advise doing that in the future. If you don't do it, then you can't boot, as it can't find /. Also, while you're there, update /etc/fstab on the new system to point to the right places. It's easiest to use UUIDs to identify things, as then you don't have to worry about paths.

Now reboot back into the new system, which should start fine. I haven't added the other drive to the array yet, will update when I've done that.

Once all of the data have been copied across, you can wipe the partition table on the first drive. Make sure you have all of the data copied, and backed up, as this will delete everything on your first drive.

Create a new partion exactly as large (or larger than) the raid partition you made already. Set its type to 0xfd again. Now we add the other drive into our array:

#mdadm --manage --add /dev/md0 /dev/sda1

Done. You can monitor the copying with

cat /proc/mdstat

Some sites I found helpful in doing this:

Posted Thu Sep 3 00:55:39 2009 Tags:

So, an NTFS-formatted hdd that had some files that I'd rather not lose started having some issues. Basically, the BIOS had a hard time detecting it (it slowed the boot process down a lot), and windows wouldn't boot, failing at various stages. As well, it was unmountable in ubuntu.

First, I put it in my computer, and set up a partition of the same size to copy to. Using ddrescue http://www.gnu.org/software/ddrescue/ddrescue.html (in package gddrescue in ubuntu), I copied the good data off it (slowly - this took about a week). Then, for a while, I let it have a go at recovering some of the data it had missed. Still, I was unable to mount the drive, getting errors about $MFT and $MFTMirr. So, looks like the master file table is damaged.

I had a look with testdisk http://www.cgsecurity.org/wiki/TestDisk, but this didn't help any. I eventually settled on using fls (in sleuthkit) to extract a list of viable filenames, and inodes.

#fls -r -u -p /dev/sda9 > /tmp/filenames

grep was used to cut the file to just the filenames I was interested in, and I disregarded those lines with *s in them, as they seemed to mean some corruption. I used a script from http://forums.gentoo.org/viewtopic-t-365703.html to do the rest, though as there were spaces in some of the directories, I was forced to modify the script so that it took all of the filename as one of the matches (I used sed, though cut would work better). Also, the indices in this were wrong for my input file, but that was easy enough to fix.

This recovered essentially all of the files; I'm sure there were a few it was unable to get, but I was still quite pleased.

Posted Fri Jun 5 08:05:37 2009 Tags:

Sometimes you might install (say) kubuntu-artwork-usplash, when really you want the ubuntu usplash screen (provided by usplash-theme-ubuntu). To restore the original,

sudo apt-get remove kubuntu-artwork-usplash

This has actually happened to me a few times. Before, I think I had to muck about with update-initramfs, update-alternatives, ... But now it seems much simpler. I suppose if you really want to keep the kubuntu one then

sudo apt-get install --reinstall usplash-theme-ubuntu

might work, though I haven't tried that.

Edit: Apparently it's kubuntu-artwork-usplash
Also, this was done on 8.10, might not work on later versions.

Posted Fri May 22 12:42:55 2009 Tags:

This blog is powered by ikiwiki.