Ubuntu Live USB

I bought a Vantec NexStar CX case to use a 2.5" HDD as an external drive.
Since the HDD has plenty of space and I always need a Linux Live CD to fix something, I decided to install Ubuntu at the beginning of this HDD.
This process is quite simple in Ubuntu, which has a “Disk Creator”, but here in Arch Linux I would need to download a similar program to “Disk Creator” or do it manually. Here I show how to do it manually.
Download the .iso image available at http://www.ubuntu.com/download
Install
syslinuxandms-sysjulio@julio-acer ~> sudo pacman -S syslinux mtools julio@julio-acer ~> yaourt ms-sysConnect the external HDD to a USB port and check the device using
fdisk -l(/dev/sdchere)julio@julio-acer ~ $ sudo fdisk -l Disk /dev/sdc: 500.1 GB, 500107862016 bytes 171 heads, 40 sectors/track, 142803 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000de160 Device Boot Start End Blocks Id System /dev/sdc1 2048 2099199 1048576 b W95 FAT32Make sure the HDD does not contain anything important. Format it, create a partition of at least 1 GB, and mark it as bootable.
julio@julio-acer ~> sudo fdisk /dev/sdc Command (m for help): d Selected partition 1 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4, default 1): 1 First sector (2048-976773167, default 2048): 2048 Last sector, +sectors or +size{K,M,G} (2048-976773167, default 976773167): +1G Command (m for help): t Selected partition 1 Hex code (type L to list codes): c Changed system type of partition 1 to c (W95 FAT32 (LBA)) Command (m for help): a Partition number (1-4): 1 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. Syncing disks.Use mkfs to create a FAT32 filesystem:
julio@julio-acer ~ $ sudo mkfs.vfat -F 32 /dev/sdc1Rewrite the MBR
julio@julio-acer ~ $ sudo dd if=/dev/zero of=/dev/sdc bs=446 count=1 1+0 records in 1+0 records out 446 bytes (446 B) copied, 0.00234799 s, 190 kB/sjulio@julio-acer ~ $ sudo ms-sys -s /dev/sdc Public domain syslinux master boot record successfully written to /dev/sdcMount the external HDD
julio@julio-acer ~ $ sudo mount /dev/sdc1 /media/pendrive/Install GRUB on the first partition
julio@julio-acer ~ $ sudo grub-install - -no-floppy - -root-directory=/media/pendrive/ /dev/sdcMount the .iso image
julio@julio-acer ~ $ sudo mount -o loop ubuntu-11.04-desktop-i386.iso /media/iso/ mount: warning: /media/iso/ seems to be mounted read-only.Copy the kernel and the initrd from the .iso to the /boot folder
julio@julio-acer ~> sudo cp /media/iso/casper/{vmlinuz,initrd.lz} /media/pendrive/boot/Reserve a 512MB space for the casper-rw file, which will store all files and modifications made in the system.
julio@julio-acer ~> sudo dd if=/dev/zero of=/media/pendrive/casper-rw bs=1M count=512 512+0 records in 512+0 records out 536870912 bytes (537 MB) copied, 1.92945 s, 278 MB/sjulio@julio-acer ~> sudo mkfs.ext3 -F /media/pendrive/casper-rw mke2fs 1.41.14 (22-Dec-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 32768 inodes, 131072 blocks 6553 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=134217728 4 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 38 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.Create a second partition to store the .iso
julio@julio-acer ~> sudo fdisk /dev/sdc Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4, default 2): 2 First sector (2099200-976773167, default 2099200): Using default value 2099200 Last sector, +sectors or +size{K,M,G} (2099200-976773167, default 976773167): +730M Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.Copy the files from the .iso to the second partition
julio@julio-acer ~> sudo dd if=ubuntu-11.04-desktop-i386.iso of=/dev/sdc2 1403484+0 records in 1403484+0 records out 718583808 bytes (719 MB) copied, 116.572 s, 6.2 MB/sEdit the Grub menu
julio@julio-acer .../pendrive/boot/grub> cat menu.lst default 0 timeout 10 title Ubuntu (Live) root (hd0,0) kernel /boot/vmlinuz boot=casper file=/preseed/ubuntu.seed persistent initrd /boot/initrd.lzUnmount the disk, set the BIOS to boot from USB, and test your live USB.
Links

I’m a Brazilian computer engineer based in Germany, passionate about tech, science, photography, and languages.
I’ve been programming for about two decades already, exploring everything from mobile apps and web development to machine learning. These days I focus on cloud SRE and data engineering.
I volunteer in the open source and Python communities, helping organize PyCon DE and PyData Berlin, mentoring, and contributing with code and translations.
On my blog, I share Linux tips, setup guides, and personal notes I’ve written for future reference. I hope others find them helpful as well. The content is available in multiple languages.
Browse my gallery for some of my photography.
Away from the keyboard, you’ll find me at concerts, playing clarinet, cycling, scuba diving, or exploring new places, cultures, and cuisines.
Always happy to connect! 🙂