diff --git a/share/config_files/.profile b/share/config_files/.profile new file mode 100644 index 00000000..b99980ea --- /dev/null +++ b/share/config_files/.profile @@ -0,0 +1,3 @@ +PS1="[anaconda \u@\h \W]\\\\$ " +PATH=/bin:/usr/bin:/usr/sbin:/mnt/sysimage/sbin:/mnt/sysimage/usr/sbin:/mnt/sysimage/bin:/mnt/sysimage/usr/bin +export PATH PS1 diff --git a/share/config_files/libuser.conf b/share/config_files/libuser.conf new file mode 100644 index 00000000..a7a0ef00 --- /dev/null +++ b/share/config_files/libuser.conf @@ -0,0 +1,10 @@ +[defaults] +skeleton = /mnt/sysimage/etc/skel +mailspooldir = /mnt/sysimage/var/mail +crypt_style = md5 +modules = files shadow +create_modules = files shadow +[files] +directory = /mnt/sysimage/etc +[shadow] +directory = /mnt/sysimage/etc diff --git a/share/config_files/selinux.config b/share/config_files/selinux.config new file mode 100644 index 00000000..eac67ab1 --- /dev/null +++ b/share/config_files/selinux.config @@ -0,0 +1,2 @@ +SELINUX=permissive +SELINUXTYPE=targeted diff --git a/share/lorax-s1.ltmpl b/share/lorax-s1.ltmpl index 798be36a..2fcb1ea1 100644 --- a/share/lorax-s1.ltmpl +++ b/share/lorax-s1.ltmpl @@ -8,7 +8,7 @@ install "NetworkManager-gnome" install "at-spi" install "at-spi-python" install "audit" -install "bind-libs-lite" +install "bind-libs" install "bind-utils" install "bitmap-fangsongti-fonts" install "btrfs-progs" @@ -64,6 +64,7 @@ install "lsof" install "lvm2-cluster" install "madan-fonts" install "man-db" +install "memtest86+" install "metacity" install "mt-st" install "mtr" @@ -264,7 +265,6 @@ remove "libselinux-utils" remove "libsndfile" remove "libsoup" remove "libtiff" -remove "libusb1" remove "libutempter" remove "libvirt-client" remove "libwnck" @@ -521,7 +521,9 @@ remove "NetworkManager" "/etc/rc.d/*" remove "NetworkManager" "/lib/systemd/*" remove "NetworkManager" "/usr/bin/*" remove "NetworkManager" "/usr/share/NetworkManager/*" +remove "NetworkManager" "/usr/share/locale/*/NetworkManager.mo" remove "NetworkManager-gnome" "/etc/xdg/*" +remove "NetworkManager-gnome" "/usr/bin/nm-applet" remove "NetworkManager-gnome" "/usr/${libdir}/*" remove "NetworkManager-gnome" "/usr/share/applications/*" remove "anaconda" "/etc/*" @@ -540,6 +542,11 @@ remove "bash" "/etc/*" remove "bash" "/usr/bin/*" remove "bash" "/usr/share/*" remove "bitmap-fangsongti-fonts" "/usr/share/fonts/*" +remove "btrfs-progs" "/sbin/btrfs" +remove "btrfs-progs" "/sbin/btrfs-*" +remove "btrfs-progs" "/sbin/btrfstune" +remove "ca-certificates" "/etc/pki/java/*" +remove "ca-certificates" "/etc/pki/tls/certs/ca-bundle.trust.crt" remove "ca-certificates" "/etc/ssl/*" remove "cjkuni-uming-fonts" "/etc/X11/*" remove "coreutils" "/etc/*" @@ -561,6 +568,8 @@ remove "dejavu-sans-fonts" "/usr/share/fonts/dejavu/DejaVuSans-BoldOblique*" remove "dejavu-sans-fonts" "/usr/share/fonts/dejavu/DejaVuSans-ExtraLight*" remove "dejavu-sans-fonts" "/usr/share/fonts/dejavu/DejaVuSans-Oblique*" remove "dejavu-sans-fonts" "/usr/share/fonts/dejavu/DejaVuSansCondensed*" +remove "dejavu-sans-mono-fonts" "/usr/share/fonts/dejavu/DejaVuSansMono-Bold*" +remove "dejavu-sans-mono-fonts" "/usr/share/fonts/dejavu/DejaVuSansMono-Oblique*" remove "device-mapper-multipath" "/etc/*" remove "dhclient" "/usr/*" remove "dmz-cursor-themes" "/usr/share/icons/dmz/*" @@ -580,7 +589,11 @@ remove "fcoe-utils" "/etc/rc.d/*" remove "fedora-gnome-theme" "/etc/gtk-3.0/*" remove "fedora-gnome-theme" "/usr/share/themes/*" remove "file-libs" "/usr/share/*" +remove "findutils" "/usr/bin/oldfind" remove "findutils" "/usr/share/*" +remove "firstboot" "/usr/sbin/*" +remove "firstboot" "/usr/share/firstboot/*" +remove "firstboot" "/usr/share/locale/*" remove "fontconfig" "/usr/bin/*" remove "gawk" "/usr/bin/*" remove "gawk" "/usr/libexec/*" @@ -622,10 +635,15 @@ remove "gnome-themes" "/usr/share/themes/LowContrast*" remove "gnome-themes" "/usr/share/themes/Mist/*" remove "gnome-themes" "/usr/share/themes/Simple/*" remove "gnutls" "/usr/share/locale/*" +remove "gpgme" "/usr/${libdir}/libgpgme-*" remove "grep" "/etc/*" remove "grep" "/usr/share/locale/*" +remove "grub" "/sbin/grub-*" +remove "grub" "/usr/bin/*" remove "groff" "/usr/share/*" remove "gstreamer" "/usr/bin/*" +remove "gstreamer" "/usr/lib64/gstreamer-0.10/*" +remove "gstreamer" "/usr/lib64/libgst*" remove "gstreamer" "/usr/libexec/*" remove "gstreamer" "/usr/share/locale/*" remove "gtk+" "/etc/*" @@ -661,6 +679,10 @@ remove "iproute" "/usr/*" remove "iputils" "/etc/*" remove "iputils" "/usr/sbin/*" remove "iscsi-initiator-utils" "/etc/rc.d/*" +remove "jfsutils" "/sbin/jfs_fsck" +remove "jfsutils" "/sbin/jfs_fscklog" +remove "jfsutils" "/sbin/jfs_logdump" +remove "jfsutils" "/sbin/jfs_mkfs" remove "kbd" "/usr/share/locale/*" remove "krb5-libs" "/usr/${libdir}/*" remove "less" "/etc/*" @@ -693,9 +715,14 @@ remove "libuser" "/usr/share/locale/*" remove "libvorbis" "/usr/${libdir}/libvorbisenc.*" remove "libxcb" "/usr/${libdir}/libxcb-*" remove "libxml2" "/usr/bin/*" +remove "libxml2-python" "/usr/${libdir}/python?.?/site-packages/libxml2mod.a" +remove "libxml2-python" "/usr/${libdir}/python?.?/site-packages/libxml2mod.la" remove "lldpad" "/etc/*" remove "lua" "/usr/bin/*" remove "lvm2" "/etc/*" +remove "lvm2-cluster" "/etc/rc.d/init.d/*" +remove "lvm2-cluster" "/usr/sbin/*" +remove "madan-fonts" "/usr/share/fonts/madan/*" remove "man-db" "/etc/sysconfig/*" remove "man-db" "/usr/bin/*" remove "man-db" "/usr/libexec/*" @@ -714,6 +741,8 @@ remove "metacity" "/usr/share/themes/Esco/*" remove "metacity" "/usr/share/themes/Metabox/*" remove "metacity" "/usr/share/themes/Simple/*" remove "module-init-tools" "/etc/*" +remove "module-init-tools" "/sbin/insmod.static" +remove "module-init-tools" "/sbin/weak-modules" remove "mt-st" "/etc/*" remove "mt-st" "/sbin/*" remove "mtools" "/etc/*" @@ -733,6 +762,8 @@ remove "openldap" "/etc/openldap/*" remove "openssh" "/etc/ssh/*" remove "openssh" "/usr/libexec/*" remove "openssh-clients" "/etc/ssh/*" +remove "openssh-clients" "/usr/bin/slogin" +remove "openssh-clients" "/usr/bin/ssh-*" remove "openssh-clients" "/usr/${libdir}/*" remove "openssh-clients" "/usr/libexec/*" remove "openssh-server" "/etc/ssh/*" @@ -782,6 +813,8 @@ remove "samba-winbind-clients" "/usr/${libdir}/libnss_*" remove "sed" "/usr/share/locale/*" remove "selinux-policy-targeted" "/usr/share/selinux/*" remove "smartmontools" "/etc/*" +remove "smartmontools" "/usr/sbin/smartd" +remove "smartmontools" "/usr/sbin/update-smart-drivedb" remove "smartmontools" "/usr/share/smartmontools/*" remove "sqlite" "/usr/bin/*" remove "system-config-date" "/etc/*" @@ -813,6 +846,32 @@ remove "xorg-x11-drv-wacom" "/usr/bin/*" remove "xorg-x11-fonts-ethiopic" "/etc/X11/*" remove "xorg-x11-fonts-misc" "/etc/X11/*" remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/encodings/*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/10x20*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/12x*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/18x18*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/4x6*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/5x7*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/5x8*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/6x10*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/6x12*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/6x9*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/7x*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/8x*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/9x*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/arabic*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/cl*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/cu-*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/cu12*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/cuarabic*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/cudevnag*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/dec*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/gb*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/hang*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/jiskan*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/k14*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/micro*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/nil2*" +remove "xorg-x11-fonts-misc" "/usr/share/X11/fonts/misc/olg*" remove "yum" "etc/*" remove "yum" "/usr/share/locale/*" remove "yum" "/usr/share/yum-cli/*" diff --git a/src/pylorax/__init__.py b/src/pylorax/__init__.py index 5c612662..1880e1f1 100644 --- a/src/pylorax/__init__.py +++ b/src/pylorax/__init__.py @@ -186,7 +186,8 @@ class Lorax(BaseLoraxClass): # set up install tree logger.info("setting up install tree") - self.installtree = LoraxInstallTree(self.yum, self.basearch) + self.installtree = LoraxInstallTree(self.yum, self.basearch, + self.libdir) # set up required build parameters logger.info("setting up build parameters") @@ -251,9 +252,7 @@ class Lorax(BaseLoraxClass): logger.info("moving stubs") self.installtree.move_stubs() - # cleanup python files - logger.info("cleaning up python files") - self.installtree.cleanup_python_files() + # get the list of required modules logger.info("getting list of required modules") @@ -288,8 +287,8 @@ class Lorax(BaseLoraxClass): self.installtree.get_config_files(config_dir) - # get loader - self.installtree.get_loader() + # get anaconda portions + self.installtree.get_anaconda_portions() # set up output tree logger.info("setting up output tree") @@ -394,6 +393,10 @@ class Lorax(BaseLoraxClass): logger.debug("{0}\t{1}".format(package, pattern_list)) self.installtree.yum.remove(package, pattern_list) + # cleanup python files + logger.info("cleaning up python files") + self.installtree.cleanup_python_files() + # compress install tree InitRD = namedtuple("InitRD", "fname fpath") initrd = InitRD("initrd.img", joinpaths(self.workdir, "initrd.img")) @@ -695,11 +698,12 @@ class Lorax(BaseLoraxClass): class LoraxInstallTree(BaseLoraxClass): - def __init__(self, yum, basearch): + def __init__(self, yum, basearch, libdir): BaseLoraxClass.__init__(self) self.yum = yum self.root = self.yum.installroot self.basearch = basearch + self.libdir = libdir self.lcmds = constants.LoraxRequiredCommands() @@ -797,6 +801,13 @@ class LoraxInstallTree(BaseLoraxClass): dst = joinpaths(self.root, "usr/bin") shutil.move(src, dst) + # move sitecustomize.py + pythonpath = joinpaths(self.root, "usr", self.libdir, "python?.?") + for path in glob.glob(pythonpath): + src = joinpaths(path, "site-packages/pyanaconda/sitecustomize.py") + dst = joinpaths(path, "site-packages") + shutil.move(src, dst) + def cleanup_python_files(self): for root, dnames, fnames in os.walk(self.root): for fname in fnames: @@ -1045,11 +1056,35 @@ class LoraxInstallTree(BaseLoraxClass): dst = joinpaths(self.root, "root") shutil.copy2(src, dst) - def get_loader(self): + # get .profile + src = joinpaths(src_dir, ".profile") + dst = joinpaths(self.root, "root") + shutil.copy2(src, dst) + + # get libuser.conf + src = joinpaths(src_dir, "libuser.conf") + dst = joinpaths(self.root, "etc") + shutil.copy2(src, dst) + + # get selinux config + if os.path.exists(joinpaths(self.root, "etc/selinux/targeted")): + src = joinpaths(src_dir, "selinux.config") + dst = joinpaths(self.root, "etc/selinux", "config") + shutil.copy2(src, dst) + + def get_anaconda_portions(self): + src = joinpaths(self.root, "usr", self.libdir, "anaconda", "loader") + dst = joinpaths(self.root, "sbin") + shutil.copy2(src, dst) + src = joinpaths(self.root, "usr/share/anaconda", "loader.tr") dst = joinpaths(self.root, "etc") shutil.move(src, dst) + src = joinpaths(self.root, "usr/libexec/anaconda", "auditd") + dst = joinpaths(self.root, "sbin") + shutil.copy2(src, dst) + def create_install_img(self, paths, type="squashfs", workdir="/tmp"): tempdir = tempfile.mkdtemp(prefix="install.img.", dir=workdir) @@ -1183,8 +1218,8 @@ normally would. """ readme = joinpaths(imgdir, "README") - with open(readme, "w") as fobj: - fobj.write(text.format(self)) + #with open(readme, "w") as fobj: + # fobj.write(text.format(self)) # write the images/pxeboot/README file text = """ @@ -1197,8 +1232,8 @@ initrd.img - an initrd with support for all install methods and """ readme = joinpaths(pxebootdir, "README") - with open(readme, "w") as fobj: - fobj.write(text.format(self)) + #with open(readme, "w") as fobj: + # fobj.write(text.format(self)) def get_kernels(self): kernels = self.installtree.kernels[:] @@ -1238,11 +1273,13 @@ initrd.img - an initrd with support for all install methods and "kernel {0}".format(self.main_kernel.fname)) # set label for finding stage2 with a hybrid iso - replace(isolinuxcfg, r"initrd=initrd.img", - 'initrd=initrd.img stage2=hd:LABEL="{0.product}"'.format(self)) + #replace(isolinuxcfg, r"initrd=initrd.img", + # 'initrd=initrd.img stage2=hd:LABEL="{0.product}"'.format(self)) # copy memtest - memtest = joinpaths(self.installtree.root, "boot/memtest*") + memtest = joinpaths(self.installtree.root, + "boot/memtest*") + for fname in glob.glob(memtest): shutil.copy2(fname, joinpaths(self.isolinuxdir, "memtest")) @@ -1259,18 +1296,20 @@ initrd.img - an initrd with support for all install methods and break # get splash - vesasplash = joinpaths(self.installtree.root, - "usr/share/anaconda/syslinux-vesa-splash.jpg") + vesasplash = joinpaths(self.installtree.root, "usr/share/anaconda", + "boot/syslinux-vesa-splash.jpg") + vesamenu = joinpaths(self.installtree.root, "usr/share/syslinux/vesamenu.c32") splashtolss = joinpaths(self.installtree.root, "usr/share/anaconda/splashtolss.sh") - syslinuxsplash = joinpaths(self.installtree.root, - "usr/share/anaconda/boot/syslinux-splash.jpg") - splashlss = joinpaths(self.installtree.root, - "usr/share/anaconda/boot/splash.lss") + syslinuxsplash = joinpaths(self.installtree.root, "usr/share/anaconda", + "boot/syslinux-splash.jpg") + + splashlss = joinpaths(self.installtree.root, "usr/share/anaconda", + "boot/splash.lss") if os.path.isfile(vesasplash): shutil.copy2(vesasplash, joinpaths(self.isolinuxdir, "splash.jpg")) @@ -1280,7 +1319,10 @@ initrd.img - an initrd with support for all install methods and elif os.path.isfile(splashtolss): cmd = [splashtolss, syslinuxsplash, splashlss] p = subprocess.Popen(cmd, stdout=subprocess.PIPE) - p.wait() + rc = p.wait() + if not rc == 0: + logger.error("failed to create splash.lss") + sys.exit(1) if os.path.isfile(splashlss): shutil.copy2(splashlss, self.isolinuxdir)