Sunday, August 30, 2009

Virtual machines

I finally tried to give kvm a try on a core 2 duo laptop. And what great fun it is. :D
Following the instruction from the great arch linux wiki, I installed the qemu package. Once I've done that I added myself to the kvm group:

# gpasswd -a abdza kvm

And then I loaded the kvm & kvm-intel module:

# modprobe kvm
# modprobe kvm-intel

To change the new kvm devices to the kvm group I modified the udev rules (had to create the file) at /etc/udev/rules.d/65-kvm.rules:

KERNEL=="kvm", NAME="%k", GROUP="kvm", MODE="0660"

I downloaded some cd iso's to boot install into the "virtual machines". First I tried ubuntu. Once the iso has been downloaded I had to create a virtual machine image with:

# qemu-img create -f qcow2 ubuntu 4194304

Not sure yet what all of that option is for but that basically would create an image named ubuntu with hard disk size of around 4GB. So I had to 'boot' that image with a cd (the iso image downloaded earlier):

# qemu-system-x86_64 --enable-kvm -hda ubuntu -m 512 -cdrom ~/Downloads/ubuntu-9.04-desktop-i386.iso -boot d -vga std -net nic,vlan=1 -net user,vlan=1

That would boot the machine with the cd "inside" it. It would run the live cd and allow you to install ubuntu on it and everthing. Then once it's already installed you can boot it without the cd with:

# qemu-system-x86_64 --enable-kvm -hda ubuntu -m 512 -boot c -vga std -net nic,vlan=1 -net user,vlan=1

Notice that the boot flag has changed to c. Now with the current `-net nic,vlan=1 -net user,vlan1` you will already get normal internet access from inside the virtual machine. But that virtual machine would not be able to access any other machines on your network and no other machines on your network can access your virtual machine neither. Reason being is that it is actually on it's own virtual network provided by qemu. I've read that you need to set up bridge and tun/tap to be able to make it appear on your normal network. Haven't tried it out yet. That would be for the next part.

Just a little side note. Whenever you click inside the virtual machine display, the mouse would be 'captured' by that machine. To release it like normal press ctrl+alt. That would release the mouse. Sometimes you might even like to view the machine full screen, to toggle that just use ctrl+alt+f.

Another small note, 4GB isn't enough to install Fedora 11. For that I created an 8GB virtual machine.

Another small note (my.. getting lots of small notes nowadays.. :P). To use sound in the 'virtual machine', add:

-soundhw all

to the options. Can even view and listen to youtube from a 'virtual' ubuntu.. :P

Wednesday, August 26, 2009

ZeroCD broadband modem

Just a quick note. Recently my father asked me to get a broadband modem to work again after I installed Ubuntu on his computer. The modem was basically a rectangular black stick. The only brand it wrote on it was CSL. And when you plugged it in, it showed up as a thumb drive. This was expected behaviour in Windows because then they'd click on the driver installation of the thumb drive. Once the driver is installed it would detect and register the modem. I had no idea what was supposed to be done with it to make it work. Untill I ran `lsusb` to get the vendor & product number. Vendor was 0x1c9e and product was 0x1001. And I actually googled THAT.

And then I within those pages I found this gem. The post clued me into a utility called usb-modeswitch which can actually switch the modes of the detected usb device. A search of ubuntu packages I found a deb for karmic. Eventhough the computer is Jaunty but it seems the package works. I had to modify the installed /etc/usb_modeswitch.conf and /etc/udev/rules.d/usb_modeswitch.rules so that it would enable the modem device (use the vendor & product number, just uncomment the right one). The udev rules also needed to add so that it would load the usbserial module when it detects the modem. But the problem with Jaunty is that the module is already compiled in and cannot be unloaded and loaded. So I actually had to modify the kernel line in /boot/grub/menu.lst to have 'usbserial.vendor=0x1c9e usbserial.product=0x6061' (the device change from 1001 to 6061) to make it work (according to the notes in a bug report, this behaviour has been reversed. So insyaAllah in Karmic it would be a module once more). So once it detected the modem on ttyUSB0,1,2 I was able to use wvdial to connect to celcom's broadband. Contents of /etc/wvdial.conf is:

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem = /dev/ttyUSB0
Phone = *99#
Idle Seconds = 300
Modem Type = Analog Modem
Stupid Mode = 1
Baud = 460800
Auto DNS = 1
Dial Command = ATDT
Ask Password = 0
ISDN = 0
Username = 'Celcom'
Password = 'Celcom'

And then to connect to celcom I just had to plug in the modem. And run:

sudo wvdial

And it would connect.

Saturday, August 8, 2009

Mounting LVM on external hard disk

Uh oh.. Fedora laptop cannot start. Need to copy data out of it. Take out hard disk, put into usb external hard disk adapter and BAM!!! when you try to mount it says:

mount: unknown filesystem type 'LVM2_member'

Alhamdullillah there's google. A quick search and I found this little gem which basically says to install the lvm2 package and as root do:

#pvs

which would display the partition lvm, for example:

PV VG Fmt Attr PSize PFree
/dev/sdb1 R51 lvm2 a- 10.72G 0
/dev/sdb5 R51 lvm2 a- 26.31G 32.00M

And then use the lvdisplay command to show the volumes like so:

#lvdisplay R51

Which would give more greater details about your lvm:

LV Name /dev/R51/home
VG Name R51
LV UUID VfabJ0-E2hS-HLw4-3Swc-tnkm-SesH-fFxlUB
LV Write Access read/write
LV Status available

And then you should use the LV Name to mount your partition. But... it didn't work for me.. a little bit more googling found this site which tells you to use the command:

# lvscan

Which would display the state of the LV. And all of mine was inactive. To activate them all do:

# vgchange -ay

And then alhamdullillah the partition was mountable. Fuh.. time to do some backup..

Is Blogging No Longer a Thing?

As I embark on my new journey to learn the Rust programming language, I find myself pondering—where have all the blogs gone? In search of pr...