moth/doc/install.txt

131 lines
3.7 KiB
Plaintext

Installing onto a thumb drive
=============================
This explains how to install Dirtbags Tiny Linux, and then a CTF
contest, onto a thumb drive. After you're done, you can continue to use
the thumb drive as a FAT-formatted storage device with (probably)
everything that could use it before.
Step 1: Partitioning
--------------------
Using cfdisk, parted, or fdisk, create two partitions on the device.
Partition 1 should be a bootable FAT16 (type 06), and take most of the
space. Partition 2 should be Linux (type 83), and take a smaller amount
of space: I use around 20MiB.
Here is what my 4G thumb drive looked like in cfdisk after partitioning:
Name Flags Part Type FS Type [Label] Size (MB)
-----------------------------------------------------------------------
sdb1 Boot Primary FAT16 3979.56
sdb2 Primary Linux 27.56
For the rest of this document, I'll refer to the whole device as $DRIVE,
the FAT partiton as $FATFS, and the EXT3 partition as $EXTFS.
# DRIVE=/dev/sdb
# FATFS=/dev/sdb1
# EXTFS=/dev/sdb2
Step 2: File system creation
----------------------------
The `packages` service of dbtl looks for a filesystem labeled
"PACKAGES", or whichever device is specified in the "packages=" kernel
command-line option. In the interest of simplicity, we'll just go with
"PACKAGES". This will get mounted under /mnt/packages.
# mkdosfs -n PACKAGES $FATFS
The second partition will be used for persistent storage: things like
scores, what puzzles have been solved, and tank history. The packages
service mounts the filesystem labeled "VAR", or the "var=" kernel
option, will be mounted under `/var`. We'll make this a journalled
filesystem to better handle nastiness.
# mke2fs -j -L VAR $EXTFS
You can use `blkid` to check that things worked properly:
# blkid
...
/dev/sdb1: LABEL="PACKAGES" UUID="0A17-A576" TYPE="vfat"
/dev/sdb2: LABEL="VAR" UUID="ae019f2b-d00a-4b19-803b-3d1c1fb47765" SEC_TYPE="ext2" TYPE="ext3"
Note: if dbtl can't mount /var, it uses a tmpfs.
Step 3: Making it boot
----------------------
I use a boot loader called "syslinux" to boot the kernel. It reads its
configuration file, kernel image, and initrd, off of a FAT.
First, you need a MBR:
# cat /usr/lib/syslinux/mbr.bin > $DRIVE
Next, set up syslinux. I like to make syslinux put all its bits in the
`/syslinux` directory, to keep the root clean.
# mount $FATFS /mnt/b
# mkdir /mnt/b/syslinux
# umount /mnt/b
# syslinux -d syslinux $FATFS
Step 4: Installing Linux
------------------------
Hopefully you have a dbtl kernel and initrd. These need to go on the
FAT.
# mount $FATFS /mnt/b
# cp dbtl.squashfs /mnt/b/syslinux/
# cp bzImage /mnt/b/syslinux/
Step 5: Telling syslinux what to boot
-------------------------------------
Syslinux looks for a file called `syslinux.cfg` for its instructions.
Feel free to make it as spiffy as you like. For instance, I carry
around a thumb drive with boot options for bare DBTL, DBTL with CTF, and
a Debian installer.
This is the minimum configuration needed to boot our contest.
# cat <<EOD >/mnt/b/syslinux/syslinux.cfg
> DEFAULT ctf
> LABEL ctf
> KERNEL bzImage
> INITRD dbtl.squashfs
> EOD
Step 5: Installing packages
---------------------------
Finally, you need to tell it what packages to load. The set of packages
determines the "personality" of the image. If you need help picking
packages, talk to me.
In this guide we'll just install everything.
# cp *.pkg /mnt/b
Step 6: Clean up
----------------
Unmount the volume and you're good to go!
# umount /mnt/b