I want to know how to format a medium, such as a USB drive, to have a read-only ISO filesystem with the contents from a source (like an .iso file).
Standard ISO files are read-only. From a terminal window use genisoimage to create the .iso file. You will probably have to install genisoimage first.
The command in this example creates a standard ISO 9660 image from the documents found below ~/my-docs/:
shy@ultra:~$ genisoimage -o ~/usbstick.iso ~/my-docs
Read the genisoimage man pages for the options to create other than the standard ISO 9660 file systems (-J for Joliet, -R for RockRidge, -hfs for HFS+ISO 9660) and the -r option to change access rights (useful when used with other Linux systems).
Also note that Standard ISO only supports the 8.3 file name format and directory structures are restricted to a depth of 6 levels. With the -l and the -D options you can change this up to 31 characters and more than 6 levels.
Other options allow you to set a volume label (-V), to insert a copyright of up to 37 characters (-copyright) or to exclude up to 1000 individual files.