my $distro = $build->{settings}{distro}; my $version = $build->{settings}{version}; my $product = $build->{settings}{product}; my $desktop = $build->{settings}{desktop}; my $arch = $build->{settings}{arch}; my $default_user = $build->{settings}{default_user}; my @user_config_dirs = ('/etc/skel', '/home/' . $default_user); sub build_label { my ($build) = @_; join('-', $distro, $version, $product, $desktop, $arch); } sub build_title { my ($build) = @_; join(' ', $distro, $version, $product, $desktop); } my $default_append = 'root=mgalive:LABEL=' . build_label($build) . ' splash quiet noiswmd audit=0 rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0'; my $config = { system => { enabled_media => [ 'Core Release', 'Core Updates', 'Nonfree Release', 'Nonfree Updates', ], rpmsrate_flags => [ 'LIVE', # office qw(CAT_OFFICE CAT_SPELLCHECK CAT_PIM CAT_ARCHIVING CAT_PRINTER), # multimedia qw(CAT_AUDIO CAT_VIDEO CAT_GRAPHICS), # internet qw(CAT_NETWORKING_WWW CAT_NETWORKING_MAIL CAT_NETWORKING_NEWS CAT_COMMUNICATIONS CAT_NETWORKING_CHAT), qw(CAT_NETWORKING_FILE_TRANSFER CAT_NETWORKING_IRC CAT_NETWORKING_INSTANT_MESSAGING CAT_NETWORKING_DNS), # network qw(CAT_NETWORKING_REMOTE_ACCESS CAT_NETWORKING_FILE), # config qw(CAT_CONFIG), # console qw(CAT_EDITORS CAT_TERMINALS CAT_TEXT_TOOLS CAT_SHELLS CAT_FILE_TOOLS), # system qw(CAT_SYSTEM CAT_MINIMAL_DOCS CAT_X CAT_ACCESSIBILITY CAT_THEMES), # desktop qw(CAT_XFCE), ], rpmsrate_level => 5, include_packages => [ # Satisfy the basesystem bootloader requirement. 'drakiso-null-bootloader', # Some extra admin tools. 'bind-utils', 'btrfs-progs', 'dmraid', 'gparted', 'hdparm', 'mdadm', # Mageia docs. 'mageia-doc-mcc-en', 'mageia-doc-draklive-en', # Allow patching during customisation. 'patch', # s-c-p wants this if it detects a combined printer/scanner. 'simple-scan', # Provide a nicer UI for lxcontrol. 'Xdialog', ], exclude_packages => [ if_($arch eq 'i586', # We want the desktop586 kernel for maximum hardware compatibility. '/^kernel-desktop-/', '/^vboxadditions-kernel-.*-desktop-/', ), # No server kernels. '/^kernel-server-/', '/^vboxadditions-kernel-.*-server-/', # No bootloaders. The GRUB2 bootloaders are needed for install, so we add # them to the local repo, which means they are automatically excluded. 'grub', 'lilo', # No distribution license. 'flash-player-plugin', ], # preferred_packages => [ # ], local_repo_packages => [ # core 'broadcom-bcma-config', 'broadcom-ssb-config', 'dkms', 'efibootmgr', 'efivar', 'grub2', 'grub2-efi', 'grub2-mageia-theme', 'os-prober', if_($arch eq 'i586', 'kernel-desktop586-devel-latest'), if_($arch eq 'x86_64', 'kernel-desktop-devel-latest'), # nonfree 'dkms-broadcom-wl', 'dkms-nvidia304', 'x11-driver-video-nvidia304', 'dkms-nvidia340', 'x11-driver-video-nvidia340', 'dkms-nvidia-current', 'x11-driver-video-nvidia-current', ], langs_always => [ 'en_US' ], post_install => join(";", # systemd boots by default to multiuser.target (old init 3), so change to graphical (old init 5). "ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target", ), # additional_media => [ # { # name => '', # path => '', # packages => [ # ], # }, # ], # rpms => [ # ], # erase_rpms => [ # ], disable_services => [ # Uncommon hardware. qw(bpalogin capi4linux cpqarrayd mdadm oki4daemon pcscd), # Unneeded software. qw(chronyd snmpd), # Slows down basic usage and install, reenabled after install. qw(crond msec), ], # disable_timers => [ # ], files => [ # Clean configuration files. [ 'files/empty.conf', '/etc/dracut.conf.d/51-mageia-resume.conf', { mode => 0644 } ], [ 'files/empty.conf', '/etc/modprobe.conf', { mode => 0644 } ], # Blacklist pata_acpi (mga#3395). [ 'files/blacklist-ide.conf', '/etc/modprobe.d/blacklist-ide.conf', { mode => 0644 } ], # Live media specific initrd. [ 'files/dracut-live.conf', '/etc/dracut.conf.d/60-live.conf', { mode => 0644, no_install => 1 } ], # Enable drakx-finish-install at live boot. [ "files/finish-install", '/etc/sysconfig/finish-install', { mode => 0644 } ], # Disable mgaonline in live mode. (map { [ 'files/mgaonlinerc', $_ . '/.MgaOnline/mgaonline', { mode => 0644, no_install => 1 } ] } @user_config_dirs), # 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 } ], # sysconfig files for first boot after install. [ 'files/draklive-install.d/finish-install', '/etc/draklive-install.d/sysconfig/finish-install', { mode => 0644 } ], # Reenable services in installed system. [ 'files/draklive-install.d/services', '/etc/draklive-install.d/services', { mode => 0644 } ], # Fix for sometimes wrong permissions after install. [ 'files/draklive-install.d/run.d/home-live-permissions.sh', '/etc/draklive-install.d/run.d/home-live-permissions.sh', { mode => 755 } ], ], 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_*", ], # patches => [ # ], final_fixes => join(';', # Add a desktop icon to run draklive-install. "mkdir -p /home/$default_user/Desktop", "cp /usr/share/applications/mageia-draklive-install.desktop /home/$default_user/Desktop/draklive-install.desktop", # Fix permissions for copied files. "chown -R $default_user.$default_user /home/$default_user", # Set default user name for draklive-install. "echo $default_user > /etc/draklive-install.d/user", "sed -i s/DEFAULT_USER/$default_user/ /etc/draklive-install.d/sysconfig/finish-install", # 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", ), vga_mode => 788, }, loopbacks => { exclude => [ { path => '/root/drakx' }, ], }, # regions => { # # the "all" region has a magical behavior and selects all langs # }, media => { label => build_label($build), overlay_label => 'mgalive-persist', bootloader_title => build_title($build), bootloader_theme => '/usr/share/drakiso/bootloader/maggy', bootloader_font => '/usr/share/drakiso/bootloader/unicode.pf2', bootloader_langs => '/usr/share/drakiso/bootloader/lang-names.txt', bootloader_messages => '/usr/share/drakiso/bootloader/messages', bootloader_default => 0, bootloader_timeout => 10, bootloader_entries => [ 'Boot Mageia Live' => { append => $default_append . ' xdriver=free' }, ' + use non-free video drivers (slower to boot)' => { append => $default_append . ' nokmsboot' }, 'Install Mageia Live' => { append => $default_append . ' xdriver=free install' }, ' + use non-free video drivers (slower to boot)' => { append => $default_append . ' nokmsboot install' }, 'Memory Test' => { command => 'linux16', image => '/boot/memtest', initrd => 'none' }, ], mbr_boot_img => '/usr/share/drakiso/bootloader/images/boot_hybrid.img', eltorito_img => '/usr/share/drakiso/bootloader/images/eltorito.img', if_($arch eq 'i586', efi_type => '32bit', boot32_efi => '/usr/share/drakiso/bootloader/images/bootia32.efi' ), if_($arch eq 'x86_64', efi_type => '64bit', boot64_efi => '/usr/share/drakiso/bootloader/images/bootx64.efi' ), copy_from_repo => [ 'isolinux/memtest' => 'boot/memtest', ], }, };