Tester gesucht: Mageia Live-DVD booten mit grub2

Dieses Forum ist für die erweiterte Hilfe und Unterstützung vorgesehen:

Bitte stelle hier Deine Fragen zur fortgeschrittenen Benutzung von Mageia. Beispielsweise geht es hier um Fragen zum Netzwerk, automatischen Installationen, komplexer Serverkonfiguration, Kerneltuning, Aufsetzen eines Mageia-Mirrors, kurz gesagt: alle Aufgaben, die auch für erfahrene Benutzer eine Herausforderung sind.

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon lula » Feb 12th, '14, 21:52

Hallo,

da habe ich nicht aufgepasst und das vielleicht ungünstig ausgedrückt:

1. Es darf nur ein Skript geben (wie beim Highlander :) )
2. In der initrd ist lib ein symlink auf usr/lib also ist das egal, wohin du das speicherst, wichtig ist nur 1.

Code: Alles auswählen
[21:43](0)[root@lenovo:/data/liveiso/initrd/inittest]# ls -l
insgesamt 56
lrwxrwxrwx 1 root root     7 Feb 11 18:48 bin -> usr/bin
drwxr-xr-x 2 root root  4096 Feb 11 18:48 dev
drwxr-xr-x 9 root root  4096 Feb 11 18:48 etc
-rwxr-xr-x 1 root root 11098 Feb 11 18:48 init
lrwxrwxrwx 1 root root     7 Feb 11 18:48 lib -> usr/lib
lrwxrwxrwx 1 root root     9 Feb 11 18:48 lib64 -> usr/lib64
drwxr-xr-x 2 root root  4096 Feb 11 18:48 proc
drwxr-xr-x 2 root root  4096 Feb 11 18:48 root
drwxr-xr-x 4 root root  4096 Feb 11 18:48 run
lrwxrwxrwx 1 root root     8 Feb 11 18:48 sbin -> usr/sbin
-rwxr-xr-x 1 root root  3017 Feb 11 18:48 shutdown
drwxr-xr-x 2 root root  4096 Feb 11 18:48 sys
drwxr-xr-x 2 root root  4096 Feb 11 18:48 sysroot
drwxr-xr-x 2 root root  4096 Feb 11 18:48 tmp
drwxr-xr-x 7 root root  4096 Feb 11 18:48 usr
drwxr-xr-x 2 root root  4096 Feb 11 18:48 var


Grüße
Lutz
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon unklar » Feb 12th, '14, 22:09

OK Lutz, dann sind jetzt alle Klarheiten beseitigt. :D
El Conkystador (el conquistador = der Sieger) ein Markenzeichen für @Sector11 8-)
unklar
 
Beiträge: 1468
Registriert: Jun 1st, '11, 15:06

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon unklar » Feb 13th, '14, 16:13

Hallo Lutz,

perfekt auf Allen und vielen Dank für das Script! :D

Ich hatte nur ein keines Problem mit der Version von util-linux-2.21, welches die blkid-Option --'U' für die UUID noch nicht kannte. Da habe ich mir mit nano ausgeholfen. ;)
Muß ich mich doch von meinem geliebten mga2 auch bei derartigen Tests verbschieden, wo ich soviel Platz habe. :(
El Conkystador (el conquistador = der Sieger) ein Markenzeichen für @Sector11 8-)
unklar
 
Beiträge: 1468
Registriert: Jun 1st, '11, 15:06

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon lula » Feb 13th, '14, 19:49

Hallo,

sehr schön, ich dachte schon, das Problem wäre das fat-Dateisystem, weil das der einzige Unterschied zwischen Deinem und meinem image ist. Deshalb habe ich mir ein fat-image gebaut, war bei mir aber auch kein Problem.
unklar hat geschrieben:Muß ich mich doch von meinem geliebten mga2 auch bei derartigen Tests verbschieden, wo ich soviel Platz habe.

Mageia 2 ist nicht mehr supported ;)
unklar hat geschrieben:Ich hatte nur ein keines Problem mit der Version von util-linux-2.21, welches die blkid-Option --'U' für die UUID noch nicht kannte. Da habe ich mir mit nano ausgeholfen.
Heißt konkret was? Du hast die uuid hart verdrahtet?

Zum lahmen qemu: Der Aufruf der aus meinem 1. Beitrag stammt noch von meinem alten Rechner, dessen Prozessor keine Virtualisierung unterstützt. Wenn Du einen solchen hast (Test mit:)
Code: Alles auswählen
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
kannst Du das entspr. kvm-Modul laden (kvm-amd oder kvm-intel) und dann den beschleunigten qemu aufrufen, der ist bei mir auf dem Image sogar schneller als die Hardware vom Stick. Der Aufruf sieht bei mir für die Tests folgendermaßen aus.
Code: Alles auswählen
qemu-kvm -enable-kvm -smp 2 -m 2048 -hda mgatest.img -vga vmware -soundhw all -usbdevice tablet -monitor stdio


Grüße
Lutz
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon unklar » Feb 13th, '14, 22:31

lula hat geschrieben:
unklar hat geschrieben:Ich hatte nur ein keines Problem mit der Version von util-linux-2.21, welches die blkid-Option --'U' für die UUID noch nicht kannte. Da habe ich mir mit nano ausgeholfen.
Heißt konkret was? Du hast die uuid hart verdrahtet?

NEIN. Die tippel-tappel-Tour
Code: Alles auswählen
# cat << EOF > usr/lib/dracut/hooks/initqueue/settled/liveiso.sh
> #!/bin/sh
..
sagt er mir: blabla die blkid-Option -- 'U'
ist in util-linux-Vers.2.21 blabla
unbekannt

Die anschließende Kontrolle mit cat zeigte, dass er Dein Script natürlich auch nicht korrekt angelegt hatte. So habe ich eben
an gleicher Stelle nano aufgerufen..

Alles klar? 8-)

Danke auch für den Tipp mit qemu.
Ich muß mich da langsam 'rantasten. Immerhin kannte ich das Teil gar nicht (wenn Du es nicht geschrieben und auf den Bildern gezeigt hättest) und habe mir im Netz erst einmal Bedienung etc. gesucht.
Ja, und ich denke, meine Prozessoren können auch das. ;)
El Conkystador (el conquistador = der Sieger) ein Markenzeichen für @Sector11 8-)
unklar
 
Beiträge: 1468
Registriert: Jun 1st, '11, 15:06

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon doktor5000 » Feb 13th, '14, 22:39

FWIW, qemu geht auch einfacher.
Code: Alles auswählen
qemu -m 2G -cdrom name.iso
und das Ding läuft los ;)

So hab ich immer meine selbstgebauten Images getestet, wenn ich am Splashscreen von isolinux rumgeschraubt hatte.
Ist sonst elend nervig physisch oder per Virtualbox o.ä. zu testen.
Ich bin nicht böse, sondern nur ehrlich. Und wer lesen kann, ist klar im Vorteil.
----
Mageia - the magic continues
Benutzeravatar
doktor5000
 
Beiträge: 6062
Registriert: Jun 2nd, '11, 09:39

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon lula » Feb 13th, '14, 22:40

Hallo,

das war auch für die Bearbeitung im Editor gedacht, wenn man so ein Skript per cat in eine Datei schreiben will, muß man die ganzen $-Variablen mit \$ maskieren sonst werden die Variablen während des cat-Befehls schon interpretiert (und ggf. durch die entspr. Werte ersetzt), ich bin davon ausgegangen, daß das klar wäre.

Edit:
Wenn Du die Variablenersetzung unterdrücken willst, kannst Du auch folgendes benutzten, das wichtige sind die einfachen Anführungszeichen um den "limiting string" (siehe man bash bzw. abs-guide), dann müssen Variblen nicht maskiert werden.
Code: Alles auswählen
cat > bla.sh << 'EOF'
#!/bin/sh
echo $test
EOF

Grüße,
Lutz
Zuletzt geändert von lula am Feb 13th, '14, 23:10, insgesamt 1-mal geändert.
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon lula » Feb 13th, '14, 22:54

Hallo,
doktor5000 hat geschrieben:FWIW, qemu geht auch einfacher.
Code: Alles auswählen
qemu -m 2G -cdrom name.iso
und das Ding läuft los ;)

spannend, wo kommt der denn bei Dir her? Bist Du sicher, daß das kein alias ist?
Code: Alles auswählen
[22:44](0)[root@lenovo:~]# rpm -ql qemu-1.2.0-8.3.mga3  | grep -e '^/usr/bin/qemu$'
[22:44](0)[root@lenovo:~]# which qemu
which: no qemu in (/root/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin)

Das der startet, ist kein Problem, das funktioniert eigentlich immer, die Frage ist die Geschwindigkeit, mit der er dann läuft. Beim Testen der Live isos dauerte das (aus der Erinnerung) auf dem alten Rechner ohne kvm mit dem qemu-system-x86_64 ca. 12-15 Sekunden, bis er merkte, daß er kein root-Dateisystem findet, jetzt mit dem qemu-kvm 1-2 Sekunden und einen kompletten Systemstart in RL 5 wollte ich mir mit dem alten Rechner kaum antun. Jetzt mit kvm ist die Geschwindigkeit von Hardware (von Platte) kaum zu unterscheiden.

Grüße,
Lutz
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon doktor5000 » Feb 13th, '14, 23:11

Aus Gedächtnis getippt. Unter Fedora war qemu ein Symlink auf die Plattform (qemu-x86-64 glaube) und das Modul musste man nicht extra laden.
Ich bin nicht böse, sondern nur ehrlich. Und wer lesen kann, ist klar im Vorteil.
----
Mageia - the magic continues
Benutzeravatar
doktor5000
 
Beiträge: 6062
Registriert: Jun 2nd, '11, 09:39

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon lula » Feb 13th, '14, 23:28

Hallo,
das mag bei Fedora so sein, bei Mageia definitv nicht und Du hast Recht, das Paket bringt eine kvm.modules mit, die das entspr. Modul automatisch lädt, so der Prozessor das unterstützt. Das -enable-kvm mußt du ihm aber explizit mitgeben, hier mal 2 screenshots zum Vergleich der eine mit -enable-kvm der andere ohne, also
qemu-kvm [-enable-kvm] -smp 2 -m 2048 -hda mgatest.img -vga vmware -soundhw all -usbdevice tablet -monitor stdio
Man achte auf die Zeiten bei "Welcome to Mageia 4!", ich finde das macht schon einen Unterschied.

Grüße,
Lutz
Dateianhänge
shot2.png
mit kvm
shot1.png
ohne kvm
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon doktor5000 » Feb 13th, '14, 23:31

Einmal grün und einmal türkis. Jepp, definitiv ein Unterschied :P
Ich bin nicht böse, sondern nur ehrlich. Und wer lesen kann, ist klar im Vorteil.
----
Mageia - the magic continues
Benutzeravatar
doktor5000
 
Beiträge: 6062
Registriert: Jun 2nd, '11, 09:39

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon lula » Feb 13th, '14, 23:40

Ich sehe schon, Du hast den wesentlichen Unterschied erkannt ;)
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon unklar » Feb 14th, '14, 11:15

Moin,
lula hat geschrieben:das war auch für die Bearbeitung im Editor gedacht, wenn man so ein Skript per cat in eine Datei schreiben will, muß man die ganzen $-Variablen mit \$ maskieren sonst werden die Variablen während des cat-Befehls schon interpretiert (und ggf. durch die entspr. Werte ersetzt), ich bin davon ausgegangen, daß das klar wäre.

ist schon richtig, Du vergisst aber, Du hast es hier mit einem Newbie zu tun, der davon schon gehört/gelesen hat, aber im entscheidenden Moment sich nicht daran erinnert. :twisted:

Kannst es ja auch von der Seite betrachten: Ohne obigen Fehler hätte es wahrscheinlich mit dem "Perfekt" noch eine Weile gedauert, siehe 2.Variante des Script, was nicht wollte und ich einen Zeilenumbruch vermutete.

Bild Gutes Mageia2 und seine veralteten Pakete...

Spaß beseite, das hier
Code: Alles auswählen
set ruuid="3925bc92-128d-4006-a6bb-e6e909d32523"
search --no-floppy --fs-uuid $ruuid --set=root
ist so einfach, wie genial in diesem Zusammenhang.
El Conkystador (el conquistador = der Sieger) ein Markenzeichen für @Sector11 8-)
unklar
 
Beiträge: 1468
Registriert: Jun 1st, '11, 15:06

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon lula » Feb 26th, '14, 23:24

Hallo,

so, nun geht das weiter: Um eine angepasste Live-DVD zu haben, braucht man Platz zum Speichern seiner Daten, die originale Live-DVD hält das ja nur im RAM, damit sind die Änderungen beim nächsten Start logischerweise weg. Deshalb bekommt mein Stick/Platte noch eine 2. Partition, um diese Daten aufzunehmen. Auf dieser Partition wird wieder ein Dateisystem angelegt (bei mir wieder ext2) und die Partition wird gemountet z.B. nach /mnt. Dann wird eine Verzeichnisstruktur angelegt und zwei Dateien, die für das Aushängen beim Herunterfahren benötigt werden. Der Pfad auf der 2. Partition ist bei mir /persist/mga4 (jeder andere ist natürlich genau so gut)
Code: Alles auswählen
mkdir -p /mnt/persist/mga4/etc/systemd/system
mkdir -p /mnt/persist/mga4/usr/local/bin
In /mnt/persist/mga4/etc/systemd/system wird die Datei halt-local.service (uid,gid=root, mode=644) angelegt
Code: Alles auswählen
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

#  persist: /etc/systemd/system/halt-local.service

[Unit]
Description=/sbin/halt.local Compatibility
ConditionFileIsExecutable=/sbin/halt.local
DefaultDependencies=no
After=shutdown.target
Before=final.target

[Service]
Type=oneshot
ExecStartPre=-/usr/local/bin/remount_pmount_ro.sh
ExecStartPre=-/bin/kill -54 1
ExecStartPre=-/usr/bin/plymouth quit
ExecStartPre=-/usr/bin/chvt 1
ExecStart=/sbin/halt.local
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes

In /mnt/persist/mga4/usr/local/bin/ wird die Datei remount_pmount_ro.sh angelegt (uid,gid=root, mode=744)
Code: Alles auswählen
#!/bin/bash

# persist: /usr/local/bin/remount_pmount_ro.sh

echo "1" > /proc/sys/kernel/sysrq
echo "s" > /proc/sysrq-trigger
echo "u" > /proc/sysrq-trigger


Damit ist sichergestellt, daß die Partition zum Speichern der Daten beim Herunterfahren "sauber" bleibt. (Ja ich weiß, ist ziemlich rustikal die Methode, war aber die einzige, die zuverlässig funktioniert hat). Damit ist die 2. Partition auch schon fertig, und kann wieder ausgehängt werden.
Jetzt wird noch in der ausgepackten initrd die Datei /sbin/mgalive-root ersetzt, durch diese (uid,gid=root, mode=755)
Code: Alles auswählen
#!/bin/sh

# initrd: /sbin/mgalive-root

. /lib/dracut-lib.sh

[ -f /tmp/root.info ] && . /tmp/root.info

PATH=/usr/sbin:/usr/bin:/sbin:/bin

[ -z "$1" ] && exit 1
livedev="$1"

# create live tree
mkdir -m 0755 -p /live/media
mkdir -m 0755 -p /live/distrib
mkdir -m 0755 -p /live/memory
mkdir -m 0755 -p /live/union
mkdir -m 0755 -p /run/mgalive/ovlsize

# fix udev isohybrid LABEL issues (mga #3334)
# by reading the device we get, stripping away partition number,
# and mount the resulting device
realdev=$(echo $livedev |sed 's,\(/dev/sd[a-z]\)1,\1,g')

# mount the live media
getargbool 0 UEFI && liveuefi="yes"
if [ -n "$liveuefi" ]; then
    mount -n -t vfat -o ro $livedev /live/media
else
    mount -n -t iso9660 -o ro $realdev /live/media
fi

LOOPDEV=$( losetup -f )
losetup -r $LOOPDEV /live/media/loopbacks/distrib-lzma.sqfs
mount -n -t squashfs -o ro $LOOPDEV /live/distrib
mount -n -t squashfs -o ro $LOOPDEV /run/mgalive/ovlsize

if [ -n "$persist" ]; then
  pdev=$(echo "$persist" | sed 's,:.*$,,g')
  pdir=$(echo "$persist" | sed 's,^.*:,,g')

  if [ ! -z "$pdev" -a ! -z "$pdir" ]; then
    pmount="/live/pmount"
    test -d "$pmount" || mkdir -m 0755 -p "$pmount"
 
    pblock=$(blkid -U "$pdev")
    pdevfs=$(blkid -s TYPE -o value "$pblock")
    grep -q "$pmount" /proc/mounts || mount -t "$pdevfs" "$pblock" "$pmount" > /dev/null 2>&1 
 
    if [ -d "${pmount}${pdir}" ]; then
      mount -n -t overlayfs -o lowerdir=/live/distrib,upperdir="${pmount}${pdir}" overlayfs /live/union
    else
      mount -n -t tmpfs -o mode=755 /live/memory /live/memory
      mount -n -t overlayfs -o lowerdir=/live/distrib,upperdir=/live/memory overlayfs /live/union
    fi
  fi
else
  mount -n -t tmpfs -o mode=755 /live/memory /live/memory
  mount -n -t overlayfs -o lowerdir=/live/distrib,upperdir=/live/memory overlayfs /live/union
fi

ln -s /live/union /dev/root

printf '/bin/mount --rbind /live/union %s\n' "$NEWROOT" > $hookdir/mount/01-$$-live.sh

need_shutdown

exit 0


Jetzt fehlt nur noch der 2. Eintrag in der grub.cfg, um das neue Feature zu nutzen:
Code: Alles auswählen
menuentry 'Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso isofrom persist' {
  set isofile="/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso"
  set puuid="6b0722c7-c345-4ff9-beca-a1d9e4483622"
  loopback loop $isofile
  linux    (loop)/boot/vmlinuz root=mgalive:LABEL=Mageia-4-KDE4-LiveDVD ro rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0 lang=de isofrom=$ruuid:$isofile vga=791  persist=$puuid:/persist/mga4
  initrd   (loop)/boot/cdrom/initrd.gz
}

Die puuid muß natürlich auf die tatsächliche UUID der Partition angepasst werden. Wenn man jetzt diesen Eintrag bootet, werden Änderungen gegenüber der Live-Version auf der anderen Partition in dem entspr. Pfad gespeichert. Das man in der angepassten Version einen User anlegen, ein Root-PW setzen und den Live-User löschen sollte, ist selbstverständlich. Je nach dem, wie viel Platz man auf der Partition hat, kann man das System seinen Vorstellungen entsprechend anpassen und dann so auch installieren (Wenn man user und root schon angepasst hat, in der Eingabemaske, wo das nach dem ersten booten abgefragt wird, einfach "Abbrechen" wählen). Bootet man den originalen Eintrag hat man wieder eine "jungfräuliche" Live-DVD.

Viel Spaß
Lutz
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon doktor5000 » Feb 27th, '14, 01:24

Falls Interesse besteht, kann ich dir mal raussuchen wie das bei Fedora für die Live-Images gemacht wird, das sah etwas portabler aus in derem Live-Initskript.
Ich bin nicht böse, sondern nur ehrlich. Und wer lesen kann, ist klar im Vorteil.
----
Mageia - the magic continues
Benutzeravatar
doktor5000
 
Beiträge: 6062
Registriert: Jun 2nd, '11, 09:39

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon lula » Feb 27th, '14, 08:04

Ja, mach mal bitte, interessiert mich auf alle Fälle.

Grüße,
Lutz
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Tester gesucht: Mageia Live-DVD booten mit grub2

Beitragvon doktor5000 » Feb 28th, '14, 18:11

Also, hier das init-Skript was für die Fedora Live-Images benutzt wird.
Siehe auch https://fedoraproject.org/wiki/How_to_c ... ersistence und https://fedoraproject.org/wiki/Features/LivePersistence für mehr Infos.

Code: Alles auswählen
%post
# FIXME: it'd be better to get this installed from a package
cat > /etc/rc.d/init.d/livesys << EOF
#!/bin/bash
#
# live: Init script for live image
#
# chkconfig: 345 00 99
# description: Init script for live image.
### BEGIN INIT INFO
# X-Start-Before: display-manager
### END INIT INFO

#added for some verbosity during boot to help debug added scriptlets
set -x

. /etc/init.d/functions

if ! strstr "\`cat /proc/cmdline\`" rd.live.image || [ "\$1" != "start" ]; then
    exit 0
fi

if [ -e /.liveimg-configured ] ; then
    configdone=1
fi

exists() {
    which \$1 >/dev/null 2>&1 || return
    \$*
}

touch /.liveimg-configured

# Make sure we don't mangle the hardware clock on shutdown
ln -sf /dev/null /etc/systemd/system/hwclock-save.service

livedir="LiveOS"
for arg in \`cat /proc/cmdline\` ; do
  if [ "\${arg##rd.live.dir=}" != "\${arg}" ]; then
    livedir=\${arg##rd.live.dir=}
    return
  fi
  if [ "\${arg##live_dir=}" != "\${arg}" ]; then
    livedir=\${arg##live_dir=}
    return
  fi
done

# enable swaps unless requested otherwise
swaps=\`blkid -t TYPE=swap -o device\`
if ! strstr "\`cat /proc/cmdline\`" noswap && [ -n "\$swaps" ] ; then
  for s in \$swaps ; do
    action "Enabling swap partition \$s" swapon \$s
  done
fi
if ! strstr "\`cat /proc/cmdline\`" noswap && [ -f /run/initramfs/live/\${livedir}/swap.img ] ; then
  action "Enabling swap file" swapon /run/initramfs/live/\${livedir}/swap.img
fi

mountPersistentHome() {
  # support label/uuid
  if [ "\${homedev##LABEL=}" != "\${homedev}" -o "\${homedev##UUID=}" != "\${homedev}" ]; then
    homedev=\`/sbin/blkid -o device -t "\$homedev"\`
  fi

  # if we're given a file rather than a blockdev, loopback it
  if [ "\${homedev##mtd}" != "\${homedev}" ]; then
    # mtd devs don't have a block device but get magic-mounted with -t jffs2
    mountopts="-t jffs2"
  elif [ ! -b "\$homedev" ]; then
    loopdev=\`losetup -f\`
    if [ "\${homedev##/run/initramfs/live}" != "\${homedev}" ]; then
      action "Remounting live store r/w" mount -o remount,rw /run/initramfs/live
    fi
    losetup \$loopdev \$homedev
    homedev=\$loopdev
  fi

  # if it's encrypted, we need to unlock it
  if [ "\$(/sbin/blkid -s TYPE -o value \$homedev 2>/dev/null)" = "crypto_LUKS" ]; then
    echo
    echo "Setting up encrypted /home device"
    plymouth ask-for-password --command="cryptsetup luksOpen \$homedev EncHome"
    homedev=/dev/mapper/EncHome
  fi

  # and finally do the mount
  mount \$mountopts \$homedev /home
  # if we have /home under what's passed for persistent home, then
  # we should make that the real /home.  useful for mtd device on olpc
  if [ -d /home/home ]; then mount --bind /home/home /home ; fi
  [ -x /sbin/restorecon ] && /sbin/restorecon /home
  if [ -d /home/liveuser ]; then USERADDARGS="-M" ; fi
}

findPersistentHome() {
  for arg in \`cat /proc/cmdline\` ; do
    if [ "\${arg##persistenthome=}" != "\${arg}" ]; then
      homedev=\${arg##persistenthome=}
      return
    fi
  done
}

if strstr "\`cat /proc/cmdline\`" persistenthome= ; then
  findPersistentHome
elif [ -e /run/initramfs/live/\${livedir}/home.img ]; then
  homedev=/run/initramfs/live/\${livedir}/home.img
fi

# if we have a persistent /home, then we want to go ahead and mount it
if ! strstr "\`cat /proc/cmdline\`" nopersistenthome && [ -n "\$homedev" ] ; then
  action "Mounting persistent /home" mountPersistentHome
fi

# make it so that we don't do writing to the overlay for things which
# are just tmpdirs/caches
mount -t tmpfs -o mode=0755 varcacheyum /var/cache/yum
mount -t tmpfs vartmp /var/tmp
[ -x /sbin/restorecon ] && /sbin/restorecon /var/cache/yum /var/tmp >/dev/null 2>&1

if [ -n "\$configdone" ]; then
  exit 0
fi

# add fedora user with no passwd
action "Adding live user" useradd \$USERADDARGS -c "Live System User" liveuser
#passwd -d liveuser > /dev/null
usermod -aG wheel liveuser > /dev/null

# Remove root password lock
#passwd -d root > /dev/null

# add basic passwords to pass checks for live mode
# install requires to set new passwords for both
echo 'root:root' | chpasswd
echo 'liveuser:liveuser' | chpasswd

#reenables zapping/restart of Xserver via Ctrl+Alt+Backspace
if strstr "\`cat /proc/cmdline\`" rd.live.image ;
    then
   :;
    else
   #sed -i '/Option "XkbOptions" "grp:alt_shift_toggle"/a \\tOption "XkbOptions" "terminate:ctrl_alt_bksp"' /etc/X11/xorg.conf.d/00-keyboard.conf
   sed -i '/Option "XkbVariant" "nodeadkeys"/a \\tOption "XkbOptions" "terminate:ctrl_alt_bksp"' /etc/X11/xorg.conf.d/00-keyboard.conf
fi


#skip check for full disk encryption in live mode, readd when non-live (installed system)
if strstr "\`cat /proc/cmdline\`" rd.live.image ;
    then
   :
    else
   :
fi

# reinstall 3 packages which need reinstalling
# after first non-live boot -> works in live mode, breaks in installed system :/
if strstr "\`cat /proc/cmdline\`" rd.live.image ;
    then
   :;
    else
   time yum reinstall -y /opt/scripts/*.rpm && echo "OK" > /root/reinstall.log || echo "FAIL" > /root/reinstall.log
fi

# make sure german keyboard is used
system-config-keyboard de-latin1-nodeadkeys
#system-config-keyboard will not work in chroot, dbus is not running, maybe it works here in livesys script

localectl set-locale LANG=de_DE.UTF-8
#localectl set-keymap de-latin1-nodeadkeys
#localectl set-x11-keymap de pc105 nodeadkeys

# don't use prelink on a running live image
sed -i 's/PRELINKING=yes/PRELINKING=no/' /etc/sysconfig/prelink &>/dev/null || :

# turn off mdmonitor by default
systemctl --no-reload disable mdmonitor.service 2> /dev/null || :
systemctl --no-reload disable mdmonitor-takeover.service 2> /dev/null || :
systemctl stop mdmonitor.service 2> /dev/null || :
systemctl stop mdmonitor-takeover.service 2> /dev/null || :

# don't enable the gnome-settings-daemon packagekit plugin
gsettings set org.gnome.settings-daemon.plugins.updates active 'false' || :

# don't start cron/at as they tend to spawn things which are
# disk intensive that are painful on a live image
systemctl --no-reload disable crond.service 2> /dev/null || :
systemctl --no-reload disable atd.service 2> /dev/null || :
systemctl stop crond.service 2> /dev/null || :
systemctl stop atd.service 2> /dev/null || :


#regenerate initrds and enable grub graphical theme in non-live mode
if strstr "\`cat /proc/cmdline\`" rd.live.image ;
    then
   :;
    else
   sed -i 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=2/' /etc/default/grub
   sed -i 's/GRUB_TERMINAL_OUTPUT="console"/#GRUB_TERMINAL_OUTPUT="console\"/' /etc/default/grub ;
   grep -qi ^"GRUB_GFXMODE=.*" /etc/default/grub && sed -i 's/^GRUB_GFXMODE=.*/GRUB_GFXMODE="1600x900x32"/' /etc/default/grub  || echo 'GRUB_GFXMODE="1600x900x32"' >> /etc/default/grub
   grep -qi ^"GRUB_THEME=.*" /etc/default/grub && sed -i 's:GRUB_THEME=.*:GRUB_THEME="/boot/grub2/themes/system/theme.txt":' /etc/default/grub || echo 'GRUB_THEME="/boot/grub2/themes/system/theme.txt"' | tee -a /etc/default/grub ;
   sudo grub2-mkconfig -o /boot/grub2/grub.cfg ;
   /usr/sbin/plymouth-set-default-theme solar ;
   /usr/libexec/plymouth/plymouth-update-initrd ;
   /usr/bin/dracut --force ;
fi


# and hack so that we eject the cd on shutdown if we're using a CD...
if strstr "\`cat /proc/cmdline\`" CDLABEL= ; then
  cat >> /sbin/halt.local << FOE
#!/bin/bash
# XXX: This often gets stuck during shutdown because /etc/init.d/halt
#      (or something else still running) wants to read files from the block\
#      device that was ejected.  Disable for now.  Bug #531924
# we want to eject the cd on halt, but let's also try to avoid
# io errors due to not being able to get files...
#cat /sbin/halt > /dev/null
#cat /sbin/reboot > /dev/null
#/usr/sbin/eject -p -m \$(readlink -f /run/initramfs/livedev) >/dev/null 2>&1
#echo "Please remove the CD from your drive and press Enter to finish restarting"
#read -t 30 < /dev/console
FOE
chmod +x /sbin/halt.local
fi

# add static hostname to work around xauth bug
# https://bugzilla.redhat.com/show_bug.cgi?id=679486
echo "localhost" > /etc/hostname

EOF

# bah, hal starts way too late
cat > /etc/rc.d/init.d/livesys-late << EOF
#!/bin/bash
#
# live: Late init script for live image
#
# chkconfig: 345 99 01
# description: Late init script for live image.

. /etc/init.d/functions

if ! strstr "\`cat /proc/cmdline\`" rd.live.image || [ "\$1" != "start" ] || [ -e /.liveimg-late-configured ] ; then
    exit 0
fi

exists() {
    which \$1 >/dev/null 2>&1 || return
    \$*
}

touch /.liveimg-late-configured

# read some variables out of /proc/cmdline
for o in \`cat /proc/cmdline\` ; do
    case \$o in
    ks=*)
        ks="--kickstart=\${o#ks=}"
        ;;
    xdriver=*)
        xdriver="\${o#xdriver=}"
        ;;
    esac
done

# if liveinst or textinst is given, start anaconda
if strstr "\`cat /proc/cmdline\`" liveinst ; then
   plymouth --quit
   /usr/sbin/liveinst \$ks
fi
if strstr "\`cat /proc/cmdline\`" textinst ; then
   plymouth --quit
   /usr/sbin/liveinst --text \$ks
fi

# configure X, allowing user to override xdriver
if [ -n "\$xdriver" ]; then
   cat > /etc/X11/xorg.conf.d/00-xdriver.conf <<FOE
Section "Device"
   Identifier   "Videocard0"
   Driver   "\$xdriver"
EndSection
FOE
fi

EOF

chmod 755 /etc/rc.d/init.d/livesys
/sbin/restorecon /etc/rc.d/init.d/livesys
/sbin/chkconfig --add livesys

chmod 755 /etc/rc.d/init.d/livesys-late
/sbin/restorecon /etc/rc.d/init.d/livesys-late
/sbin/chkconfig --add livesys-late

# enable tmpfs for /tmp
systemctl enable tmp.mount

# work around for poor key import UI in PackageKit
rm -f /var/lib/rpm/__db*
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
echo "Packages within this LiveCD"
rpm -qa
# Note that running rpm recreates the rpm db files which aren't needed or wanted
rm -f /var/lib/rpm/__db*

# go ahead and pre-make the man -k cache (#455968)
/usr/bin/mandb

# save a little bit of space at least...
rm -f /boot/initramfs*
# make sure there aren't core files lying around
rm -f /core*

# convince readahead not to collect
# FIXME: for systemd

%end


%post --nochroot
cp $INSTALL_ROOT/usr/share/doc/*release/GPL $LIVE_ROOT/GPL

# only works on x86, x86_64
if [ "$(uname -i)" = "i386" -o "$(uname -i)" = "x86_64" ]; then
  if [ ! -d $LIVE_ROOT/LiveOS ]; then mkdir -p $LIVE_ROOT/LiveOS ; fi
  cp /usr/bin/livecd-iso-to-disk $LIVE_ROOT/LiveOS
fi
%end


Ein paar meiner Anpassungen habe ich wieder entfernt oder die relevanten Stellen unkenntlich gemacht, da für recht spezielle Software die nicht frei erhältlich ist.
Die Datei wo das enthalten ist heißt fedora-live-base.ks und kommt mit den Kickstart-Files für die Fedora-Spins mit.

Anbei noch ein kurzer Crashkurs um so ein Live-Image unter Fedora zu bauen, ergänzend zu https://fedoraproject.org/wiki/How_to_c ... _a_Live_CD

Code: Alles auswählen
sudo yum install lorax livecd-tools spin-kickstarts l10n-kickstarts fedora-kickstarts system-config-kickstart

#copy over kickstart files for kde livecd/dvd, better work in /usr/share/spin-kickstarts to not have to copy over all included files ...
sudo cp /usr/share/spin-kickstarts/fedora-live-kde.ks /usr/share/spin-kickstarts/fedora-live-kde-base.ks /usr/share/spin-kickstarts/fedora-live-base.ks /usr/share/spin-kickstarts/fedora-kde-packages.ks /usr/share/spin-kickstarts/fedora-live-minimization.ks .
sudo cp fedora-live-kde.ks oc-fedora.ks
sudo vi oc-fedora.ks

#disable SELinux
sudo setenforce 0
#sudo rm -f OpenClient-Fedora-19.iso

#prepend by "setarch i686" for i686 ISO on x86_64
sudo LC_ALL=C livecd-creator -l --config=oc-fedora.ks --cache=/cache --title="OpenClient Fedora Edition" --product="OpenClient Fedora Edition" --fslabel=OpenClient-Fedora-20 --releasever 20 -t /var/tmp/oc-fedora/  --verbose -d --logfile=livecd_$(date +"%Y%m%d").log

#force/unmount all temporary mounted FS (when doing Ctrl+C during creation)
sudo umount -f $(mount | grep /var/tmp/oc-fedora | awk '{print $3}')
fuser -k /var/tmp/oc-fedora/$(ls -t /var/tmp/oc-fedora/ | head -1)

#SHORT CHECK VIA QEMU
qemu-kvm -m 4096 -cdrom OpenClient-Fedora-20.iso




Bei Fragen fragen.
Ich bin nicht böse, sondern nur ehrlich. Und wer lesen kann, ist klar im Vorteil.
----
Mageia - the magic continues
Benutzeravatar
doktor5000
 
Beiträge: 6062
Registriert: Jun 2nd, '11, 09:39

Vorherige

Zurück zu Erweiterter Support

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron