#!/usr/bin/perl -cw use MDK::Common; my $use_modules = to_bool($live->{settings}{pack}); my @user_config_dirs = ('/etc/skel', if_($live->{settings}{default_user}, '/home/' . $live->{settings}{default_user})); sub build_one_label { my ($live) = @_; my ($version, $extra) = split(/-/, $live->{settings}{version}); "LABEL=" . join("-", "Mageia", $version, $live->{settings}{desktop}, $live->{settings}{product}); } my $_l = { workdir => $live->{settings}{workdir}, system => { root => $live->{settings}{chroot}, repository => $live->{settings}{repository}, auto_install => 'config/auto_inst.cfg.pl', install_env => { }, if_($live->{settings}{default_user}, preselect_kdm_user => $live->{settings}{default_user}), langs_always => [ 'en_US' ], files => [ if_($live->{settings}{desktop} eq 'GNOME', # add draklive-install icon to favourites in live mode and disable screen locking # (override files are processed in alphabetical order - make sure this one comes last) [ 'files/live.gschema.override', '/usr/share/glib-2.0/schemas/live.gschema.override', { mode => 0644, no_install => 1 } ], # disable Wayland when we know it won't work (workaround for mga#20079) [ 'files/50gdm-disable-wayland.xsetup', '/etc/X11/xsetup.d/50gdm-disable-wayland.xsetup', { mode => 0755 } ], ), # provide a noxorgconf boot command option to try to fix issues with nouveau driver on some hardware [ 'files/10no-xorg-conf.xsetup', '/etc/X11/xsetup.d/10no-xorg-conf.xsetup', { mode => 0755 } ], # blacklist pata_acpi [ 'files/blacklist_ide.conf', '/etc/modprobe.d/blacklist_ide.conf', { mode => 0644 } ], # clean live files [ 'files/live.51-mageia-resume.conf', '/etc/dracut.conf.d/51-mageia-resume.conf', { mode => 0644 } ], [ 'files/live.modprobe.conf', '/etc/modprobe.conf', { mode => 0644 } ], # add local repos if_($live->{settings}{arch} eq 'i586', [ 'files/mga_rpms/i586/mga_rpms', '/var/local' ], ), if_($live->{settings}{arch} eq 'x86_64', [ 'files/mga_rpms/x86_64/mga_rpms', '/var/local' ], ), # add initial dns resolver for online medias [ 'files/resolv.conf', '/etc/resolv.conf', { mode => 0644 } ], # disable suspend and hibernate in live mode [ 'files/50-disable-suspend.pkla', '/etc/polkit-1/localauthority/50-local.d/50-disable-suspend.pkla', { mode => 0644, no_install => 1 } ], #- make cups the default spooler [ 'files/defaultspooler', '/etc/foomatic/defaultspooler', { mode => 0644 } ], #- eject eject medium before halt/reboot [ 'files/halt-local.service', '/etc/systemd/system/halt-local.service', { mode => 0644, no_install => 1 } ], [ 'files/halt.local', '/sbin/halt.local', { mode => 0755, no_install => 1 } ], #- do not load usblp and trigger autosetupprintqueues in live since cups is not available [ 'files/live.modprobe', '/etc/modprobe.d/live.conf', { mode => 0644, no_install => 1 } ], # live media specific initrd [ 'files/live-dracut.conf', '/etc/dracut.conf.d/60-live.conf', { mode => 0644, no_install => 1 } ], #- disable first boot wizard at live boot [ 'files/firstboot', '/etc/sysconfig/firstboot', { mode => 0644 } ], #- enable drakx-finish-install at live boot [ "files/finish-install", '/etc/sysconfig/finish-install', { mode => 0644 } ], # fix for sometimes wrong permissions [ 'files/draklive-install.d/run.d/home-live-permissions.sh', '/etc/draklive-install.d/run.d/home-live-permissions.sh', { mode => 755 } ], # fix for /var/lib/gdm sometimes ending up as root:root if_($live->{settings}{desktop} eq 'GNOME', [ 'files/draklive-install.d/run.d/gdm-permissions.sh', '/etc/draklive-install.d/run.d/gdm-permissions.sh', { mode => 755 } ] ), if_($live->{settings}{desktop} eq 'Plasma', [ 'files/draklive-install.d/run.d/generate-gtk-icon-cache.sh', '/etc/draklive-install.d/run.d/generate-gtk-icon-cache.sh', { mode => 755 } ], [ 'files/draklive-install.d/remove.d/clear-sddm-state', '/etc/draklive-install.d/remove.d/clear-sddm-state', { mode => 0644 } ], ), #- sysconfig files for first boot [ 'files/draklive-install.d/finish-install', '/etc/draklive-install.d/sysconfig/finish-install', { mode => 0644 } ], [ 'files/draklive-install.d/firstboot', '/etc/draklive-install.d/sysconfig/firstboot', { mode => 0644 } ], [ 'files/draklive-install.d/services', '/etc/draklive-install.d/services', { mode => 0644 } ], #- don't make kbluetoothrc display an annoying and useless popup window, and disable it by default [ 'files/kbluetoothrc', '/etc/kde/kbluetoothrc', { mode => 0644 } ], [ 'files/korgacrc', '/etc/kde/korgacrc', { mode => 0644 } ], (map { [ 'files/mgaonlinerc', $_ . '/.MgaOnline/mgaonline', { mode => 0644, no_install => 1 } ] } @user_config_dirs), (map { [ 'files/draksnapshot.sysconfig', $_ . '/.draksnapshot', { mode => 0644, no_install => 1 } ] } @user_config_dirs), [ 'files/compute-ooo-dicts.pl', '/usr/sbin/compute-ooo-dicts.pl', { mode => 0755 } ], [ 'files/compute-i18n-list.pl', '/usr/sbin/compute-i18n-list.pl', { mode => 0755 } ], ], remove_files => [ (map { "/etc/modprobe.preload.d/$_" } qw(cpufreq pcmcia rfswitch)), "/etc/udev/rules.d/70-persistent-*.rules", "/var/lib/dbus/machine-id", "/etc/ssh/ssh_host_*", ], module_options => { loop => "max_loop=64", }, exclude_modules => [ ], additional_modules => [ ], stage2_updates => [ ], patches => [ ], erase_rpms => [ ], rpms => [ ], disable_services => [ # uncommon hardware qw(bpalogin capi4linux cpqarrayd mdadm oki4daemon pcscd), # unneeded software qw(chronyd ntpd snmpd), # slows down basic usage and install, reenabled after install qw(crond msec), ], disable_timers => [ ], append => "splash quiet noiswmd audit=0 rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0", vga_mode => 788, postInstall => join(';', if_($live->{settings}{default_user}, "echo $live->{settings}{default_user} > /etc/draklive-install.d/user"), "perl -pi -e 's,,$live->{settings}{default_user},' /etc/draklive-install.d/sysconfig/finish-install", if_($live->{settings}{desktop} eq 'Xfce' && $live->{settings}{default_user}, # add a desktop icon to run draklive-install "mkdir -p /home/$live->{settings}{default_user}/Desktop", "cp /usr/share/applications/mageia-draklive-install.desktop /home/$live->{settings}{default_user}/Desktop/draklive-install.desktop", ), #- fix user perms for copied files if_($live->{settings}{default_user}, "chown -R " . "$live->{settings}{default_user}.$live->{settings}{default_user}" . " /home/$live->{settings}{default_user}" ), # remove readahead "rm -f /.readahead_collect", #- adduser seems to create a sparse lastlog with a slot for all available users #- which can be huge '> /var/log/lastlog', if_($live->{settings}{desktop} eq 'Plasma', "rm -f /usr/share/icons/*/icon-theme.cache", "cp -a /etc/akonadi/mysql-global.conf /etc/akonadi/mysql-global-standard.conf", "cp /etc/akonadi/mysql-global-mobile.conf /etc/akonadi/mysql-global.conf", "ak=/etc/draklive-install.d/run.d/restore-akonadi-config.sh; echo -e '#!/bin/sh\ncp /etc/akonadi/mysql-global-standard.conf /etc/akonadi/mysql-global.conf' > \$ak; chmod +x \$ak", ), if_($live->{settings}{desktop} eq 'GNOME', # modify and compile schema to get draklive-install and Firefox in menu "sed -i 's/epiphany.desktop/firefox.desktop/' /usr/share/glib-2.0/schemas/glib2-branding.gschema.override", "glib-compile-schemas /usr/share/glib-2.0/schemas/", # fix permissions to enable GDM to rerun if the user logs out "chown -R gdm:gdm /var/lib/gdm", # switch to NetworkManager "systemctl disable network", "systemctl disable network-up", "systemctl enable NetworkManager.service", "systemctl enable NetworkManager-wait-online.service", "sed -i 's/NETWORK=yes/NETWORK=no/' /etc/draklive-install.d/sysconfig/finish-install", "echo 'AUTOSTART=FALSE' > /home/live/.net_applet", ), # add local medias "urpmi.addmedia 'Live Core' /var/local/mga_rpms/core with media_info/hdlist.cz", "urpmi.addmedia 'Live Nonfree' /var/local/mga_rpms/nonfree with media_info/hdlist.cz", # disable HPLIP systray startup "echo 'Hidden=true' >> /etc/xdg/autostart/hplip-systray.desktop", # remove pre-installed grub2, we need to be able to select grub2 vs grub2-efi at install time "rpm -e --nodeps grub2", # allow draklive-install to spawn subtasks that access the display "echo 'session optional pam_xauth.so # for draklive-install' >> /etc/pam.d/polkit-1", # set the timestamp on the font directories to be a whole second # fc-cache looks at the nano second portion which may be non-zero # as we are on ext4, but then it will compare against the stamps # on the squashfs live image which have whole second resolution # (adapted from fix descrived in OpenMandriva bug 1764) "find /usr/share/fonts -type d -exec touch -t \$(date +%Y%m%d%H%M.%S) '{}' ';'", # now update the cache for the new timestamps "fc-cache -rf", # set the initial wireless regulatory domain to "world", enabling # all possible wireless channels to be used. "sed -i -r 's/CRDA_DOMAIN=.*/CRDA_DOMAIN=00/' /etc/sysconfig/network", # try to avoid plymouth falling back to text mode (mga#19984) "sed -i -r 's/DeviceTimeout=[0-9]+/DeviceTimeout=10/' /usr/share/plymouth/plymouthd.defaults", ), additional_media => [ if_($live->{settings}{updates_repository}, { name => 'core_updates_testing', path => $live->{settings}{updates_repository} . '/' . $live->{settings}{arch} . '/media/core/updates_testing', packages => [ ], }, ), ], }, loopbacks => { exclude => { type => 'squashfs', files => [ { path => '/root/drakx' }, #- to skip a file list generated with: #- find /usr/share/doc/HTML -mindepth 1 -maxdepth 1 -type d > /root/drakx/HTML.skipped #{ source => '/root/drakx/HTML.skipped', rooted => 1 }, ], }, if_($use_modules, modules => [ { type => 'squashfs', source => '/root/drakx/i18n-*.lst', rooted => 1 }, ]), }, regions => { #- the "all" region has a magical behavior and selects all langs int => [qw(en)], }, packs => { int => [ map { "i18n-$_" } qw(en) ], }, media => { storage => 'iso', source => build_one_label($live), bootloader_theme => 'maggy', bootloader_timeout => 10, bootloader_default => 0, bootloader_entries => [ 'Boot Mageia Live' => 'xdriver=free', ' + use non-free video drivers' => 'nokmsboot', 'Install Mageia Live' => 'install xdriver=free', ' + use non-free video drivers' => 'install nokmsboot', ], #mbr_boot_img => 'files/grub2/boot_hybrid.img', #eltorito_img => 'files/grub2/eltorito.img', #bootx64_efi => 'files/grub2/bootx64.efi', files => [ # FIXME: add doc and autorun #[ 'extra/livecd/autorun/*', ''], #map { [ 'extra/livecd/' . $_, $_ ] } qw(LISEZMOI.pdf README.pdf) ], }, mount => MDV::Draklive::Mounts::volatile_squash_union($use_modules), };