Skip to content

danjde/JLIVECD

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JLIVECD


                                      Live cd/dvd customization tool


Disclaimer

Customized ISOs for personal use are fine. If you want to share your customization with others, whether for free or for purchase, you'll have to rename it; remove all distro specific artwork, branding, and other identity elements; and you can't confuse your intended users about the customization being associated in any way with the base distro.

You're free to use the softwares without renaming those, as they are licensed under GPL. But otherwise, it will be your own creation and no longer you base distros'.

The name and identity elements of a distro are trademarked and copyrighted. Unless you have approval from appropriate authorization you can't use those (identity elements and name).


What this is about:

This is a simple command line tool to customize live cd/dvd of ubuntu based distros, Linux Mint and some of their derivatives. It is developed with the help of the documentation found on: https://help.ubuntu.com/community/LiveCDCustomization and intended primarily for personal use. This is released under GPL v2 lincense and redistrubtion is free and open complying to the licensing terms of GPL v2 license.

Features:

  1. You can save your project in a suitable directory and keep adding and changing things while checking the ISOs' built on those changes.
  2. Your changes are always saved. You can resume it whenever you like.
  3. It remembers your previous choice (the project directory, the desired ISO name and the original ISO path). Just hit Enter when you are prompt for input in such cases.
  4. You only need to give it the original ISO once, every time after that, you can just go to the chroot terminal and keep customizing things.

Requirements:

1.squashfs-tools

2.genisoimage

install requirements by:

sudo apt-get install squashfs-tools genisoimage

Installation:

give the install.sh file execution permission and run it in terminal.

How to use:

Run JLstart in a terminal or run it from menu->system->JLIVECD.

N.B: This does no modification on it's own. you need to modify the iso images on your own. It only renders an environment for modification and finally creates the modified iso image. And of course, you need an iso image as base as no other image or archive will work with this tool.

Example:

~$ JLstart

Is this a fresh start: (y/n)?n

[sudo] password for user:

...............................

Hints are given on the go, follow them to successfully create a customized live cd/dvd.

Directories & Files:

  1. In your project directory, you will find some default directories. Don't change their names. The directories are:

  2. debcache: .deb files are kept here. See the special feature section for more details.

  3. edit: This is the root filesystem (i.e /) for the live system (chroot system). Any change you make here will appear in the finalized ISO.

  4. extracted: This is where the original ISO is extracted. You can change several things here, like Diskname, release, date, splash screen, etc.

  5. mnt: A directory used only for mounting ISO image.

  6. There's also an additional file named disk, which contains the target ISO name. You can edit this file to edit the name. Dont' delete it though.

Things to care:

1.Don't use quotation in file/folder path

~/"some folder" or "~/some folder" is invalid

~/some folder is valid

2.Don't use spaces in project path.

3.In a fresh start, don't close the terminal when it is extracting the original ISO. You can close it safely after it finishes extracting and the chroot is closed and another prompt for input is appeared.

4.Don't close the chroot and host terminal simultaneously. You can close the host terminal safely after an input prompt appears after closing the chroot terminal.

5.The default answer is no for all yes/no type questions.

ChangeLog:

###version 2.0:

1.You can use short cut in names for path to base iso i.e xubuntu for xubuntu-14.04.1-x64.iso, if there is no other file named "xubuntu" in the same folder. You can even use only x if there is no other file starting with x in the same folder.

Example:

enter base iso path: ~/Downloads/x

As there is only one file that matches x is xubuntu-14.04.1-x64.iso, it will take that file as input automatically.

2.You can use full path with or without .iso.

Tested OS:

*Linux Mint 17 cinnamon

*Linux Mint 17 XFCE

*Xubuntu 14.04.1 LTS

Additonal info:

1.In Linux Mint 17 XFCE there's a bug. To fix this edit /usr/sbin/invoke-rc.d file (in chroot) as: replace exit 100 with exit 0 at line 285 and 421, then apply upgrade. after upgrading revert this modification (must).

2.In Linux Mint 17 xfce, if you install nautilus then it will set gnome-session as default session and if gnome desktop is not installed then no desktop window will show up in live session. change the link /usr/bin/x-session-manager to point to /usr/bin/xfce4-session.

3.In xubuntu 14.04.1 there's another bug: Can't open /scripts/casper-functions" error) to fix this, run this code in chroot:

ln -s /usr/share/initramfs-tools/scripts /scripts

Follow the following link for bug report:

https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1325142

4.In Ubuntu 14.04 Gnome LTS you might encounter two more bugs:

One should be solved by editing:

/var/lib/dpkg/info/whoopsie.prerm
/var/lib/dpkg/info/libpam-systemd\:amd64.prerm
/var/lib/dpkg/info/libpam-systemd\:amd64.postinst

(change exit $? to exit 0 in the invoke-rc.d lines)

Other one should be solved by editing:

/etc/kernel/postrm.d/zz-update-grub
/etc/kernel/postinst.d/zz-update-grub

find the following and comment out the if an fi line:

if [ -e /boot/grub/grub.cfg ]; then
   #exec update-grub
fi

Revert these changes before exiting the chroot.

Follow the following link for bug report for more details:

https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1325142

5.If you are not able to get connected to internet in chroot then you can try running the code: JLRefreshNetwork in another terminal in your main system. This may happen, if you have started JLIVECD before connecting your pc to the internet.

6.If you want to change the timeout value then run this code in another terminal in your main system:

sudo echo timeout_value > /usr/local/JLIVECD/main/timeout

"timeout_value" should be replaced with your desired time in seconds. Ex: for 12 seconds timeout:

sudo echo 12 > /usr/local/JLIVECD/main/timeout

7.Ubiquity installer, hang/freeze on harddisk detection. This bug is easily solved: you must edit file /usr/share/applications/ubiquity-gtkui.desktop and change the section "exex" from

sh -c 'ubiquity gtk_ui'

to

sh -c 'sudo ubiquity gtk_ui'

Special Feature:

I call it debcache management!

1.Just put your .deb files in edit/var/cache/apt/archives folder and they won't be downloaded again in the software installaion process.

2.They will be moved automatically to a folder named debcache (located in the same directory as "edit") prior to image creation so that they won't be included in the iso image.

3.You never need to delete .deb files from edit/var/cache/apt/archives manually and you shouldn't.

4.If you don't delete the .deb files then you will never need to download them again as long as they remain the updated files according to your package list (which you get from apt-get update). debcache management will take proper measures to move the files to required places to minimize downloads of packages from internet.

5.Altenatively, you can put the .deb files in "debcache" folder too, but in that case you need to run the application after you have finished copying files to this folder...

Source Link:

https://github.com/neurobin/JLIVECD

Web page:

http://neurobin.github.io/JLIVECD/

About

Live cd/dvd customization tool

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 100.0%