Note: This will erase the data on your usb flash drive.
There is an instruction in the LFS site here that provides the information on how to create a bootable usb flash drive, and I quote
In summary and from the instructions above, to create the bootable usb flash drive we will:BOOTING FROM ISO IMAGE
If you want to boot this CD on a computer without a CD-ROM drive, follow the steps below.
Store the ISO image of this CD as a file on a partition formatted with one of the following filesystems: vfat, ntfs, ext2, ext3, ext4, jfs, reiserfs, reiser4, xfs
Copy the boot/isolinux/{linux,initramfs_data.cpio.gz} files from the CD to your hard disk
Configure the boot loader to load “linux” as a kernel image and “initramfs_data.cpio.gz” as an initrd. The following parameters have to be passed to the kernel:
where /dev/XXX is a partition where you stored the LiveCD image, and fs_type is the type of the filesystem on that partition. You may also want to add “rootflags=…” option if mounting this partition requires special flags.rw root=iso:/dev/XXX:/path/to/lfslivecd.iso rootfstype=fs_type
If there is only Windows on the target computer, please use grub4dos as a boot loader. It is available from http://sourceforge.net/projects/grub4dos.
MAKING A BOOTABLE USB DRIVE
Install GRUB on a flash drive, then follow instructions in the “BOOTING FROM ISO IMAGE” above, using a partition on your flash drive. The following tips will ensure that the flash drive is bootable in any computer:
- Use the persistent symlink such as “/dev/disk/by-uuid/890C-F46A” to identify the target partition.
- Add “rootdelay=20” to the kernel arguments.
1. Format the flash drive.
2. Install grub on the flash drive.
3. Create a grub config file.
4. Copy the livecd iso to the flash drive.
5. Mount the livecd iso.
6. Copy the files /boot/isolinux/{linux, initramfs_data.cpio.gz} to the flash drive.
7. Edit the grub.cfg file.
Now for the details:
--> FORMAT THE FLASH DRIVE:
Before I format the flash drive, I delete everything from my flash drive by deleting and then creating a new partition. To delete/create a new partition:
# fdisk /dev/sdb // where /dev/sdb is my flash drive
Inside fdisk:
d - delete the partition
o - create a new empty dos partition table (mbr)
n - add a new partition, then accept all the defaults
w - write then exit.
To format the flash drive
# mkfs.ext2 /dev/sdb1 // I first try to use ext4 as the file system but
// it won't boot complaining about the filesytem
// So, I format the drive as ext2.
--> INSTALL GRUB ON THE FLASH DRIVE:
To install grub on the flash drive:
# grub-install --root-directory=/media/usb0 /dev/sdb
where: /media/usb0 is the mount point of the flash drive.
--> CREATE A GRUB CONFIG FILE:
To create a grub.cfg file:
# grub-mkconfig -o /media/usb0/boot/grub/grub.cfg
Note: the grub.cfg file that will be created will contain the files similar to
the linux system that you are using, thus the need to edit the file.
--> COPY THE LIVECD ISO TO THE FLASH DRIVE:
To copy the livecd iso go to the directory where you put your livecd iso then:
# cp lfslivecd.iso /media/usb0
--> MOUNT THE LIVECD ISO:
To mount the livecd iso:
First create a mount point on your present linux system.
# mkdir /mnt/mount_point
where: mount_point is any name that you like.
Then mount the lfslivecd iso:
# mount -o loop -t iso9660 lfslivecd.iso /mnt/mount_point
--> COPY THE FILES /boot/isolinux/{linux,initramfs_data.cpio.gz} TO THE FLASH DRIVE:
To copy the two files to the flash drive, go inside the directory where you mount the lfslivecd:
# cd /mnt/mount_point/
Then copy the two files:
# cp boot/isolinux/{linux,initramfs_data.cpio.gz} /media/usb0
-->EDIT THE GRUB.CFG FILE:
Editing the grub.cfg file is done because when we create the grub.cfg file with
grub-mkconfig command, the created grub.cfg file reflects the grub.cfg file of the system that we are working on. And also to reflect the instructions by the site as quoted above:
The edited grub.cfg file should look something like this:
menuentry 'Linux From Scratch LIVE USB' {
search --no-floppy --fs-uuid --set=root fb90e35b-5223-489e-9a21-01d2e343f9
echo 'Loading Linux From Scratch....'
linux /linux rw root=iso:/dev/sdb1:/lfslivecd.iso rootfstype=ext2 rootdelay=20
initrd /initramfs_data.cpio.gz
}
where: fb90e35b-5223-489e-9a21-01d2e343f9 is the uuid of my flash drive
you can find the uuid by:
# blkid
That's it. This are what I did to create my bootable LFS live USB.