hackedteam/vector-offline2

View on GitHub
procedure/USB/2_Offline_Install_Linux.txt

Summary

Maintainability
Test Coverage
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

    A QUESTO PUNTO SE SI VUOLE PROVARE QUESTA ISO SU USB SU SISTEMI (U)EFI BISOGNA FARE DA WINDOWS:

        1) Preparazione della chiavetta USB, quindi aprire cmd.exe come amministratore

            2) Eseguire: diskpart.exe

            3) Individuare il numero disco relativo alla chiavetta USB tramite il comando di diskpart:

                    list disk

            4) Ad esempio da me la chiavetta USB e' il disco 1. Quindi eseguire i comandi di diskpart:

                    select disk 1
                    clean
                    create partition primary
                    select partition 1
                    active
                       format fs=fat32 quick label="Offline"
                    assign
                    exit

            Adesso la chiavetta USB e' predisposta per bootare all'avvio.

        5) Ritornado su linux, dentro la chiavetta USB creare la directory:

            $ mkdir /path/USB_KEY/EFI/Boot/

        6) Scompattare il file ISO-2-USB EFI-BooterForMac0.01beta.zip e copiare dentro la chiavetta USB solo il file bootx64.efi:

            $ tar -xvzf ISO-2-USB EFI-BooterForMac0.01beta.zip
            $ cp /path/bootx64.efi /path/USB_KEY/EFI/Boot/bootx64.efi

        7) Copiare la ISO Linux dell'Offline Install dentro la chiavetta USB con il nome boot.iso:

                    $ cp /path/offlineinstalllin.iso /path/USB_KEY/EFI/Boot/boot.iso

        8) Se si desidera usare l'infezione, copiare RCSPE nella root directory della chiavetta USB:

                    $ cp -Rf RCSPE /path/USB_KEY/

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

    A QUESTO PUNTO SE SI VUOLE PROVARE QUESTA ISO SU USB SU SISTEMI (U)EFI BISOGNA FARE DA WINDOWS:

                1) Preparazione della chiavetta USB, quindi aprire cmd.exe come amministratore

                2) Eseguire: diskpart.exe

                3) Individuare il numero disco relativo alla chiavetta USB tramite il comando di diskpart:

                        list disk

                4) Ad esempio da me la chiavetta USB e' il disco 1. Quindi eseguire i comandi di diskpart:

                        select disk 1
                        clean
                        create partition primary
                        select partition 1
                        active
                        format fs=fat32 quick label="Offline"
                        assign
                        exit

                Adesso la chiavetta USB e' predisposta per bootare all'avvio.

                5) Ritornado su linux, dentro la chiavetta USB creare la directory:

                        $ mkdir /path/USB_KEY/EFI/Boot/

                6) Scompattare il file ISO-2-USB EFI-BooterForMac0.01beta.zip e copiare dentro la chiavetta USB solo il file bootx64.efi:

            $ tar -xvzf ISO-2-USB EFI-BooterForMac0.01beta.zip
                        $ cp /path/bootx64.efi /path/USB_KEY/EFI/Boot/bootx64.efi

                7) Copiare la ISO Linux dell'Offline Install dentro la chiavetta USB con il nome boot.iso:

                        $ cp /path/offlineinstalllin.iso /path/USB_KEY/EFI/Boot/boot.iso

                8) Se si desidera usare l'infezione, copiare RCSPE nella root directory della chiavetta USB:

                        $ cp -Rf RCSPE /path/USB_KEY/