Nov 02
smachadoLinux
You can use the dd command to create images of disk drives, removable usb disks and so on.
If the disk you are making the image of has multiple partitions you cannot simply type “mount -o loop <image> <mount point>” to mount the resulting disk image file.
First you need to find the partitions offsets with the sfdisk command:
# sfdisk -l -uB image.iso
Disk image.iso: cannot get geometry
Disk image.iso: 973 cylinders, 255 heads, 63 sectors/track
Warning: The partition table looks like it was made
for C/H/S=*/4/32 (instead of 973/255/63).
For this listing I'll assume that geometry.
Units = blocks of 1024 bytes, counting from 0
Device Boot Start End #blocks Id System
image.iso1 * 16 31231 31216 e W95 FAT16 (LBA)
image.iso2 32256 7265599 7233344 83 Linux
image.iso3 0 - 0 0 Empty
image.iso4 0 - 0 0 Empty
With this information you can calculate the starting offset of each partition by multiplying the start block by the block units in bytes (1024 bytes in this case):
# echo $(( 32256 * 1024 ))
33030144
# echo $(( 16 * 1024 ))
16384
Mounting is easy now, you specify the file system type and the partition offset. To mount the first partition on the example file above:
# mount -o loop,offset=16384 -t vfat image.iso /mnt/
To mount the second partition:
# mount -o loop,offset=33030144 -t ext2 image.iso /mnt/
Here you go! Hope it helps!
Nov 07
smachadoLinux
This was done on Ubuntu 10.10.
My laptop has a built in wifi device but it doesn’t supports the N norm.
I bought a new wifi device and I want network manager to ignore the built in.
To do that I added the following line to /etc/network/interfaces:
iface eth1 inet manual
This makes eth1 configuration manual and network manager ignores it.
Nov 07
smachadoHardware, Linux
This works with Ubuntu 10.10 and a usb wifi adapter with the Ralink rt2870 chipset.
The driver released with Ubuntu kernel 2.6.35-22-generic is version 2.1.0.0 and doesn’t work…
I downloaded version 2.4.0.1 from Ralink web site and compiled it the following way.
cd /usr/src
tar xvfj /tmp/2010_0709_RT2870_Linux_STA_v2.4.0.1.tar.bz2
cd 2010_0709_RT2870_Linux_STA_v2.4.0.1/
sed -i.bak "s/HAS_WPA_SUPPLICANT=n/HAS_WPA_SUPPLICANT=y/" os/linux/config.mk
sed -i.bak "s/HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n/HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y/" os/linux/config.mk
Changed file include/os/rt_linux.h line 1077 to:
#define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr) usb_alloc_coherent(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr)
And line 1078 to:
#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) usb_free_coherent(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)
Then compiled it:
make
Removed the Ubuntu released driver out of the way:
mv /lib/modules/`uname -r`/kernel/drivers/staging/rt2870 ~/.rt2870.bak
And installed the new one:
make install
Also removed the rt2800 module out of the way:
echo 'blacklist rt2800usb' >> /etc/modprobe.d/blacklist.conf
And rebooted my pc.
After the system booted up the new driver was loaded:
# modinfo rt2870sta | grep -i version
version: 2.4.0.0
srcversion: 5598BFE60F8B720D8D64062
vermagic: 2.6.35-22-generic SMP mod_unload modversions 686
Also I could connect to my wireless network at 130Mb/s (from the output of nm-tool).
May 16
smachadoLinux
There are some issues with version 2.1.0.81 of Skype on Ubuntu Linux (possibly other distributions as well).
The first issue is the default theme on Skype versus the one for Ubuntu. The default theme on Skype configured menu text with dark colors and the default Ubuntu theme configures menus with dark background. This makes the menu text mostly invisible.
Luckily by moving the mouse pointer over the menu the background highlight makes the text visible.
To change this permanently select “Options” from the Skype menu on the bottom left corner of the Skype window or press CTRL+O.
On the “General” section change the style from “Cleanlooks” to “Desktop Settings”. Close and restart Skype. Now you should see the menu text clearly.
The second issue is a problem with the video camera. This might or might not happen to you. It is a known problem with a workaround on the Skype release notes:
Skype does not work well with newer version of GSPCA Webcams driver (Linux Kernel >=2.6.27), possible workaround:
- Ubuntu 32 bit: install “libv4l-0″ package and launch Skype with: LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype
- Ubuntu 64 bit: install “lib32v4l-0″ package and launch Skype with: LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so skype
Other distributions might have the same library, but may have a different path.
In my case I already had the package ??libv4l-0 installed. If that’s not your case, or if you’re not sure, run on a terminal window:
sudo aptitude install libv4l-0
With the library installed you cannot simply start Skype from the start menu because the variable LD_PRELOAD needs to be customized for Skype.
So you have to start it from a terminal window or change Ubuntu menu. To change Ubuntu menu do the following:
- Open the System > Preferences menu and select “Main Menu”
- On the left select the “Internet” menu and on the right select “Skype”.
- Click “Properties”.
- On “Command:” replace the default command with: bash -c “LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype”
Now every time you start Skype your video should work.
Jan 27
smachadoLinux, Windows
When I installed Ubuntu Linux on my USB 8GB stick I didn’t noticed where grub was being installed. After a while I noticed that I could only boot my Windows installation (on the internal hard drive) via the USB 8GB stick.
What happened was that Ubuntu install changed the master boot record (MBR) of my internal drive and set it up to load the remaining of Grub (it is split in 2 because otherwise it wouldn’t fit on the MBR) from the USB storage.
To fix this I could use the Windows tools (fixmbr) but that requires me to boot using the recovery console and login as system administrator. Although using fixmbr would restore the Windows boot loader it would erase grub and make the USB storage not bootable.
What worked for me was MbrFix from sysint (www.sysint.no). REMARK: following the instructions below might make your computer unusable and eventually make you lose data.
First I got the list of partitions on my internal disk:
C:\>MbrFix.exe /drive 0 listpartitions
# Boot Size (MB) Type
1 Yes 76316 7 NTFS or HPFS
2 0 0 None
3 0 0 None
4 0 0 None
Next I saved my internal disk mbr to a file:
C:\>MbrFix.exe /drive 0 savembr Backup_MBR_0.bin
Next I listed my partitions on my USB disk drive:
C:\>MbrFix.exe /drive 1 listpartitions
# Boot Size (MB) Type
1 6440 131 Linux native (usually ext2fs)
2 1223 130 Prime
3 0 0 None
4 0 0 None
Now I want to put grub on my USB disk:
C:\>MbrFix.exe /drive 1 restorembr Backup_MBR_0.bin
You are about to Restore MBR,
are you sure (Y/N)? Y
Now let’s see how the partition looks like:
C:\>MbrFix.exe /drive 1 listpartitions
# Boot Size (MB) Type
1 Yes 76316 7 NTFS or HPFS
2 0 0 None
3 0 0 None
4 0 0 None
Ups! what happened there? My Linux partitions are gone… Let me try and fix this…
C:\>MbrFix.exe /drive 1 /partition 1 setpartitiontype 131
You are about to Set partition type,
are you sure (Y/N)? Y
Partition 1, type before: 7 NTFS or HPFS
Partition 1, type after: 131 Linux native (usually ext2fs)
C:\>MbrFix.exe /drive 1 /partition 2 setpartitiontype 130
You are about to Set partition type,
are you sure (Y/N)? Y
Partition 2, type before: 0 None
Partition 2, type after: 130 Prime
C:\>MbrFix.exe /drive 1 listpartitions
# Boot Size (MB) Type
1 Yes 76316 131 Linux native (usually ext2fs)
2 0 130 Prime
3 0 0 None
4 0 0 None
Looks like by setting the partition types back to their original values solved the problem.. yes it did.. ufff…
Now let’s restore the original Windows boot loader on the internal disk:
C:\Documents and Settings\machados\My Documents\Downloads>MbrFix.exe /drive 0 fixmbr
You are about to Fix MBR,
are you sure (Y/N)? Y
Now I could boot the system without the USB disk connected to my laptop.
I could also boot my Linux system by connected the USB disk and selecting “boot from usb storage” from my bios boot menu.
Nov 24
smachadoLinux, Virtualization
This procedure was tested on VirtualBox 3.0.12 for Windows and Ubuntu 9.10 Server 32 bit as Guest.
To be able to enjoy seamless integration between the host operating system and the VirtualBox guest you have to install VirtualBox Additional Tools on the guest operating system.
To do so, follow the steps:
Ensure you have a working Internet connection.
Step 1:
Install requirements for the Additional Tools:
sudo apt-get install gcc linux-source-virtual linux-headers-virtual dkms
Reboot after installation.
Step 2:
After logging in again find the Install Additional Tools option on the Devices menu.
Then on your guest mount the cdrom:
sudo mount /media/cdrom
Step 3:
Now install the tools:
cd /media/cdrom
./VBoxLinuxAdditions-x86.run
This will install the additional tools for virtual box.
Reboot your system and you’re all set.
Oct 27
smachadoLinux
I recently installed Ubuntu 9.10 Beta on a 4GB USB drive and was running my laptop from it. Although the Ubuntu default installation from the Live CD took less than the same installation from Fedora 12 I quickly found that I needed more space for the system (/home included). So I needed to move the system to a larger USB drive. This article explains how I moved my system from a 4GB USB drive to a 8GB USB drive including partition resizing.
My laptop has 2 limitations. One, it doesn’t have a CD-ROM drive. Second, it only has 3 USB ports. I got a Pioneer DVR-XD09 external hard drive. This drive takes 2 USB ports because of power requirements and that means that if I boot from the live CD I only have 2 remaining port for other external drive.
So I did the following:
Step 1:
Boot from the 4GB USB installation. Install gparted using Ubuntu Software Center from Applications menu.
Delete any partition existing on the 8GB USB drive using gparted. Make sure you select the correct drive.
Step 2:
Boot Ubuntu Live CD 9.10.
Step 3:
Mount the internal hard drive. It has enough space for an image of the USB installation.
Step 4:
Plug in the USB where the system is installed (4GB) . Unmount it.
Step 5:
Make an image to the internal harddrive with the dd command:
dd if=/dev/sdc/ of=/media/internal_drive/ubuntu-image
Step 6:
Unplug the 4GB USB drive. Plug in the 8GB USB drive. Unmount it.
Step 7:
Copy the Ubuntu image to the 8GB USB drive using dd:
dd if=/media/internal_drive/ubuntu-image of=/dev/sdc
Step 8:
Boot the system from the 4GB USB drive.
Plug the 8GB drive. Using gpartd remove the swap drive on the 8GB drive.
Use uuidgen and tune2fs to change the uuid of the root partition on the 8GB drive:
$ sudo -i
# uuidgen
0b2eaab8-fddb-41fc-85f9-12ff421ce984
# tune2fs -U 0b2eaab8-fddb-41fc-85f9-12ff421ce984 /dev/sdc1
Step 9:
Open gparted (or click Refresh Devices from GParted menu if you didn’t close GParted on last step).
Select the 8GB device. Select partition 1 (/dev/sdc1 in my ca.se). Press the mouse right button and select resize/move.
Drag the right edge of the partition until your happy with the free space for the swap partition. I left 1.20 GiB for the swap partition.
Right-click the unallocated space and select New.
On File System select linux-swap and press Add.
Back to GParted main window Apply the changes.
Close GParted.
Step 10:
Mount the new root partition using the Ubuntu Places menu.
On a terminal window change to the etc folder on that partition:
$ sudo -i
# cd /media/0b2eaab8-fddb-41fc-85f9-12ff421ce984/etc/
Check the previous UUID values on fstab:
# cat fstab | grep UUID=
# for a device; this may be used with UUID= as a more robust way to name
UUID=4c557514-3b1e-47b2-ad53-475e26f0e520 / ext4 errors=remount-ro 0 1
UUID=1042ef8e-bcf0-4890-a5b0-fe24a1aec625 none swap sw 0 0
Backup your fstab:
# cp fstab fstab.old
Get the new values:
# blkid /dev/sdc1
/dev/sdc1: UUID=”0b2eaab8-fddb-41fc-85f9-12ff421ce984″ TYPE=”ext4″
# blkid /dev/sdc2
/dev/sdc2: UUID=”d8989008-f39c-42f4-81ad-5c1a70c8b3c9″ TYPE=”swap”
Replace the old values for the new ones:
# sed ‘s/4c557514-3b1e-47b2-ad53-475e26f0e520/0b2eaab8-fddb-41fc-85f9-12ff421ce984/’ fstab.old > fstab
# sed ‘s/1042ef8e-bcf0-4890-a5b0-fe24a1aec625/d8989008-f39c-42f4-81ad-5c1a70c8b3c9/’ fstab > fstab.new
Now your fstab should have the new values:
# cat fstab | grep UUID=
# for a device; this may be used with UUID= as a more robust way to name
UUID=0b2eaab8-fddb-41fc-85f9-12ff421ce984 / ext4 errors=remount-ro 0 1
UUID=d8989008-f39c-42f4-81ad-5c1a70c8b3c9 none swap sw 0 0
Step 11:
Now you need to install GRUB on the 8GB USB drive.
First, the UUID of the root partition needs to be corrected also:
# cd ../boot/grub
# cp grub.cfg grub.cfg.old
# sed ‘s/4c557514-3b1e-47b2-ad53-475e26f0e520/0b2eaab8-fddb-41fc-85f9-12ff421ce984/’ grub.cfg.old > grub.cfg
Install grub on 8GB USB device:
First check if sdc is on device.map:
# cat device.map
(hd0) /dev/sda
(hd1) /dev/sdb
Add the missing device:
# echo “(hd2) /dev/sdc” >> device.map
# grub-setup -d ./ -r ‘(hd1,1)’ -m ./device.map ‘(hd2)’
# grub-install –root-directory=/media/0b2eaab8-fddb-41fc-85f9-12ff421ce984/ /dev/sdc
Step 12:
Shutdown the system. Remove the 4GB drive and plugin the 8GB drive.
Turn on the system.
Now I have 50% of free space instead of the 5% I had before migrating my system from an 4GB USB drive to an 8GB USB drive.
# tune2fs -U 0b2eaab8-fddb-41fc-85f9-12ff421ce984 /dev/sdc1
Aug 26
smachadoLinux, Shell
So I’m logged on to a Linux server using Bash shell over an ssh connection using Poderosa client.
When I time a long command for some reason the cursor at some point moves over to the beginning of the same line overwriting the command and everything becomes a mess. This is specially annoying while typing something you would like to cut and paste on an email for example.
So, what’s going on?
Bash has a variable that reports the number of columns setup:
$ echo $COLUMNS
80
Interesting, it is configured for 80 columns but my terminal window has 137 columns. Why is that?
There’s a Bash setting that will adapt the window size after each command:
checkwinsize
- If set, Bash checks the window size after each command and, if necessary, updates the values of
LINES and COLUMNS.
Let’s see what is it’s current value:
$ shopt -p | grep checkwinsize
shopt -u checkwinsize
That means it is disabled… Let’s enable it:
$ shopt -s checkwinsize
Now it is enable. Let’s check the COLUMNS value now:
$ echo $COLUMNS
137
Great!
Aug 20
smachadoLinux
The Redhat cluster manager uses a cluster configuration system (man ccs) which can be managed by the ccs_tool tool.
To change the configuration file /etc/cluster/cluster.conf you have to follow the steps outlined below on the first node of your cluster:
- backup current cluster.conf
- copy /etc/cluster/cluster.conf to say /tmp/cluster.conf
- make the necessary changes to /tmp/cluster.conf
- Change also the config_version attribute of the cluster tag at line 2 increasing the value by 1.
- run ccs_tool with the update option: ccs_tool update /tmp/cluster.conf
- if you’re using cman then run: cman_tool version -r <new config version>
If you don’t do item 5. and you’re using cman then your nodes will not be able to rejoin the cluster. To recover do the following:
- On the first node run cman_tool version -r <new config version>.
- On the other nodes restart the cman service.
- Restart ccsd
- Start rgmanager
Jun 03
smachadoLinux
These are the most usefull commands for Postfix queue management:
Print a queue: postqueue -p
Delete a message: postsuper -d <Queue ID>
Delete all messages: postsuper -d ALL
Display a message: postcat -q <Queue ID>
Older Entries