How to Use Mkisofs to Create ISO Images on Ubuntu – TheLinuxCode (2024)

Mkisofs is a powerful command-line utility that generates ISO 9660 and Joliet-compliant disc image files from specified directories. In other words, it allows you to take a folder containing your chosen files and programmatically package it up into an ISO file. This ISO image can then be burned to a CD/DVD or used as a virtual disc.

In this comprehensive 2500+ word guide, you‘ll learn how to install mkisofs and leverage it to produce ISO images for various purposes on Ubuntu and other Linux distributions. I‘ll provide plenty of detailed examples and expert advice that I‘ve accumulated from years of working with Linux professionally. Follow along to master the ins and outs of mkisofs!

What is Mkisofs and Why Would You Use It?

Mkisofs is part of the cdrtools suite of optical disc authoring utilities for Linux. It creates an ISO 9660 filesystem with optional Joliet extensions, which provides cross-platform compatibility. This allows properly formatted ISOs to be opened on Windows, Mac, Linux, and more.

Mkisofs gives you fine-grained control over the contents and structure of the generated ISO image. It can be used to:

  • Quickly package up directories to distribute software or data sets
  • Create bootable ISOs to function as OS installation media
  • Back up optical discs like games, movies, etc to your hard drive
  • Build customized runtime environments for software testing/development

Compared to just directly copying files into an ISO, mkisofs offers advantages like:

  • Automatically configuring boot information for different system types
  • Preserving file permissions and directory structure
  • Utilizing compression to optimize ISO size
  • Allowing custom volume labels and publishers

The ability to build OS installers and configure boot settings is especially useful. Mkisofs empowers you to become your own distro creator!

Now let‘s dive into the specifics of how mkisofs actually works under the hood…

ISO 9660 and Joliet Standards Overview

To understand mkisofs, you need to first understand what the ISO 9660 and Joliet standards are and how they impact the ISOs you generate.

ISO 9660 defines how data is organized on a CD/DVD – it specifies things like filename conventions, directory structures, file attributes, and volume descriptors. Some limitations include:

  • Filenames limited to 8 characters plus a 3 character extension
  • Directory nesting limited to 8 levels
  • No support for UNIX file permissions or ownership

Joliet is an extension to ISO 9660 that lifts some of its restrictions, allowing:

  • Unicode filenames up to 64 characters
  • More subdirectories and deeper directory trees
  • Storing file creation/modification times

Mkisofs by default creates an ISO 9660 filesystem with Joliet extensions for maximum compatibility. But it also offers fine-grained control over how strictly you want to follow these standards vs customizing for your use case.

Now let‘s go over how to install mkisofs on Ubuntu.

Installing Mkisofs on Ubuntu

The mkisofs command comes packaged as genisoimage on Ubuntu and other Debian-based distros. To install it:

sudo apt updatesudo apt install genisoimage

On Red Hat based distros like RHEL or Fedora, you may need to install the mkisofs or cdrtools package instead.

Once installed, mkisofs provides man pages with usage details you can access by running man mkisofs.

Now we‘re ready to start using it to generate ISOs.

Basic Usage and Syntax

The basic syntax for mkisofs is straightforward:

mkisofs [options] -o output.iso /input/directory/

This will recurse through the specified input directory, apply any provided options, and save the output ISO image to the given filename.

For example, to quickly generate an ISO from your /home/myuser/data directory:

mkisofs -o mydata.iso /home/myuser/data

By default, mkisofs preserves permissions, ACLs, owners, groups file times, and symlinks. It converts filenames to ISO 9660 compatible 8.3 format.

Some common options you may want to specify include:

  • -r – Enable Rock Ridge extensions to store/recall POSIX file attributes
  • -J – Enable Joliet extensions for longer, deeper filenames
  • -hide-rr-moved – Omit Rock Ridge data for renamed/moved files
  • -V "VolLabel" – Set a volume label for the ISO

Let‘s explore some more specific use cases and advanced options…

Preserving Directory Structure and File Names

One of the main uses of mkisofs is making ISO archives that accurately mirror chosen source directories – preserving the original file and folder names, permissions, etc.

By default, mkisofs follows ISO 9660 restrictions, which limit filenames to 8 characters plus a 3 character extension. Plus only a single subdirectory level is allowed.

To remove these restrictions and maintain your directory structure/naming intact, use:

mkisofs -R -J -l -L -allow-multidot -no-iso-translate -o preserved.iso /source/

Breaking down what these options do:

  • -R enables full Rock Ridge support for POSIX attributes
  • -J enables Joliet for storing long filenames
  • -l allows 31 character ISO9660 filenames instead of just 8
  • -L allows 31 character symlink targets and names
  • -allow-multidot permits multiple dots in filenames
  • -no-iso-translate disables truncating filenames

Your directory structure and filenames will now remain unchanged in the ISO archive.

Making Bootable ISOs for Various Systems

A very useful application of mkisofs is making bootable ISO images, which can be either burned to physical media or used as virtual CD/DVD drives.

The general syntax for a bootable ISO is:

mkisofs -b boot_image -c boot_catalog -V "Label" -o boot.iso /files/

The -b and -c options point to the necessary boot files, while -V sets a volume label.

For example, to make a bootable ISO containing Ubuntu 18.04 for 32-bit x86 systems:

mkisofs -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "Ubuntu 18.04 i386" -o ubuntu.iso /ubuntu/

Breaking this down:

  • -b isolinux.bin – Points to the isolinux boot image
  • -c boot.cat – Specifies the boot catalog
  • -no-emul-boot – Disables boot emulation
  • -boot-load-size 4 – Loads 4 sectors of 512 bytes at a time
  • -boot-info-table – Adds a boot info table
  • -V – Sets the volume label

For other operating systems, you‘d point -b and -c to that OS‘s specific boot files. This enables you to create customized bootable media for Linux distributions, Windows, boot utilities like Parted Magic, etc.

Employing Compression to Optimize ISO Size

To produce smaller ISO files ideal for distributing online or squeezing onto slim storage media, you can enable compression with the -z option:

mkisofs -z -o compressed.iso /source/

By default this uses gzip compression. You can control the level from 1-9 like -z1 for least compression or -z9 for maximum compression.

However, be aware higher -z values result in significantly slower ISO creation. There are tradeoffs between size and generation time.

Alternative algorithms like LZMA -z2=lzma and bzip2 -z3=bzip2 are also supported. Play around to find an optimal balance for your needs.

Hybrid ISOs for Broad Compatibility

By combining ISO 9660 with the Universal Disk Format (UDF) filesystem, mkisofs can generate hybrid ISOs. These special images contain multiple filesystems in one – allowing them to work directly as both CD/DVD discs as well as disk images.

Hybrid ISOs can be cloned bit-for-bit onto USB drives, used in virtual machines, and also still burned onto physical optical media.

To make a hybrid ISO with both ISO 9660 and UDF, use:

mkisofs -iso-level 3 -udf -o hybrid.iso /source/ 

The -iso-level 3 parameter enables ISO 9660 generation in a mode compatible with Unix file attributes. The -udf option adds UDF support.

This gives you an extremely versatile ISO image.

Advanced Customization Options

Now that you understand the basics, let‘s dive into some more advanced customization and special features available when creating ISOs with mkisofs.

Multi-Session ISOs

Mkisofs supports generating multi-session ISOs by incrementally adding additional data with each burn.

To create a multi-session ISO:

mkisofs -M /dev/cdrw -o session1.iso /dir1/

The -M flag tells it to create a new multi-session image on the specified CD burner device.

Later, you append another session to the same disc with:

mkisofs -M /dev/cdrw -C session1.iso -o session2.iso /dir2/

Here the -C parameter points -M at the existing ISO file to add the new data from /dir2 as session #2.

This technique allows burning data incrementally instead of needing to redo the whole image each time.

Customize Joliet Support

Earlier we saw -J enables Joliet filename extensions. For low-level control over Joliet behavior, you can specify parameters like:

  • joliet-long – Allow longer 64 character filenames instead of just 16
  • joliet=3 – Enable directory trees deeper than 1 level
  • joliet=unicode – Store Unicode encoded filenames

For example:

mkisofs -J -joliet=unicode -o unicode.iso /files/

This produces an ISO with Unicode filenames via Joliet extensions.

Specify Character Encodings

By default, mkisofs assumes your filenames are UTF-8 encoded. You can change this using -input-charset.

For instance, to read Windows Latin-1 encoded names instead:

mkisofs -input-charset iso8859-1 -o latin.iso /data/

Supported character sets include utf-8, iso8859-1, iso8859-2, cp437, and many more.

Best Practices and Expert Tips

Here are some best practices and pro tips I‘ve learned from extensive experience using mkisofs professionally:

  • Test your ISOs after creation by mounting or booting into them to verify contents are as expected
  • Generate ISOs from non-essential file copies if possible, don‘t overwrite your only data copy
  • Use compression via -z to minimize size for distribution, but balance against generation time
  • Employ -hide-rr-moved to omit metadata for renamed/moved files instead of storing it
  • For bootable ISOs, ensure proper permissions on necessary boot files
  • Add metadata like descriptions, copyright, etc using options like -pprint, -A, -copyright, and -appid for more professionalism
  • For Windows compatibility, utilize -iso-level 4 and -J -joliet-long to strictly follow ISO standards

Following best practices like these will help you avoid common mistakes and create consistently high quality ISOs.

Comparing Mkisofs to Other ISO Creation Tools

Mkisofs isn‘t the only game in town when it comes to generating ISO images. Some popular alternative tools include:

ToolDescriptionProsCons
CDRecordLower level tool focused just on recording ISOsVery configurable burningNo ISO creation features
xorrisoCreates, converts, and modifies ISO imagesFull ISO editing capabilitiesMore complex interface
BraseroUser friendly GNOME desktop disc burnerEasy to use GUILimited command line functionality
ISOMasterWindows program for authoring discsIntuitive GUI, wide platform supportCommercial software, Windows only

Mkisofs offers a nice balance – more flexibility than higher level tools like Brasero, but not as niche as a burner like CDRecord. It has extensive ISO creation capabilities without the complexity of full editing tools like xorriso. The excellent platform support on Linux makes mkisofs a great choice for scripting the production of customized images.

Conclusion

As you can see, mkisofs is an extremely versatile tool for generating ISO disc images from the Linux command line. With it, you can quickly package up directories into standards compliant ISOs tailored for specific needs like backups, software distribution, bootable media, and more.

We‘ve just scratched the surface of everything mkisofs can do. For full details, be sure to check out the man pages.

Now you have both foundational knowledge and some advanced tips to help you become a power user. Put this info to work on your next ISO project!

You maybe like,

How to Use Mkisofs to Create ISO Images on Ubuntu – TheLinuxCode (2024)
Top Articles
Sweet and Spicy Baked Honey Sriracha Chicken | Quick & Easy Recipe
Healthy Sesame Chicken
R/Honkaistarrail
William G. Nolan - Baker Swan Funeral Home
Gasbuddy Joliet
Vons Credit Union Routing Number
Lkq Pull-A-Part
Busted Newspaper Birmingham Al
Dtm Urban Dictionary
Deshaun Watson Timeline: What Has Occurred Since First Lawsuit Filed
Recruitment Drive/Quick guide
Warren County Skyward
Edward Scissorhands 123Movies
What Was D-Day Weegy
Pebble Keys 2 K380s Bluetooth Keyboard | Logitech
Mypdr
Warped Pocket Dimension
Walmart Listings Near Me
Army Dlc 1 Cheat
Atl To London Google Flights
Costco Gas Price City Of Industry
Is Slatt Offensive
Skip The Games Lawton Oklahoma
Lucio Surf Code
Monahan's By The Cove Charlestown Menu
Lonesome Valley Barber
What Jennifer Carpenter Has Been Doing Since Playing Debra Morgan On Dexter - Looper
Money Network Pay Stub Portal 711
Kris Carolla Obituary
Storenet Walgreens At Home
Here's everything Apple just announced: iPhone 16, iPhone 16 Pro, Apple Watch Series 10, AirPods 4 and more
Unblocked Games 66E
Hanging Hyena 4X4
Computer Repair Tryon North Carolina
The Little Mermaid 2023 Showtimes Near Marcus South Pointe Cinema
Teamnet O'reilly Login
Directions To Truist Bank Near Me
The Meaning Behind The Song: 4th & Vine by Sinéad O'Connor - Beat Crave
Erskine Plus Portal
Disney Immersive Experience Cleveland Discount Code
911 Active Calls Caddo
Erica Mena Net Worth Forbes
2022 Basketball 247
Crandon Skyward
Brokaw 24 Hour Fitness
Skip The Games Mil
Culver's Flavor Of The Day Wilson Nc
Kirstin Kresse
Nordstrom Rack Glendale Photos
Creed 3 Showtimes Near Island 16 Cinema De Lux
Omaha World-Herald from Omaha, Nebraska
Latest Posts
Article information

Author: Roderick King

Last Updated:

Views: 5432

Rating: 4 / 5 (71 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Roderick King

Birthday: 1997-10-09

Address: 3782 Madge Knoll, East Dudley, MA 63913

Phone: +2521695290067

Job: Customer Sales Coordinator

Hobby: Gunsmithing, Embroidery, Parkour, Kitesurfing, Rock climbing, Sand art, Beekeeping

Introduction: My name is Roderick King, I am a cute, splendid, excited, perfect, gentle, funny, vivacious person who loves writing and wants to share my knowledge and understanding with you.