You will need to download the latest .iso from the Damn Small Linux site.
Also, I am running ubuntu 9.10 as my host OS but you should be able to run any linux/unix operating system and the commands should work.
1) Plug in your usb device.
2) Next, open up the terminal application and enter the following command. By issuing sudo -i command, you are assuming the identity of root for the rest of the session.
3) Run the fdisk -l command to look at the devices installed on your system.
4) My output is posted below.
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x355aa9d3
Device Boot Start End Blocks Id System
/dev/sda1 * 1 9407 75561696 7 HPFS/NTFS
/dev/sda2 9408 18813 75553695 5 Extended
/dev/sda3 18814 19451 5124735 1c Hidden W95 FAT32 (LBA)
/dev/sda4 19452 19457 48195 ef EFI (FAT-12/16/32)
/dev/sda5 9408 18039 69336508+ 83 Linux
/dev/sda6 18040 18813 6217123+ 82 Linux swap / Solaris
Disk /dev/sdb: 4047 MB, 4047502848 bytes
4 heads, 32 sectors/track, 61759 cylinders
Units = cylinders of 128 * 512 = 65536 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 61759 3952560 b W95 FAT32
First you will notice my internal hard drive and the several partitions that are written on it.
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x355aa9d3
Device Boot Start End Blocks Id System
/dev/sda1 * 1 9407 75561696 7 HPFS/NTFS
/dev/sda2 9408 18813 75553695 5 Extended
/dev/sda3 18814 19451 5124735 1c Hidden W95 FAT32 (LBA)
/dev/sda4 19452 19457 48195 ef EFI (FAT-12/16/32)
/dev/sda5 9408 18039 69336508+ 83 Linux
/dev/sda6 18040 18813 6217123+ 82 Linux swap / Solaris
5) We are primarily concerned about the following segment.
Disk /dev/sdb: 4047 MB, 4047502848 bytes
4 heads, 32 sectors/track, 61759 cylinders
Units = cylinders of 128 * 512 = 65536 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 61759 3952560 b W95 FAT32
6) Since I only have two drives installed on my system (Internal HD, and USB thumb drive) we can logically deduce that /dev/sdb is the thumb drive, and for several reasons. The primary one being that I am using a 4GB drive, and the output next to /dev/sdb shows the total amount of memory.
7) Unmount the /dev/sdb1 partition
root@jetBook:~# umount /dev/sdb1
8 ) Run the following command
root@jetBook:~# fdisk /dev/sdb
Which will produce this prompt.
9) Delete any existing partitions.
Command (m for help): d
Selected partition 1
9a) Please note, you may get a prompt asking you for a number selection (1-4). You will need to keep going through this step in order to delete ALL of the existing partitions on the usb device. Example below assumes there are two partitions on the usb device.
Command (m for help): d
Partition number (1-4): 1
Command (m for help): d
Selected partition 2
10) Once the partition(s) are deleted, create a new one. Type the letter ‘n’ and press return. ‘n’ is for “New” partition.
***) Enter the letter ‘p’ for primary and press return.
Command action
e extended
p primary partition (1-4)
p
11) Select number ’1′ for the partition number definition.
Partition number (1-4): 1
12) Enter ’1′ to designate the first cylinder.
First cylinder (1-61759, default 1): 1
13) Enter the large default number so that we can use the entire disk. In my case, the ending cylinder number is 61759.
Last cylinder, +cylinders or +size{K,M,G} (1-61759, default 61759): 61759
14) Make the drive bootable
Command (m for help): a
Partition number (1-4): 1
15) Show the definition table by entering the letter ‘p’ from the prompt. This is to make sure there is an asterisk under the ‘boot’ column.
Command (m for help): p
Disk /dev/sdb: 4047 MB, 4047502848 bytes
4 heads, 32 sectors/track, 61759 cylinders
Units = cylinders of 128 * 512 = 65536 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 61759 3952560 83 Linux
16) Write the changes to the disk by entering the letter ‘w’
Command (m for help): w
The partition table has been altered!
16a) Note: you may get the following error. Don’t worry, it is not a big deal but it does mean you probably didn’t correctly unmount the device in step (STEP #7).
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
If this happens, it is now like a choose your own adventure book. You can…
- Start over
- Go back to step #7
- Or remember that things may be screwed up, and proceed just to see if you can
Choose wisely…
17) Format the disk using ext2. !!!WARNING!!! if you mess this up, you can easily format the root partition of YOUR internal hard drive.
root@jetBook:~# mke2fs /dev/sdb1
Which will produce the following output.
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
247008 inodes, 987989 blocks
49399 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1015021568
31 block groups
32768 blocks per group, 32768 fragments per group
7968 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
18) Make a usb directory inside /mnt
NOTE: if you are using a different flavor of linux/unix you will have to adjust the tutorial accordingly.
root@jetBook:~# mkdir /mnt/usb
19) mount the usb thumb drive partition to the newly created directory. In my case it is the 1st partition, sdb1.
root@jetBook:~# mount /dev/sdb1 /mnt/usb
20) Create an iso directory to eventually mount the dsl-4.4.10.iso
root@jetBook:/# mkdir /mnt/iso
21) Find the directory where your damn small linux .iso file exists. Since I used firefox3.5 to download the .iso, my file is in the ‘Downloads’ directory.
/home/YOUR_USERNAME/Downloads
22) Mount the .iso to the directory. Conceptually, this allows you access to the files stored in the .iso as if it were a common directory on your file system.
root@jetBook:# mount -o loop /home/YOUR_USERNAME/Downloads/dsl-4.4.10.iso /mnt/iso
23) Copy all the files from /mnt/iso into /mnt/usb. We issue the ‘-p’ flag so that we keep the existing permissions. We issue the ‘-R’ flag so the the copy is recursive.
root@jetBook:# cp -pR /mnt/iso/* /mnt/usb
24) Install grub into the boot block of /dev/sdb.
root@jetBook:# grub-install --no-floppy --root-directory=/mnt/usb /dev/sdb
25) You should get the following output.
Probing devices to guess BIOS drives. This may take a long time.
Installing GRUB to /dev/sdb as (hd1)...
Installation finished. No error reported.
This is the contents of the device map /mnt/usb/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(hd0) /dev/sda
(hd1) /dev/sdb
26) Create the file menu.lst in the /mtn/usb/boot/grub/ folder.
root@jetBook:/# vi /mnt/usb/boot/grub/menu.lst
28) Here is the contents of my menu.lst file and you are more than welcome to copy/paste the contents. There is one issue though, your hardware may not lay itself out like mine, so some further troubleshooting may be involved.
title Damn Small Linux
root (hd0,0)
kernel /boot/isolinux/linux24 root=/dev/sda1 ro lang=us toram noeject frugal
initrd /boot/isolinux/minirt24.gz
boot
EOF
29) At this point, you should be able to issue the following four commands in order to cleanup your file system
root@jetBook:# umount /mnt/iso
root@jetBook:# umount /mnt/usb
root@jetBook:# rm -R /mnt/usb
root@jetBook:# rm -R /mnt/iso
And from here on, it is all you. Just reboot your machine, and go into your BIOS in order to make sure you are booting from the usb device.
Please understand, in step #28 where you potentially copy/paste my ‘menu.lst’ settings, it is an area where you could run into problems. I will try and cover some information on the GRUB boot loader eventually. Because GRUB seems to mistify so many people, yet it is incredibly powerful.