Skip to main content

Creating Linux filesystem images

I’m sharing the following script which creates a filesystem image of desired size (in kBs) for use in building an installUSB/LiveUSB Pen-drive image or for similar uses. I have written this in my effort to create a installUSB image for Debian-Lenny. Hope it is of some help to somebody:-). You may copy the italicized/quoted text below into a new text file and save it as a shell script (.sh extension). Don’t forget to set its executable bit;-) and also, please don’t forget to leave your comments/feedbacks.

Note: It currently creates images for fat16, fat32, ext2 and ext3 and you should run it as root/superuser (sudo). You can extend this script to generate fs images for other filesystem types as well.

Usage: script-name fs-type output-file required-size-kB
Ex.,; ./mk-hdd-img.sh ext3 myimage.img 600000
This will create a filesytem image called myimage.img of type ext3 and of size ~600MB.

#!/bin/bash

if [ $UID -ne 0 ]; then
    echo “You need superuser/root privileges to run this.”
    exit 1
fi

if [ $# -ne 3 ]; then
    echo “Usage: `basename $0` “
    exit 2
fi

BLOCK_SIZE=1024
HDD_IMG_NAME=”$2”
IMG_KB_SIZE=$3

make_img () {
    if [ -e “$HDD_IMG_NAME” ]; then
        echo “Failed!”
        echo “Image file $HDD_IMG_NAME already exits!!!”
        echo “Please remove the image and try again.”

        exit 4
    fi

    dd if=/dev/zero of=$HDD_IMG_NAME bs=$BLOCK_SIZE count=$IMG_KB_SIZE
    sync; sleep 2
}

echo “Trying to create HDD image with $1 filesystem…. “

case “$1” in
    fat16)
        make_img;
        mkfs.vfat -F 16 “$HDD_IMG_NAME” $IMG_KB_SIZE &> /dev/null 2>&1;;
    fat32)
        make_img;
        mkfs.vfat -F 32 “$HDD_IMG_NAME” $IMG_KB_SIZE &> /dev/null 2>&1;;
    ext2)
        make_img;
        mkfs.ext2 -F -b $BLOCK_SIZE “$HDD_IMG_NAME” $IMG_KB_SIZE &> /dev/null 2>&1;;
    ext3)
        make_img;
        mkfs.ext3 -F -b $BLOCK_SIZE “$HDD_IMG_NAME” $IMG_KB_SIZE &> /dev/null 2>&1;;
    *)
        echo “Failed!”
        echo “Filesystem of type $1 is not supported!”
        echo “Only fat16, fat32, ext2, ext3 are supported”
        exit 3;;
esac

echo “Done.”
exit 0

Comments

Popular posts from this blog

Using USB CDMA modem to setup a home/private WiFi network

The idea here is to give a ‘how-to’ on setting up a a home WiFi network using mobile, CDMA based USB modem, hoping that bandwidth that you obtain from this service is satisfactory :-)

Hardware Requirements:
Linux PC/Notebook/Netbook
Wifi Access point connected to ethernet port of the Linux box
CDMA-1x USB Modem (Device used: Reliance M880)

Software/OS Requirements:
Linux Operating System with “usbserial” and “cdc_acm” device driver modules
“pppd”, “wvdial”, “iptables”, and “dnsmasq” applications and their dependencies installed on the System

Setup: The steps followed in setting up this CDMA based connectivity can be split into 3 steps, as follows.
Configuring kernel modules for auto-loading at bootupConfiguring “wvdial” application for dialup / ppp connectionInitializing / starting the CDMA modem connectionSetting up “iptables” for NAT forwardingSetting up “dnsmasq” for resolving DNS and as DHCP server
Configuring kernel modules for auto-loading at bootup
Open a terminal and type the co…

Debian Squeeze and Mac OSX Lion - Dual boot

With Mac OSX Snow Leopard, things were much simpler to install and run a Linux operating system just by using rEFIt boot manager utility, on my Mac Mini(4,1 Mid-2010 model). With the introduction of Lion, Apple has introduced a hidden, OS recovery partition. In total, there will be 3 partitions for Mac OSX alone, for Lion. They are ESP (EFI System Partition), Mac OSX installation partition and, the OS recovery partition. Also, as per the GUID Partition Table(GPT) which Mac uses, there can be maximum of 4 primary partitions, with no scope for Extended partitions like in typical MSDOS Partition Table setup. It is also recommended to follow GPT when using Mac.

With all these constraints, I'm actually left with one partition where I can install and run GNU/Linux (in this case, Debian Squeeze). I didn't try resizing an existing Mac OSX installation partition and creating an Ext4 partition for Linux. Rather, I choose to go for fresh installation. You can try with the resizing method…

Creating GRUB/Syslinux splash images

GRUB splash image creation:
Open GIMP application.Create an image of size 640x480 pixels. You may open an existing image and resize it too.Reduce the number of colors to 14 by selecting menu item “Image->Mode->Indexed”. Don’t use any color dithering.Save the resulting image as splash.xpm and close GIMP.Compress the image file by running; gzip splash.xpmCopy the resulting splash.xpm.gz file to /boot/grub.Run update-grub to upgrade the grub configuration to include this splash image.
Syslinux splash image creation:
Open GIMP application.Create an image of size 640x480 pixels. You may open an existing image and resize it too.Reduce the number of colors to 14 by selecting menu item “Image->Mode->Indexed”. Don’t use any color dithering.Save the resulting image as splash.ppm and close GIMP.Install the package syslinux-common by running; apt-get install syslinux-common as sudo/root. Convert the saved image to syslinux format by running; ppmtolss16 ‘#ffffff=7’ <splash.ppm >spl…