Avatar von bingo (2)
  • bingo (2)

2 Beiträge seit 04.03.2018

Re: Funktioniert super! -- Schritt-für-Schritt

Hallo Simon

da ich VMware 14 benutzt habe wahr live.iso nur 34 kB groß .

Nach mehrmaligen testen habe ich mit virtualbox versucht und hat funktioniert...

die live.iso wahr dann 840.MB groß habe dieses script verwendet.

#!/bin/bash

echo
echo "Bauanleitung"
echo "============"
echo
echo "1. Das vorliegende Skript bitte in (L)Ubuntu 16.04 32 Bit per sudo auf der Kommandozeile/im Terminal ausfuehren."
echo "2. Nach Durchlauf des Skriptes steht ein ISO-Image (live.iso) bereit, dass auf einen USB-Stick gebracht werden muss."
echo " a) Den USB-Stick (min. 2 GB, besser 4 GB) entsprechend (eine Partition, FAT32) formatieren (bspw. mithilfe der Anwendung 'Laufwerke')."
echo " b) Das Bootflag des Sticks setzen (bspw. mithilfe der Anwendung 'GParted')."
echo " c) Das ISO-Image (live.iso) mithilfe der Anwendung 'UNetbootin' auf den Stick bringen (PS: Der Startmedienersteller ermoeglicht keine volle Funktionalitaet des bankix-Systems)."
echo
read -r -p "Das habe ich verstanden. [j/N] " questionResponse
echo
if [[ $questionResponse != [jJ] ]]
then
exit
fi

set -o xtrace

#### Kernel bauen #### BEGIN ####

# Kernel-Verzeichnis anlegen, benoetigte Pakete einspielen, Kernel-Quellcode herunterladen
mkdir kernel
cd kernel

# Quelltext-Paketquelle hinzufügen/aktivieren
add-apt-repository -s "deb http://de.archive.ubuntu.com/ubuntu/ $(lsb_release -sc)-updates main"
apt-get update

apt-get -y install fakeroot
apt-get -y build-dep linux-image-$(uname -r)
apt-get source linux-image-$(uname -r)

### Patch erstellen und anwenden

cat > opticalDrivesOnly.patch << EOF
--- linux-4.4.0/include/linux/libata.h
+++ linux-4.4.0/include/linux/libata.h
@@ -1531,7 +1531,7 @@

static inline unsigned int ata_dev_enabled(const struct ata_device *dev)
{
- return ata_class_enabled(dev->class);
+ return dev->class == ATA_DEV_ATAPI; /* optical drives only (mid) */
}

static inline unsigned int ata_dev_disabled(const struct ata_device *dev)
EOF

patch -p0 --verbose --ignore-whitespace < opticalDrivesOnly.patch

# Kernel bauen
cd linux-4.4.0

fakeroot debian/rules clean
skipabi=true skipmodule=true fakeroot debian/rules binary-indep
skipabi=true skipmodule=true fakeroot debian/rules binary-perarch
skipabi=true skipmodule=true fakeroot debian/rules binary-generic

cd ../../

#### Kernel bauen #### END ######

#### Return-Values der Bash-Kommandos auswerten #### BEGIN #####

function CHECK {
#if [ ${PIPESTATUS[0]} -ne 0 ]
if [ $? -eq 0 ]
then
echo $(tput bold)$(tput setaf 2)[PASS]$(tput sgr0)
else
echo $(tput bold)$(tput setaf 1)[FAIL]$(tput sgr0)
fi
}
export PS4='$(CHECK)\n\n$(tput bold)$(tput setaf 7)$(tput setab 4)+ (${BASH_SOURCE}:${LINENO}):$(tput sgr0) '

#### Return-Values der Bash-Kommandos auswerten #### END #######

#### System bauen #### BEGIN ####

apt-get -y install build-essential debootstrap squashfs-tools genisoimage syslinux-common syslinux-utils
wget -c -N -P source http://cdimage.ubuntu.com/lubuntu/releases/17.10.1/release/lubuntu-17.10.1-desktop-i386.iso
wget -c -N -P source http://cdimage.ubuntu.com/lubuntu/releases/17.10.1/release/lubuntu-17.10.1-desktop-amd64.iso

mount -o loop source/lubuntu-17.10.1-desktop-amd64.iso /mnt/
mkdir iso
cp -r /mnt/.disk/ /mnt/boot/ /mnt/EFI/ iso/
mkdir iso/casper
umount /mnt

# Bereits gebautes Live-System des verwendeteten ISOs entpacken
mount -o loop source/lubuntu-17.10.1-desktop-i386.iso /mnt/
unsquashfs -d squashfs /mnt/casper/filesystem.squashfs

# Ressourcen des Build-Systems in Live-System hineinmappen
mount --bind /dev squashfs/dev
mount -t devpts devpts squashfs/dev/pts
mount -t proc proc squashfs/proc
mount -t sysfs sysfs squashfs/sys

# DNS + Paketquellen des Build-Systems nutzen, vorher Ressourcen des Live-Systems sichern
chroot squashfs/ cp -dp /etc/resolv.conf /etc/resolv.conf.original
chroot squashfs/ cp -dp /etc/apt/sources.list /etc/apt/sources.list.original
cp /etc/resolv.conf squashfs/etc/
cp /etc/apt/sources.list squashfs/etc/apt/

# System schlank machen
chroot squashfs/ apt-get -y purge pidgin* abiword* transmission* gnumeric* xfburn* mtpaint simple-scan* sylpheed* audacious* guvcview fonts-noto-cjk ubiquity* mplayer language-pack* lvm2 gparted apport whoopsie blue* btrfs* cryptsetup evolution* gdebi* genisoimage lubuntu-software-center xul-ext-ubufox firefox-locale-en
chroot squashfs/ apt-get -y purge linux-image-* linux-headers-*
chroot squashfs/ apt-get -y autoremove --purge

# alle Updates einspielen
chroot squashfs/ apt-get update
chroot squashfs/ apt-get -y dist-upgrade

# Zusaetzliche Pakete einspielen
chroot squashfs/ apt-get -y install tzdata language-pack-de firefox-locale-de squashfs-tools cups network-manager-openconnect-gnome wswiss wngerman language-pack-gnome-de wogerman

# Zeitzone setzen
echo "Europe/Berlin" | tee squashfs/etc/timezone
rm squashfs/etc/localtime
chroot squashfs/ ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
chroot squashfs/ dpkg-reconfigure --frontend noninteractive tzdata

# Modifizierten Kernel einspielen
cp kernel/linux-headers*.deb kernel/linux-image*.deb squashfs/
chroot squashfs/ ls | chroot squashfs/ grep .deb | chroot squashfs/ tr '\n' ' ' | chroot squashfs/ xargs dpkg -i
chroot squashfs/ apt-get -f -y install
rm squashfs/*.deb

# APT + Software-Center aufrauemen
chroot squashfs/ apt-get -y check
chroot squashfs/ apt-get -y autoremove --purge
chroot squashfs/ apt-get -y clean
rm squashfs/var/cache/lsc_packages.db

# Firefox-Profil im Ordner source/skel erzeugen
mkdir -p source/skel/.mozilla/firefox/ctbankix.default/extensions
wget -O source/skel/.mozilla/firefox/ctbankix.default/extensions/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi https://addons.mozilla.org/firefox/downloads/latest/noscript/addon-722-latest.xpi?src=search
#wget -c -O squashfs/usr/lib/firefox-addons/extensions/\{73a6fe31-595d-460b-a920-fcc0f8843232\}.xpi https://addons.mozilla.org/firefox/downloads/latest/noscript/addon-722-latest.xpi
rm -rf squashfs/usr/lib/firefox/distribution/searchplugins/locale/

# Startpage zu den Suchmaschinen hinzufuegen
wget -c -O squashfs/usr/lib/firefox/distribution/searchplugins/common/startpage.xml https://addons.mozilla.org/firefox/downloads/latest/startpage-https-privacy-search/addon-13036-latest.xml

# Firefox-Einstellungen
cat > squashfs/usr/lib/firefox/defaults/pref/ctbankixAutoConfig.js << EOF
pref("general.config.filename", "ctbankixFirefoxConfig.cfg");
pref("general.config.obscure_value", 0);
EOF

cat > squashfs/usr/lib/firefox/ctbankixFirefoxConfig.cfg << EOF
// Deaktiviert den Updater
lockPref("app.update.enabled", false);
// Stellt sicher dass er tatsächlich abgestellt ist
lockPref("app.update.auto", false);
lockPref("app.update.mode", 0);
lockPref("app.update.service.enabled", false);

// Deaktiviert die Kompatbilitätsprüfung der Add-ons
// clearPref("extensions.lastAppVersion");

// Deaktiviert 'Kenne deine Rechte' beim ersten Start
pref("browser.rights.3.shown", true);

// Versteckt 'Was ist neu?' beim ersten Start nach jedem Update
pref("browser.startup.homepage_override.mstone","ignore");

// Stellt eine Standart-Homepage ein - Nutzer können sie ändern
// defaultPref("browser.startup.homepage", "http://home.example.com");

// Deaktiviert den internen PDF-Viewer
// pref("pdfjs.disabled", true);

// Deaktiviert den Flash zu JavaScript Converter
pref("shumway.disabled", true);

// Verhindert die Frage nach der Installation des Flash Plugins
pref("plugins.notifyMissingFlash", false);

//Deaktiviert das 'plugin checking'
//lockPref("plugins.hide_infobar_for_outdated_plugin", true);
//clearPref("plugins.update.url");

// Deaktiviert den 'health reporter'
lockPref("datareporting.healthreport.service.enabled", false);

// Disable all data upload (Telemetry and FHR)
lockPref("datareporting.policy.dataSubmissionEnabled", false);

// Deaktiviert den 'crash reporter'
lockPref("toolkit.crashreporter.enabled", false);
Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false;
EOF

cat > source/skel/.mozilla/firefox/profiles.ini << EOF
[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=1
Path=ctbankix.default
EOF

cat > source/skel/.mozilla/firefox/ctbankix.default/prefs.js << EOF
# Mozilla User Preferences

/* Do not edit this file.
*
* If you make changes to this file while the application is running,
* the changes will be overwritten when the application exits.
*
* To make a manual change to preferences, you can visit the URL about:config
*/

user_pref("browser.cache.disk.capacity", 0);
user_pref("browser.download.useDownloadDir", false);
user_pref("browser.privatebrowsing.autostart", true);
user_pref("browser.search.update", false);
user_pref("browser.startup.homepage", "https://www.heise.de/ct/projekte/ctbankix");
user_pref("capability.policy.maonoscript.sites", "[System+Principal] about: about:addons about:blank about:blocked about:certerror about:config about:crashes about:feeds about:home about:memory about:neterror about:plugins about:pocket-saved about:pocket-signup about:preferences about:privatebrowsing about:sessionrestore about:srcdoc about:support blob: chrome: mediasource: moz-extension: moz-safe-about: resource:");
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("extensions.lastAppVersion", "50.0.2");
user_pref("network.cookie.prefsMigrated", true);
user_pref("network.predictor.cleaned-up", true);
user_pref("privacy.donottrackheader.enabled", true);
EOF

# Firefox-Profil ins Zielsystem kopieren
# Variante A: den soeben erzeugten Ordner source/skel verwenden
cp -r source/skel squashfs/etc/
# Variante B: Profil aus dem laufenden System verwenden (vorher Bookmarks + Add-ons setzen)
#cp -r $HOME/.mozilla squashfs/etc/skel/

# Menue bauen
mkdir iso/isolinux
cp /mnt/isolinux/boot.cat /mnt/isolinux/isolinux.bin /mnt/isolinux/*.c32 iso/isolinux/

# Boot (ohne UEFI)
cat > iso/isolinux/isolinux.cfg << EOF
default vesamenu.c32
menu title c't Bankix Lubuntu 17.10.1

label ctbankix
menu label c't Bankix Lubuntu 17.10.1
kernel /casper/vmlinuz
append BOOT_IMAGE=/casper/vmlinuz boot=casper initrd=/casper/initrd.lz showmounts quiet splash -- debian-installer/language=de console-setup/layoutcode?=de

label local
menu label Betriebssystem von Festplatte starten
localboot 0x80
EOF

# Boot (mit UEFI)
cat > iso/boot/grub/grub.cfg << EOF

if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

menuentry "c't Bankix Lubuntu 17.10.1" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/lubuntu.seed boot=casper showmounts quiet splash -- debian-installer/language=de console-setup/layoutcode?=de
initrd /casper/initrd.lz
}
EOF

# ToDo: Weglassen?
cat > iso/boot/grub/loopback.cfg << EOF
menuentry "c't Bankix Lubuntu 17.10.1" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/lubuntu.seed boot=casper iso-scan/filename=${iso_path} showmounts quiet splash -- debian-installer/language=de console-setup/layoutcode?=de
initrd /casper/initrd.lz
}
EOF

# apt-Pinning um das Einspielen ungepatchter Kernel zu verhindern
cat > squashfs/etc/apt/preferences << EOF
Package: linux-image*
Pin: origin *.ubuntu.com
Pin-Priority: -1

Package: linux-headers*
Pin: origin *.ubuntu.com
Pin-Priority: -1

Package: linux-lts*
Pin: origin *.ubuntu.com
Pin-Priority: -1

Package: linux-generic*
Pin: origin *.ubuntu.com
Pin-Priority: -1
EOF

cat > squashfs/excludes << EOF
casper/*
cdrom/*
cow/*
etc/mtab
home/lubuntu/.cache/*
media/*
mnt/*
proc/*
rofs/*
sys/*
tmp/*
var/log/*
var/cache/apt/archives/*
EOF

#TODO: Initramdisk bauen und an entsprechende Stelle kopieren, sobald gepatchte Kernel bereitstehen

cat > squashfs/usr/sbin/BankixCreateSnapshot.sh << EOF
#!/bin/bash
echo "Snapshot erstellen"
echo "=================="
echo
echo "1. Alle Anwendungen schließen!"
echo "2. Schreibschutzschalter am USB-Stick (sofern vorhanden) auf 'offen' stellen!"
echo
read -r -p "Snapshot jetzt erstellen? [j/N] " questionResponse
if [[ \$questionResponse = [jJ] ]]
then
echo
sudo apt-get -y clean
sudo mount -o remount,rw /cdrom
sudo mksquashfs / /cdrom/casper/filesystem_new.squashfs -ef /excludes -wildcards
sudo mv /cdrom/casper/filesystem_new.squashfs /cdrom/casper/filesystem.squashfs
sudo mount -o remount,ro /cdrom
echo
echo "Das System muss heruntergefahren werden! Aktivieren Sie anschließend den mechansichen Schreibschutzschalter und starten neu. Bitte Taste druecken!"
read dummy
sudo shutdown -P now
else
echo
echo "Es wurde kein Snapshot erstellt!"
read dummy
fi
EOF
chmod +x squashfs/usr/sbin/BankixCreateSnapshot.sh

mkdir squashfs/etc/skel/Desktop/
cat > squashfs/etc/skel/Desktop/BankixCreateSnapshot.desktop << EOF
[Desktop Entry]
Encoding=UTF-8
Name=Snapshot erstellen
Exec=/usr/sbin/BankixCreateSnapshot.sh
Type=Application
Terminal=true
Icon=/usr/share/icons/Humanity/actions/48/document-save.svg
EOF
chmod +x squashfs/etc/skel/Desktop/BankixCreateSnapshot.desktop

cp /usr/share/applications/lxrandr.desktop squashfs/etc/skel/Desktop/
cp /usr/share/applications/firefox.desktop squashfs/etc/skel/Desktop/
cp /usr/share/applications/update-manager.desktop squashfs/etc/skel/Desktop/

#### System bauen #### END ######

#### Iso erzeugen #### BEGIN ####

zcat squashfs/boot/initrd.img* | lzma -9c > iso/casper/initrd.lz
cp squashfs/boot/vmlinuz* iso/casper/vmlinuz

umount squashfs/dev/pts squashfs/dev squashfs/proc squashfs/sys /mnt

#mv squashfs/etc/resolv.conf.orig squashfs/etc/resolv.conf
chroot squashfs/ mv /etc/resolv.conf.original /etc/resolv.conf
chroot squashfs/ mv /etc/apt/sources.list.original /etc/apt/sources.list

mksquashfs squashfs iso/casper/filesystem.squashfs -noappend
genisoimage -cache-inodes -r -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o live.iso -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot iso

isohybrid -u live.iso

#### Iso erzeugen #### END ######
date
echo

Viel Erfolg......

PS: script ist mit UEFI.. im Bios habe ich nocht den Secure Boot ändern dann erst habe ich es geschaft aus dem usb stick zu starten .....

Bewerten
- +
Anzeige