Hi all,
This example is for amd64 architecture.
I genuinely apologize for the length of the post !!
*1.-**_MODIFYING THE FILESYSTEM.SQUASHFS_*
Download the iso distribution: ExeGnuLinux, Refracta, Star... or
whatever you want, and extract the content.
You will find a squashfs file in it (there are exceptions like knoppix,
which uses loop). This file is named filesystem.squashfs in the most of
the cases.
Mount the file into a chroot jail and enter move up to it:
$ mkdir /tmp/squashfs
$ sudo su
# mount -t squashfs -o loop filesystem.squashfs /tmp/squashfs
# rsync -v -rlt -a /tmp/squashfs/ chroot
# umount /tmp/squashfs/
# mount -t none -o bind /proc chroot/proc
# mount -t none -o bind /sys chroot/sys
# mount -t none -o bind /dev/pts chroot/dev/pts
# xhost +
If you don't type xhost+, you will can't be able to run graphical
applications into the jail.
Copy the following files:
# cp /etc/hostname chroot/etc/hostname
# cp /etc/hostname/hosts chroot/etc/hostname/hosts
# cp /etc/hostname/resolv.conf chroot/etc/resolv.conf
Now you will have network connection into the jail.
Move up to the jail:
# chroot chroot
Do all the changes you want in the system. The following three points
are very important:
i) The kernel in the system and the kernel in the installer must be the
same.
ii) Install all the grub dependencies, but not the grub.
iii) Remove /etc/fstab... Yes, kick it! If you don't remove this file,
doing a manual partition during the installation, your personal folder
will not be created (this is a bug in debian-installer).
Install the following packages:
root@devuan:~# apt-get install live-boot live-boot-initramfs-tools
live-tools live-config live-config-sysvinit
Create a file "/etc/live/config.conf" containing something like that:
LIVE_HOSTNAME=devuan
LIVE_USERNAME=devuan
LIVE_USER_FULLNAME="Devuan"
LIVE_USER_DEFAULT_GROUPS="cdrom floppy audio dip video plugdev fuse
bluetooth netdev scanner"
Make a backup of your sources.list:
root@devuan:~# cp /etc/apt/sources.list /etc/apt/sources.list-back
Don't rename this file.
Create an executable /usr/bin/preseed-hack:
#! /bin/bash
dpkg --purge live-boot live-boot-initramfs-tools live-tools live-config
live-config-sysvinit
rm -rf /etc/live
rm -f /etc/apt/sources.list
mv /etc/apt/sources.list-back /apt/sources.list
FILE=/etc/fstab
if grep "^/dev/sd" ${FILE} | grep "/media/" | grep "auto"
then
LINE1=`grep "^/dev/sd" ${FILE} | grep "/media/" | grep "auto"`
LINE2="## ${LINE1}"
rpl -q "${LINE1}" "${LINE2}" ${FILE}
fi
if grep "^/dev/sr" ${FILE} | grep "/media/cdrom"
then
LINE3=`grep "^/dev/" ${FILE} | grep "/media/cdrom"`
LINE4="## ${LINE3}"
rpl -q "${LINE3}" "${LINE4}" ${FILE}
fi
exit 0
The above script fixes another bug in debian-installer.
Clean the system and exit:
root@devuan:~# apt-get autoremove --purge
root@devuan:~# apt-get autoclean
You can use 'mksquashfs' for getting the new filesystem.squashfs, but i
prefer to use live-build.
Using live-build we will get a better compression (Ozi and Frits are
working on that).
*2.- *_*GETTING THE NEW FILESYSTEM.SQUASHFS WITH LIVE-BUILD*_
Install 'live-build' and 'squashfs-tools' packages, and type:
$ mkdir live-build
$ cd live-build
$ sudo su
# lb init
Here you are an example for lb-config (choose your nearest mirror):
# lb config -a amd64 \
--binary-images iso \
--distribution jessie \
--win32-loader false \
--checksums md5 \
--archive-areas "main" \
--apt-recommends false \
--apt aptitude \
--apt-options --yes \
--build-with-chroot false \
--parent-mirror-bootstrap "deb http://es.mirror.devuan.org/merged/" \
--parent-mirror-binary "deb http://es.mirror.devuan.org/merged/" \
--mirror-bootstrap "deb http://es.mirror.devuan.org/merged/" \
--mirror-binary "deb http://es.mirror.devuan.org/merged/"
# lb bootstrap && lb chroot
Now you will have the following folders:
.build
cache
chroot
config
Make a backup of the chroot folder and replace it by the chroot
containing your distribution, or create a simbolic link pointing to it.
Build the system:
# lb binary
And you will get your new filesystem.squashfs !!
Now we are going to include it in the iso.
*3.-**_GENERATING THE ISO_*
Install 'genisoimage', 'syslinux' and 'syslinux-utils' packages.
Download the following live image of Devuan:
gnuinos.org/devuan
Extract it with file-roller or isomaster in a file named 'DEVUAN', and
replace the following files:
live/filesystem.squashfs
live/initrd.img
live/vmlinuz
You can also customize the splash, etc...
The following script will generate the new *.iso image and the *.iso.md5:
#!/bin/sh
WORKDIR="$HOME"
ISOTMP="DEVUAN"
CREATEISO="`which mkisofs`"
if [ "$CREATEISO" = "" ]; then
CREATEISO="`which genisoimage`"
fi
LIVECDLABEL="unofficial Devuan 1.0 Alpha2"
CUSTOMISO="unofficial-Devuan-1.0-Alpha2_amd64.iso"
find $WORKDIR/$ISOTMP -xdev -type f -print0 | xargs -0 md5sum > md5sums
$CREATEISO \
-quiet \
-r \
-V "$LIVECDLABEL" \
-cache-inodes \
-J \
-l \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-o $WORKDIR/$CUSTOMISO "$WORKDIR/$ISOTMP"
isohybrid $WORKDIR/$CUSTOMISO
md5sum $WORKDIR/$CUSTOMISO > $WORKDIR/$CUSTOMISO.md5
To sum up, i will explain how to customize the appearance of the installer.
4.- _*HOW TO CUSTOMIZE TE APPEARANCE OF d-i*_
We will do that using CPIO.
Copy 'install/gtk/initrd.gz' file in a new directory and move up to it.
Now type:
$ gunzip initrd.gz
$ mkdir tmp
$ cd tmp
$ sudo su
# cpio -id < ../initrd
Now you can customize the following folders (i will not go into details):
usr/share/themes
usr/share/graphics
Generate tne new initrd.gz:
# rm -f ../initrd
# find . | cpio --create --format='newc' > ../initrd
# cd ..
# gzip initrd
... And that's all :)
HTP
Aitor.
P.D.- I genuinely apologize again for the length of the post !!