procedure/CD-DVD/2_Offline_Install_Linux.txt
1) Aggiornare il sistema:
$ apt-get update
$ apt-get upgrade
SE ALCUNI PACCHETTI NON VUOLE AGGIORNARLI, INSTALLARLI A MANO CON:
$ apt-get install pacchetto1 pacchetto2 ... pacchettoN
SE AGGIORNA IL KERNEL, RIAVVIARE E POI SEGUIRE LA PROCEDURA DA QUI
2) Installare i driver Paragon UFSD (testato fino a kernel 3.13.0-44-generic):
$ mkdir ufsd
$ cd ufsd
$ tar -xvzf Paragon-147-FRE_NTFS_Linux_9.0_Express-PATCHED.tar.gz
$ cd Paragon-147-FRE_NTFS_Linux_9.0_Express-PATCHED/
$ sudo ./install.sh
$ cd ../../
Per verificare la posizione dei file:
$ sudo updatedb
$ locate ufsd
3) Iniziare a creare la ISO di ubuntu:
$ cd
$ sudo apt-get install debootstrap
$ mkdir -p work/chroot
$ cd work
$ sudo debootstrap --arch=i386 trusty chroot
Esempio:
$ARCH = i386, amd64
$RELEASE = trusty (14.04)
I nome delle release si trovano in /usr/share/debootstrap/scripts/
IN QUESTI FILE CONTROLLARE IL LORO CONTENUTO ED OVVIAMENTE, ADATTARLI ALL'INSTALLAZIONE
$ sudo mount --bind /dev chroot/dev
$ sudo cp /etc/hosts chroot/etc/hosts
$ sudo cp /etc/resolv.conf chroot/etc/resolv.conf
$ sudo cp /etc/apt/sources.list chroot/etc/apt/sources.list
UTILIZZARE COME $KERNEL_VERSION QUELLA USATA DAL SISTEMA UBUNTU IN ESECUZIONE
$ mkdir -p chroot/lib/modules/$KERNEL_VERSION/kernel/external/ufsd
$ cp /lib/modules/$KERNEL_VERSION/kernel/external/ufsd/* chroot/lib/modules/$KERNEL_VERSION/kernel/external/ufsd/
$ sudo chroot chroot
$ mount none -t proc /proc
$ mount none -t sysfs /sys
$ mount none -t devpts /dev/pts
$ export HOME=/root
$ export LC_ALL=C
$ apt-get update
$ apt-get install --yes dbus
$ dbus-uuidgen > /var/lib/dbus/machine-id
$ dpkg-divert --local --rename --add /sbin/initctl
$ ln -s /bin/true /sbin/initctl
$ apt-get --yes upgrade
$ apt-get install --yes ubuntu-standard casper lupin-casper
$ apt-get install --yes discover laptop-detect os-prober
$ apt-get install --yes linux-generic
SU GRUB INSTALL, SELEZIONARE TUTTI I DISCHI
VERIFICARE CHE I DRIVER UFSD CHE ABBIAMO INSTALLATO SI TROVINO EFFETTIVAMENTE
NELLA CONFIGURAZIONE DEL KERNEL APPENA INSTALLATO, QUINDI CONTROLLARE:
/lib/modules/$KERNEL_VERSION/kernel/external/ufsd/
E CHE $KERNEL_VERSION SIA QUELLA INSTALLATA. SE E' UN'ALTRA VERSIONE, SPOSTARE LA DIRECTORY:
/lib/modules/$KERNEL_VERSION_OLD/kernel/external/ufsd/
IN:
/lib/modules/$KERNEL_VERSION_CURRENT/kernel/external/
$ depmod -a
$ update-initramfs -u -k all
<< A QUESTO PUNTO QUI BISOGNA INSTALLARE TRAMITE APT I SOFTWARE NECESSARI ALL'OFFLINE INSTALLER >>
$ apt-get install xfsprogs
$ apt-get install lvm2
$ apt-get install firmware-b43-installer
$ apt-get install linux-firmware-nonfree
$ apt-get install firmware-b43legacy-installer
$ apt-get install cryptsetup
$ apt-get install xinit
$ apt-get install xauth
$ apt-get install v86d
$ apt-get install plymouth-x11
$ apt-get install plymouth-theme-ubuntu-logo
$ apt-get install libgtk-3-dev
$ apt-get install lightdm-gtk-greeter
$ apt-get install gnome-icon-theme-symbolic
$ apt-get install gnome-icon-theme-full
$ apt-get install gnome-humility-icon-theme
$ apt-get install fluxbox
$ apt-get install vim
$ apt-get install lightdm
$ apt-get install hfsplus
$ apt-get install hfsprogs
$ apt-get install hfsutils
$ depmod -a
$ echo "blacklist b43" | sudo tee -a /etc/modprobe.d/blacklist-b43.conf
$ echo "FRAMEBUFFER=y" > /etc/initramfs-tools/conf.d/splash
$ update-initramfs -u -k all
COPIARE LA CONFIGURAZIONE fluxbox.tar.gz in /opt
$ cd /opt
$ tar -xvzf fluxbox.tar.gz
$ rm fluxbox.tar.gz
$ mv .fluxbox fluxbox
COPIARE IL NOSTRO WALLPAPER DI DEFAULT ubuntu-light.png in:
$ cp ubuntu-light.png /usr/share/images/fluxbox/ubuntu-light.png
$ vim /etc/rc.local
PRIMA DI exit 0 INSERIRE:
cp -aRf /opt/fluxbox /home/offline/.fluxbox
echo "exec startfluxbox" > /home/offline/.xinitrc
COPIARE LA CONFIGURAZIONE offline-install.tar.gz /opt
$ cd /opt
$ tar -xvzf offline-install.tar.gz
$ rm offline-install.tar.gz
$ chmod +x /opt/offline-install/offline_gui.py
$ vi /etc/default/grub
MODIFCA LE LINEE:
GRUB_HIDDEN_TIMEOUT=3
...
GRUB_TIMEOUT=10
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
IN:
GRUB_HIDDEN_TIMEOUT=0
...
GRUB_TIMEOUT=0
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash reboot=p"
SALVA ED ESCI DAL FILE
$ update-grub
$ vi /etc/init/rc-sysinit.conf
MODIFICA LA LINEA:
start on (filesystem and static-network-up) or failsafe-boot
stop on runlevel
IN
start on (filesystem) or failsafe-boot
stop on runlevel [!0123456]
SALVA ED ESCI DAL FILE
MODIFICA IL FILE:
$ touch /etc/lightdm/lightdm.conf
$ vim /etc/lightdm/lightdm.conf
INSERIRE:
[SeatDefaults]
autologin-user=offline
autologin-user-timeout=0
user-session=fluxbox
greeter-session=lightdm-gtk-greeter
SALVA ED ESCI DAL FILE
$ vim /etc/rc0.d/S89casper
PRIMA DELLE RIGHE:
# XXX - i18n
MSG="Please remove installation media and close the tray (if any) then press ENTER: "
INSERIRE:
eject -p -m $device >/dev/null 2>&1
sleep 5
return 0
SALVA ED ESCI DAL FILE
$ vim /etc/rc6.d/S89casper
PRIMA DELLE RIGHE:
# XXX - i18n
MSG="Please remove installation media and close the tray (if any) then press ENTER: "
INSERIRE:
eject -p -m $device >/dev/null 2>&1
sleep 5
return 0
SALVA ED ESCI DAL FILE
$ sudo update-initramfs -u -k all
$ sudo apt-get install rcconf
$ sudo rcconf
SELEZIONARE SOLTATO: casper, grub-common, sudo, x11-common
TUTTI GLI ALTRI DESELEZIONATI, INFINE ANDARE SU OK
$ cd /etc/init/
$ vim network-interface-security.conf
SOSTITUISCI:
start on (starting network-interface
or starting network-manager
or starting networking)
stop on (stopped network-interface JOB=$JOB INTERFACE=$INTERFACE
or stopped network-manager JOB=$JOB
or stopped networking JOB=$JOB)
CON:
start on runlevel [!0123456]
stop on runlevel [!0123456]
SALVA ED ESCI DAL FILE
$ vim ufw.conf
SOSTITUISCI:
start on (starting network-interface
or starting network-manager
or starting networking)
stop on runlevel [!023456]
CON:
start on runlevel [!0123456]
stop on runlevel [!0123456]
SALVA ED ESCI DAL FILE
$ vim network-interface.conf
SOSTITUISCI:
start on net-device-added
stop on net-device-removed INTERFACE=$INTERFACE
CON:
start on runlevel [!0123456]
stop on runlevel [!0123456]
SALVA ED ESCI DAL FILE
$ vim mountall-net.conf
SOSTITUISCI:
start on net-device-up
CON:
start on runlevel [!0123456]
stop on runlevel [!0123456]
SALVA ED ESCI DAL FILE
$ vim networking.conf
SOSTITUISCI:
start on (local-filesystems
and (stopped udevtrigger or container)) or runlevel [2345] or stopped networking RESULT=failed PROCESS=post-stop EXIT_STATUS=100
stop on unmounted-remote-filesystems
CON:
start on runlevel [!0123456]
stop on runlevel [!0123456]
SALVA ED ESCI DAL FILE
$ vim failsafe.conf
SOSTITUISCI:
console output
CON:
console none
SALVA ED ESCI DAL FILE
$ vim plymouth-upstart-bridge.conf
SOSTITUISCI:
console output
CON:
console none
SALVA ED ESCI DAL FILE
$ vim rc-sysinit.conf
SOSTITUISCI:
console output
CON:
console none
SALVA ED ESCI DAL FILE
$ vim rc.conf
SOSTITUISCI:
console output
CON:
console none
SALVA ED ESCI DAL FILE
$ vim ufw.conf
SOSTITUISCI:
console output
CON:
console none
SALVA ED ESCI DAL FILE
$ vim friendly-recovery.conf
SOSTITUISCI:
console owner
CON:
console none
$ vim mountall-shell.conf
SOSTITUISCI:
console owner
CON:
console none
$ vim rcS.conf
SOSTITUISCI:
console owner
CON:
console none
$ update-initramfs -u -k all
$ update-grub
$ cd
$ rm /var/lib/dbus/machine-id
$ rm /sbin/initctl
$ dpkg-divert --rename --remove /sbin/initctl
$ apt-get clean
$ rm -rf /tmp/*
$ rm /etc/resolv.conf
$ rm -Rf /root/.ssh/
$ umount -lf /proc
$ umount -lf /sys
$ umount -lf /dev/pts
$ exit
$ sudo umount /path/to/chroot/dev
$ sudo apt-get install syslinux squashfs-tools genisoimage
$ mkdir -p image/{casper,isolinux}
$ cp chroot/boot/vmlinuz-$KERNEL_VERSION-generic image/casper/vmlinuz
$ cp chroot/boot/initrd.img-$KERNEL_VERSION-generic image/casper/initrd.lz
$ cp /usr/lib/syslinux/isolinux.bin image/isolinux/
$ touch image/isolinux/isolinux.cfg
$ vim image/isolinux/isolinux.cfg
TIMEOUT 1
PROMPT 0
NOESCAPE 1
DEFAULT offline
LABEL offline
menu label ^Start Offline Install
kernel /casper/vmlinuz
append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash -- reboot=p
SE SI USA XBOOT, MODIFICARE:
append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash -- reboot=p
CON:
append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash -- reboot=p iso-scan/filename=/images/<name>.iso
CON <name>.iso IN NOME FINALE DELLA ISO DUAL BOOT CON MKISOFS.iso OVVERO offlineinstalllin
$ sudo chroot chroot dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee image/casper/filesystem.manifest
sudo cp -v image/casper/filesystem.manifest image/casper/filesystem.manifest-desktop
REMOVE='ubiquity ubiquity-frontend-gtk ubiquity-frontend-kde casper lupin-casper live-initramfs user-setup discover1 xresprobe os-prober libdebian-installer4'
for i in $REMOVE
do
sudo sed -i "/${i}/d" image/casper/filesystem.manifest-desktop
done
$ sudo mksquashfs chroot image/casper/filesystem.squashfs
$ printf $(sudo du -sx --block-size=1 chroot | cut -f1) > image/casper/filesystem.size
$ vim image/README.diskdefines
PER i386:
#define DISKNAME Offline Install
#define TYPE binary
#define TYPEbinary 1
#define ARCH i386
#define ARCHi386 1
#define DISKNUM 1
#define DISKNUM1 1
#define TOTALNUM 0
#define TOTALNUM0 1
PER amd64:
#define DISKNAME Offline Install
#define TYPE binary
#define TYPEbinary 1
#define ARCH amd64
#define ARCHamd64 1
#define DISKNUM 1
#define DISKNUM1 1
#define TOTALNUM 0
#define TOTALNUM0 1
$ touch image/ubuntu
$ mkdir image/.disk
$ cd image/.disk
$ touch base_installable
$ echo "full_cd/single" > cd_type
$ echo "Offline Install" > info
$ echo "Offline install" > release_notes_url
$ cd ../..
$ sudo -s
(cd image && find . -type f -print0 | xargs -0 md5sum | grep -v "\./md5sum.txt" > md5sum.txt)
exit
$ cd image
$ sudo mkisofs -r -V "Offline Install" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../offlineinstalllin.iso .
SE SI USA XBOOT, ELIMINARE DA mkisofs L'OPZIONE -c isolinux/boot.cat
$ cd ..
NOME ISO: offlineinstalllin.iso
4) Modificare la ISO gia' creata:
$ cd work
$ rm -Rf image
$ rm offlineinstalllin.iso
$ sudo mount --bind /dev chroot/dev
$ sudo chroot chroot
$ mount none -t proc /proc
$ mount none -t sysfs /sys
$ mount none -t devpts /dev/pts
$ export HOME=/root
$ export LC_ALL=C
<< A QUESTO PUNTO QUI BISOGNA INSTALLARE TRAMITE APT I SOFTWARE NECESSARI ALL'OFFLINE INSTALLER >>
$ rm -Rf /root/.ssh/
$ umount -lf /proc
$ umount -lf /sys
$ umount -lf /dev/pts
$ exit
$ sudo umount /path/to/chroot/dev
$ mkdir -p image/{casper,isolinux}
$ cp chroot/boot/vmlinuz-$KERNEL_VERSION-generic image/casper/vmlinuz
$ cp chroot/boot/initrd.img-$KERNEL_VERSION-generic image/casper/initrd.lz
$ cp /usr/lib/syslinux/isolinux.bin image/isolinux/
$ touch image/isolinux/isolinux.cfg
$ vim image/isolinux/isolinux.cfg
TIMEOUT 1
PROMPT 0
NOESCAPE 1
DEFAULT offline
LABEL offline
menu label ^Start Offline Install
kernel /casper/vmlinuz
append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash -- reboot=p
SE SI USA XBOOT, MODIFICARE:
append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash -- reboot=p
CON:
append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash -- reboot=p iso-scan/filename=/images/<name>.iso
CON <name>.iso IN NOME FINALE DELLA ISO DUAL BOOT CON MKISOFS.iso OVVERO offlineinstalllin
$ sudo chroot chroot dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee image/casper/filesystem.manifest
sudo cp -v image/casper/filesystem.manifest image/casper/filesystem.manifest-desktop
REMOVE='ubiquity ubiquity-frontend-gtk ubiquity-frontend-kde casper lupin-casper live-initramfs user-setup discover1 xresprobe os-prober libdebian-installer4'
for i in $REMOVE
do
sudo sed -i "/${i}/d" image/casper/filesystem.manifest-desktop
done
$ sudo mksquashfs chroot image/casper/filesystem.squashfs
$ printf $(sudo du -sx --block-size=1 chroot | cut -f1) > image/casper/filesystem.size
$ vim image/README.diskdefines
PER i386:
#define DISKNAME Offline Install
#define TYPE binary
#define TYPEbinary 1
#define ARCH i386
#define ARCHi386 1
#define DISKNUM 1
#define DISKNUM1 1
#define TOTALNUM 0
#define TOTALNUM0 1
PER amd64:
#define DISKNAME Offline Install
#define TYPE binary
#define TYPEbinary 1
#define ARCH amd64
#define ARCHamd64 1
#define DISKNUM 1
#define DISKNUM1 1
#define TOTALNUM 0
#define TOTALNUM0 1
$ touch image/ubuntu
$ mkdir image/.disk
$ cd image/.disk
$ touch base_installable
$ echo "full_cd/single" > cd_type
$ echo "Offline Install" > info
$ echo "Offline install" > release_notes_url
$ cd ../../
$ sudo -s
(cd image && find . -type f -print0 | xargs -0 md5sum | grep -v "\./md5sum.txt" > md5sum.txt)
exit
$ cd image
$ sudo mkisofs -r -V "Offline Install" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../offlineinstalllin.iso .
SE SI USA XBOOT, ELIMINARE DA mkisofs L'OPZIONE -c isolinux/boot.cat
$ cd ../
NOME ISO: offlineinstalllin.iso