If you’re like me, you’ve wanted to customize an Ubuntu install DVD for a long time – but all the tools/directions for doing it are out of date and/or broken. Look no further!
I have successfully customized an ISO of Xubuntu 14.04 for my project Builduntu but this guide should work for just about any flavor of Ubuntu, maybe even other Linux distributions. If you aren’t sure, give it a try! Mint and Debian are very similar and may work with minimal changes to the commands (ie, replace apt-get with whatever package manager the particular distro uses). It helps if the distro you want to customize is the same as what you are running currently, but is not necessary.
Note: Awesome contributor Mike made a script (see comments section) to automate this process, check it out here!
Let’s get to it.
First download the ISO you want to start customizing from Ubuntu’s release server. Remember where you save it, because you’re going to have to move it in a minute.
From here on out, it’s bash command line. Don’t worry, it’s the easiest way of doing this (for now). You don’t need to be a Linux guru, just pay close attention to the directions and it will work fine.
Make sure the prerequisite software is installed for unpacking and repacking the image. Open a terminal and run:
sudo apt-get install squashfs-tools genisoimage
Create a fresh folder to begin work. For the purposes of this guide, everything will be done from the starting point of the user’s home directory (indicated in Linux by a tilde “~”). Approximately 10 gigabytes total of free hard drive space is required for decompressing the ISO filesystem and repackaging it at the end.
mkdir ~/custom-img
Move the base ISO downloaded in the first step to the working directory. From here on out, replace “ubuntu.iso” with the name of the image downloaded from the Ubuntu Release server ex. trusty-desktop-amd64.iso
cp /path/to/saved/ubuntu.iso ~/custom-img
cd ~/custom-img
Next, extract the contents of disc image.
mkdir mnt
sudo mount -o loop ubuntu.iso mnt
mkdir extract
sudo rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract
Here’s where things start to get interesting. Extract the filesystem with the following commands:
sudo unsquashfs mnt/casper/filesystem.squashfs
sudo mv squashfs-root edit
You’re going to need network access from within the chroot environment to download and install updated/new packages. Essentially what’s happening is you are going to “log in” to a command line instance of the Ubuntu installation, separate from the host system. Perhaps a confusing concept to wrap your head around at first, but it makes sense when you think about it. Copy resolv.conf from your system into the freshly unpacked fs.
sudo cp /etc/resolv.conf edit/etc/
Mount a few important working directories:
sudo mount --bind /dev/ edit/dev
sudo chroot edit
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
Now you are actually logged in to the installation instance as root. Neat. Before making changes, a few commands will make sure that everything goes smoothly while modifying packages.
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
OK, now you can start playing around. This guide is only going to cover adding and removing software, but it’s possible to customize just about anything. Things like custom backgrounds and settings are already documented elsewhere, but be careful! Many of the directions are outdated and the commands may need slight alterations to work correctly. I had to piece this guide together from a few different sources with a whole lot of dead reckoning.
Start by removing the packages you don’t want. Be sure to use the “purge” command so that the system will automatically uninstall and delete the package, which optimizes the space required for the ISO. When you execute purge, read the list of programs to be removed before you select “Y” and make absolutely sure you haven’t accidentally flagged a core system package via association. You will recognize this because the list will contain significantly more packages than those you selected.
apt-get purge package1 package2 package3
I personally remove games, scanning utilities (I don’t have a scanner) and default text editors like abiword and mousepad (geany is the best). Stay away from core components unless you know what you are doing.
Since I am customizing a 64-bit Ubuntu image, I need multiarch (i386) support for some of the programming libraries. The following command is not necessary for everyone, but I recommend it anyway.
dpkg --add-architecture i386
Update the software repositories and upgrade the remaining packages on the system.
apt-get update && apt-get upgrade
Add packages to the system the usual way:
apt-get install package1 package2 package3
You are almost there! Time to clean up:
apt-get autoremove && apt-get autoclean
rm -rf /tmp/* ~/.bash_history
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl
Unmount the directories from the beginning of this guide:
umount /proc || umount -lf /proc
umount /sys
umount /dev/pts
exit
sudo umount edit/dev
You have now “logged out” of the installation environment and are “back” on the host system. These final steps will actually produce the ISO. Other guides stop working at this point, but have no fear! The following commands have been tested and verified.
Generate a new file manifest:
sudo chmod +w extract/casper/filesystem.manifest
sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee extract/casper/filesystem.manifest
sudo cp extract/casper/filesystem.manifest extract/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract/casper/filesystem.manifest-desktop
sudo sed -i '/casper/d' extract/casper/filesystem.manifest-desktop
Compress the filesystem:
sudo mksquashfs edit extract/casper/filesystem.squashfs -b 1048576
Update filesystem size (needed by the installer):
printf $(sudo du -sx --block-size=1 edit | cut -f1) | sudo tee extract/casper/filesystem.size
Delete the old md5sum:
cd extract
sudo rm md5sum.txt
…and generate a fresh one: (single command, copy and paste in one piece)
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt
And finally, create the ISO. This is a single long command, be sure to copy and paste it in one piece and don’t forget the period at the end, it’s important:
sudo genisoimage -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../name-of-your-custom-image.iso .
It takes a few minutes, but when that is done you will have a burnable/distributable ISO in your working directory (~/custom-img)
Have fun and good luck! Let me know how customizing works out for you!
If you appreciate my hard work, feel free to buy me a coconut water ( donate ). It will be greatly appreciated!
Can this step be use on ubuntu server?
Yes. Just change the name of the ubuntu.iso to match the image you download and it should be fine.
but i cannot file the casper/filesystem.squashfs in ubuntu server iso. i only found it on ubuntu desktop. is in any chance i did miss something?
Ubuntu server does not have casper, so it’s a completely different process to customize that (although a lot easier), as there is no compressed filesystem on that iso.
Loads of guides on the net for that, and they all work.
If you’re using the Ubuntu server, just replace all ./casper/ references with ./install/
Lol… You deserver to be donated. Excellent work. Think of creating shell scrip or may be python script… Suggest some packages to be removed ( like thunderbird,sudoku, ) some packages to be added ( mc, cheese, chromium, jre, jdk )
No offense, but this article is basically a copy of https://help.ubuntu.com/community/LiveCDCustomization. Thanks for going into detail about each step though. π
It’s close, but not quite. At least as of the time I originally wrote the article, the directions on the LiveCDCustomization wiki article didn’t work for me, or many other people based on the Google research I did at the time. I don’t recall precisely, but I vaguely remember having to re-write some of the snippets using tee instead of the method described in the wiki. Perhaps they’ve updated it since.
Thanks for the tip with Ubuntu server!
There is something missing or incorrect in the last step when we create the ISO with genisoimage because the custom ISO doesn’t boot in UEFI (not sure about BIOS), whereas the original Ubuntu ISO does boot in UEFI mode.
Please mak e ascript for it :/ any other projects: remastersys, uck has been discontinued. π
Testing v0.1 now. Stay posted!
Please make a script π
I’m almost done with one. Just in final testing phases of v0.1
Hi,
First thanks for your sharing.
I want to ask if these all operations will work under a Ubuntu Live (Not installed system). I can put 2 HDD (Ubuntu Live ISO USB and Empty at least 10 gb HDD) on my machine. Than I can generate my ISO, with live system by mounting 10 GB HDD as “custom-img” ?
And I want to ask if there are project to generate Custom ISO? I research them for years but some of the project are discontinued, or they are alpha, or they are not deseign for Ubuntu (and it’s variants).
reconstructor: they want money. even I can not try without paying.
remastersys: discontinued
Ubuntu Builder: discontinued
relinux: it is beta, which also it is not updating since 2 years.
mklivecd: is on the 0.0.1 version since 2002
ubuntu-customization-kit: I could not install it on fresh install ubuntu. which is also not updating since 2 years.
liveCD: on their official site they write that they are support Mandrakelinux PCLinuxOS
To answer your first question, yes I think this may work under a Live System. As long as you aren’t building on the File System, which is limited to the amount of RAM you have available.
I’m working on a script for customizing the ISO. It’s a bit different in bash than just typing the commands, but it should be ready for release soon.
I modified and merged the commands together. I tested this and it made an ISO that worked fine for me:
first sudo chmod 777 /home/yourusernamehere/ and copy the ubuntu image over to /home/yourusernamehere/, then run this from /home/yourusernamehere/:
mkdir ~/custom-img
cp ubuntu* ~/custom-img/
cd ~/custom-img
sudo apt-get install squashfs-tools genisoimage -y
mkdir mnt
sudo mount -o loop ~/custom-img/ubuntu*.iso mnt
mkdir extract
sudo rsync –exclude=/casper/filesystem.squashfs -a mnt/ extract
sudo unsquashfs mnt/casper/filesystem.squashfs
sudo mv squashfs-root edit
sudo cp /etc/resolv.conf edit/etc/
sudo mount –bind /dev/ edit/dev
sudo chroot edit
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert –local –rename –add /sbin/initctl
ln -s /bin/true /sbin/initctl
apt-get update && apt-get dist-upgrade -y && apt-get install zfsutils-linux -y && apt-get install openssh-server -y && apt-get install samba -y && update-grub && update-initramfs -u
dpkg –add-architecture i386
then once verified everything has installed (keep in mind as a side note, no sudo commands can be execited until we exit out of sudo chroot edit seen below before executing a sudo umount, that’s why we don’t sudo update-grub):
apt-get autoremove && apt-get autoclean
rm -rf /tmp/* ~/.bash_history
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert –rename –remove /sbin/initctl
umount /proc || umount -lf /proc
umount /sys
umount /dev/pts
exit
sudo umount edit/dev
then verify that sudo worked and did not give a sudoers error, if it did reboot then continue, if not just continue:
cd ~/custom-img
sudo chmod +w extract/casper/filesystem.manifest
sudo chroot edit dpkg-query -W –showformat=’${Package} ${Version}n’ | sudo tee extract/casper/filesystem.manifest
sudo cp extract/casper/filesystem.manifest extract/casper/filesystem.manifest-desktop
sudo sed -i ‘/ubiquity/d’ extract/casper/filesystem.manifest-desktop
sudo sed -i ‘/casper/d’ extract/casper/filesystem.manifest-desktop
sudo mksquashfs edit extract/casper/filesystem.squashfs -b 1048576
printf $(sudo du -sx –block-size=1 edit | cut -f1) | sudo tee extract/casper/filesystem.size
cd extract
sudo rm md5sum.txt
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt
sudo genisoimage -D -r -V “$IMAGE_NAME” -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-custom.iso .
ls | grep hi
P.S. Thanks OP, I will send a donation your way. π
how do you configure the target installation to use a proxy for the apt-get operations?
You may need to copy the hosts file.
sudo cp /etc/hosts edit/etc/
Otherwise, check out Ubuntu’s documentation on LiveCD Customization. It’s a bit dated but, you may have luck:
https://help.ubuntu.com/community/LiveCDCustomization
mkisofs has been deprecated. instead replace it with genisoimage
I followed your directions and wow, great thanks. I have built a custom kernel image and while I am in the chroot env, I tried to install it. I was able to fix up the /etc/mtab file such that it has a rootfs, and then I did the dpkg -i custom-kernel-image.deb. It appears to install ok and in the edit directory I can see kernel installed. but when I use the iso image to install a machine, it it still on the generic kernel… and the directories dont have my new customer kernel. am I missing somthing?
after the installation, you would fond the kernel file( e.p. the vmlinuz) in edit/boot, the vmlinuz need to be copied to /extract/casper, so that you the new kernel can be put into the new iso after the last command
It works with Ubuntu server 14.04. The only change that needs to be made for it to work is to change the ‘/casper/’ directory to ‘/install/’ when using this guide. Thank you for the guide. Funny enough it was way easier than getting remastersys or relinux to work. Keep up the good work. I am a python fan so would like to see that finished python script
Is it possible to create my existing ubuntu 14.04’s image to install it other computers or this procedures only changes the new iso extracted from the image and recompressed as iso.
I’m not sure how well it works, but there is a program called Black Lab Imager that is a continuation of the remastersys project. The source code is free, but the team is asking for a one-time donation for access to a binary executable. Give it a try!
Tried this on Ubuntu Server 14.10 iso. There were a LOT of dependency issues along the way that had to be resolved. I got them resolved, but then it throws me more troubles. Toward the end it didnt want to unmount anything. It kept saying it was busy. So I had to forcefully unmount the things.
Creating the ISO itself went fine. After this I booted the ISO into a virtualbox and tried it. It started off going well. It booted up the Ubuntu installer as expected and went through the whole process. However, after reboot it freezes. It just wont boot into the system. I dont know why but something is obviously wrong.
I’m gonna work on updating this guide for 14.10 soon. There may need to be some slight modifications to the commands.
Were you building the ISO from inside of a 14.10 installation? Or were you trying to customize a 14.10 disc on a system with a 14.04 or earlier install? The main issue I can think of with dependencies etc would likely be caused by trying to customize a “newer” release from within an older host installation.
Let me know if you have any luck! Like I said at the top of the post, some people are running into issues but others are able to get things working with a few minor changes to the commands.
Well, I have a little free time to try and do this again so I am trying to work through it. The first error I am coming up to is where you have “dbus-uuidgen > /var/lib/dbus/machine-id”.
when i put this in it states “no such file or directory”. when i type “dbus-uuidgen –help” it says “command not found”. i then go to a separate terminal and try “dbus-uuidgen –help” and it works fine. are the steps out of order for this? while in the “chroot edit/” terminal it just doesnt work.
Update:
I proceed to go on past the “dbus-uuidgen” not working right. i figured it wouldnt affect much anyway.
most everything else seems to have gone alright. unmount things seems buggy. everything complained it was busy with the commands given. so i added the “-lf” switch on all of them. i could not exit after that because then it said there where “stopped jobs”. so then i just closed the terminal to kill it.
after that i opened a new terminal and changed directory over to ~/custom-img and continued on. generating the iso gave me no problems.
installation gave me one minor error with the “select and install” portion. apparently it didnt like one of the packages. probably modemmanager in gnome since thats the only one in the whole process that gave me an issue. so your mileage may vary on this. after i went in manually and hit apply it continued the installation.
the system seems to have installed everything i asked it to install which is good. i ran playonlinux with a game and it seemed to going good. so i am going to say that its working.
started with Ubuntu 14.10 64bit desktop installed on virtualbox. used apt-get update and apt-get dist-upgrade to make sure the host system was fully updated. i used Ubuntu 14.10 64bit server to build the image since server is a minimal install and you dont have uninstall a billion things. you just go in and install everything you want on top of it.
Sounds like you need to find a point to restart the process and try again. What you created may be a coaster.
Hi there,
I am looking for a way to replace the live session user with my preferred username and also to avoid direct boot to the live user. I’d rather prefer the lightdm greeter screen to pop up and allow me to insert my credentials.
I have the squashfs filesystem extracted as we speak but cannot find any relevant information regarding how to alter those. See this question of mine for more details. Do you have any idea how I should tackle this matter?
Thank you for your help!
My best recommendation would be to read through the Live CD customization documentation provided by Canonical. It’s not the most reliable or up-to-date, but you might be able to modify some of the commands to work for modern versions. Some of the structure hasn’t been valid for 4 or 5 years, so your mileage will vary. Good luck!
That worked! Thanks!
How do I edit the list of packages that get installed?
Use apt-get just as the directions mentioned. The packages that are added/removed during this process will be mirrored to the installation system.
been playing around with this some more and just wanted to post about this step up top:
“sudo mksquashfs edit extract/casper/filesystem.squashfs -b 1048576”
i believe if it is changed slightly it compresses it more.
“sudo mksquashfs edit extract/casper/filesystem.squashfs -comp xz -b 1M -Xdict-size 100%”
Has anyone gotten this method to work with the ubuntu-mini-remix?
Would not having wireless driver on my computer affect the installation. When I start, it says package not found
Did you copy resolv.conf from your system to the mounted filesystem? That’s important for network access during the editing process.
16.04 compatible.
I have built one up starting with the server iso.
This is a fantastic tutorial. I successfully made a custom Xubuntu CD with this (though it had a few bugs because of a botched Java installation; I will try again). I’m trying to use it to alter TAILS a little and am running into the following error:
~/custom-img/extract$ sudo unsquashfs mnt/casper/filesystem.squashfs
Could not open mnt/casper/filesystem.squashfs, because No such file or directory
I’m sorry for not specifying that the successful custom CD was Xubuntu 16.04 and the failed one was TAILS 2.3.
looking up TAILS it looks like it is a Debian system. which as i recall is not even the same kind of directories or anything. you should be able to just look at the folders on the mounted ISO and determine if any of this is going to work.
the directories you are obviously looking for as above:
../casper/*
or
../install/*
which if they are there then you look in them and see if they have the files you want.
During the installation it shows “failed to install grub-efi to /target/ the system will not boot”
it’s okey when installing with internet, but i want to install it offline. can you please help me?
THANK YOU VERY MUCH for this post.
Great! Excellent! First guide which really work’s! In one word, excellent! I’m thrilled! Thank You very, very much.
always stuck at genisoimage. can’t make iso. how to solve this? thanks.
Can you provide some error output? It’s hard to help without knowing more about the situation.. It is likely you’re either missing the genisoimage package, or typing the command incorrectly.
Thanks for this script – looks very good with the current version of ubuntu-mini-remix-16.04-amd64.iso.
There are no error while creating. ISO starts with VMWare Fusion – no problem –
But if I do create a DVD or a USB stick from this iso – it doesn’t start up. BIOS settings for boot are set properly.
Any idea ?
that sounds more like boot disc creator issue than anything else. granted i have ran into those problems before which i have found it to be either the USB creator i was using or the burning program not acting right. its kind odd like that.
also, make sure your USB is FAT32 formatted with a bootable flag. sometimes those things, especially the large ones, can end up NTFS or exFAT formatted which doesnt always work. the USB creators also dont all format the drives. some just put the files on the disk.
at least the good thing about USB is you dont waste a lot of disks trying to make it work. right?
Thank you, we found this very helpful, keep up the great work.
How does one add software from a non-default repository to the install disk? I keep trying to add a repo with wget and it says host (my localhost name) could not be found.
Consider also https://apps.ubuntu.com/cat/applications/precise/uck/ the Ubuntu Customization Kit.
I have tried many of the various tools available, including UCK. However, that specific app has not been updated since Ubuntu 13.10
It might work for older distributions, but for anything above 14.04 it never produced a viable image for me, hence the guide here.
Thanks for the suggestion!
Thank you, perfect for providing custom live systems! π
Hello. Thank you for the guide.
My only problem is, that I cannot make the new ISO work with an updated kernel. Only kernels which are in the original repositories work, I always get kernel error when booting if I try a kernel from kernel-ppa/mainline. Any ideas?
That sounds kinda odd tbh. I have a 16.04 image and it comes with something like kernel 4.2 i think. I always update the kernel to the newest “STABLE” release from the mainline repository though. It has never failed me either.
-make sure you are downloading all of the correct files. (ex. all low-latency or all generic and with the correct format 32bit/64bit)
-when you go to install them there should be 3 files. (ex. “linux-headers…all.deb”, “linux-headers…amd64.deb”, and “linux-image…amd64.deb”) To install go to their folder and do “dpkg -i linux-headers*” followed by “dpkg -i linux-image*”
Doesn’t seem to work with elementary -loki which is based on 16.04
Everything is fine except once I start using apt I get a bunch of permission errors that keeps me from being able to install anything. fchmod operation not permitted in the apt/partials temporary file. I tried to to chmod -R 777 the apt directories… nada… any ideas??
ahhhh weird… everything worked if I sudo -i and run all commands from the /root which is where you land anyway. sudo works this way btw
Here’s my automated build (using Gitlab CI) of your great article: https://gitlab.com/morph027/custom-live-ubuntu-cinnamon
I’m using it for PXE only…creating an ISO is documented in README.
This is excellent! Man can learn so much from this step by step building process. In fact, it’s great to know which command does what, how and why! My only error in which i have stumbled during building process is that after successful build installed system can’t see audio card. Only “Dummy output” is reported! Is somebody having same issue and what is solution, if You know?!
It looks like there is an error in the the line “dpkg-query -W –showformat=’${Package} ${Version}\n'” under “Generate new Manifest file”.
dpkg-query -W –showformat=’${Package} ${Version}n’ echoes all of the installed packages, separated by an ‘n’ on one single line.
I’m assuming it should be ‘\n’ instead of just ‘n’ so that it outputs all the installed packages, with each package on a new line.
Made the change, thanks for the heads up!
I was trying to use your guide to create a custom spin of a Ubuntu derivative called GalliumOS. It all work fine until I try to generate the ISO via genisoimage. It fails with an error saying “oh uh, I can’t find the boot image ‘isolinux.bin'”. I’ve followed the commands exactly, but every time I get stuck at this same part. Any ideas on what I’m doing wrong?
Any idea how how to make the finished product be able to be turned into a USB stick for installation? When creating a USB in a few programs and using ‘dd’ the disk does not boot. It does however boot in a virtual machine and installs.
Hi Thom,
I had the same exact problem. I put together a script, based on this post, and others, to get my/our desired result. https://pastebin.com/VHGqTXJ3
Comments in the script hopefully explain why I did what I did. π
Cheers,
— Mike
It worked for me on Ubuntu 16.04.2 LTS desktop. But I still hava a problem.
The password of the live session user is needed when I boot up with customized ubuntu. I tried passwords with blank, ubuntu… Nothing works. Did you have the same problem when processing ubuntu 14.04 ?
I had the same exact problem as Thom Yorke (May 4, 2017) .
FWIW, my source ISO image is ubuntu-mate-16.04.2-desktop-amd64.iso. I am able to ‘dd’ that to a USB stick and boot/install as expected. After processing that ISO according to this procedure, and incorporating a few other improvements gleaned from ipkpjersi’s (November 9, 2016) script, above, I created the script posted over here to save myself a ton of typing as I beat my head against the main issue:
For some reason, makeisofs would not properly create a bootable EFI partition on USB media. VirtualBox, however, booted just fine from the resulting .iso according to this blog post.
Ultimately, I had to give up on genisoimage because I found via https://linuxconfig.org/legacy-bios-uefi-and-secureboot-ready-ubuntu-live-image-customization that xorriso actually works for creating a USB-bootale EFI partition, after a dd of isohdpfx.bin out of the origin .iso distribution.
I created a script, and posted it here if anyone would like to take it for a spin. https://pastebin.com/VHGqTXJ3
Awesome, Mike! Thanks for the info. I’ve been super busy at work and haven’t had much time to keep up with new posts. The script looks perfect.
Would it be ok for me to add the script to the original post and credit you? I’m sure a ton of readers would find it handy. This post has overtaken my guides for Android build environments elsewhere in the blog in terms of popularity for the past few months.
Cheers!
Hi Nathan,
Certainly! I’ve pasted it to a more permanent location, so please use this link instead. https://pastebin.com/NQUTWC1y
Cheers,
— Mike
That sounds very interesting!
My problem is this
http://blog.robertelder.org/installing-ubuntu-16-linux-ge62-6qd-apache-pro-msi-notebook/
so I’m wondering if it’s possible to change the graphic driver?
Cheers!
Hi , I am trying to create a customized ubuntu server iso with mkisofs. I want to install a package CM during the installation. I added following command to the preseed file “d-i pkgsel/include string CM” and I copied the package to ./pool/extras and I get the Unable to locate error during the installation. Could you help me understand why I am getting this error even though the package exists ?
I followed the steps on https://askubuntu.com/questions/409607/how-to-create-a-customized-ubuntu-server-iso?noredirect=1&lq=1
Hi Nathan,
Great work!
I am successfully able to create the image with your instruction. Thank you for sharing it.
I’m wondering, why remove isolinux/boot.cat in md5sum.txt?
` | grep -v isolinux/boot.cat |`
Excellent guide, thank you so much! I have one question. Tried this on 16.04.3 server and after doing apt-get update && apt-get upgrade and trying to install iso installer reported following error https://i.imgur.com/XAyJ4c4.png Any ideas how can I fix it?
Woow that was strange. I ust wroite an very lonmg comment but after I clicked submit my comment didn’t appear.
Grrrr… well I’m nnot writing all that over again. Anyways,
just wanted to say wonderful blog!
I have been install a fresh application, but after burn into new iso and boot into that iso. It have not my application.
Please, help me!
Hi, I’m working on ubuntu server 16.04. And everything is well until I try to install the custom image in virtualbox. The error message i have got is that “Select and Install software: Installation step failed” during the installation processes. I have just skipped that installation phase and continued with grup installation. And After restart it is just looping in the login screen. I’m entering username and password and It displays the login screen again and again. Btw, I sure about that I’m using right username and password.
Great guide.
I purged libreoffice* and installation has problem,, seems still try to install libreoffice
God bless you man!
Also worked on Ubuntu 18.04! It is a year I am searching for a straight forward approach for doing this and here it is!
Thanks
There’s a project called FAI which can also create customzied installation ISO images for Debian and Ubuntu
ζ§θ‘ζεδΈζ₯ζε iosεΊη°δΊιθ――
第δΈη§ιθ――
I: -input-charset not specified, using utf-8 (detected in locale settings)
genisoimage: Uh oh, I cant find the boot catalog directory ‘isolinux’!
第δΊη§ιθ――
I: -input-charset not specified, using utf-8 (detected in locale settings)
genisoimage: Missing pathspec.
Usage: genisoimage [options] -o file directory …
Use genisoimage -help
to get a list of valid options.
Report problems to debburn-devel@lists.alioth.debian.org.
Everything worked out perfectly, theres just one non fatal error if I try to use the check errors on disk feature of the iso. It will say there are errors on two files. It will say this even if I only extract and compress the iso again without modifying anything. Doing this with ubuntu 18.04 by the way.
Very good article,
If I want to add something to boot command like modprobe.blacklist=nouveau
what is the way to do it
Thanks
Systemback is still working in Xubuntu 19.04, and it makes a live-usb in 2 partitions, which can be resized to recover the remain usb storage space into a new partition so you have a custom live-os which is completely frozen stable and dynamic storage for other files.
With Xubuntu and Systemback, I have learned to hack it enough to customize the wallpaper, apps, most of the configs, plymouth splash screens, and the EFI and legacy Grub themes to make an impressive live-usb including wine apps and bells and whistles. I consider the live-installer to be broken because it won’t setup the partitions and grub auto-magically.
In the future, it would be helpful to look into the C++ sources of Systemback to understand the commands that it runs, and that could be added to this excellent guide you have here, or even made into a Python/Tkinter script for continued use. Systemback and its forks are not being developed and its just lucky that it works for now.
Thanks very much to the O.P. and commenters for sharing the knowledge you’ve acquired. The world needs more people like you.
Hi,
How would I go about automating the selection of a local apt-mirror?
Using most recent version update of 16.04 LTS so I imagine the rest of the script would be identical?
Thanks
Hi i’m trying to use yor how to with mint20.iso as new to the terminal a lot of your commands don’t seem to work / The aim is to use a usb with mint but need to include bookmarks so i’m trying to unpack the iso then move on once that is done
By right click on the iso a requester drops down with unpack to etc that displays several folders but iI guess that I will need to unpack waht is in the folders to find firfoz and add the book marks to it thanks Jack
Hi All,
I want to make iso bootbale from files backup taken from another ubuntu desktop. I was reading steps mention above for bootable image but i did not find file filesystem.squashfs.
Anyone can help me out
Thanks
Rajnish
Is there a way to add some python package?
in final step the bellow error has been occurred
“genisoimage : Uh oh , I cant find the boot catalog … ”
so with bellow command I can make iso image without problem
grub-mkrescue -o myXubuntu21.4.iso extract
I’m trying to customize a Lubuntu 22.04 installation .iso file. Lubuntu uses graphical “calamares” installer but what I need is a text mode installer that installs Lubuntu automatically without any user interaction on the hard drive. The installer should partition the hard drive automatically and do everything without user input. What would be the best way to achieve this? Can the full installation be made using command “debootstrap” or do it still need manual installation of the desktop environment then?
Is there any way to make the squash file system larger?, I try to install cuda and cudnn, but the squash file is larger than 4g, we are in the blueray era, there should be something like squash2 can do 8G or 12G