that’s too hard with rpm --root
so we’re going for yum
whatsoever
Either you got an RHEL host already, or you use a temporary XEN guest to actually prepare the file-system as such
tar xSf /data/templates/centos.qcow2.tar dd if=/dev/zero of=centos.xfs bs=1GB count=0 seek=10 vi centos kernel = "/data/kernels/5.2.21.domureiser4.vmlinuz" root = "/dev/xvda1 ro console=hvc0 net.ifnames=0 biosdevname=0 mitigations=off" name = "centos" vcpus = 3 maxvcpus = 8 memory = 7168 disk = ['qcow2:/root/guests/centos/centos.qcow2,xvda,w', 'file:/root/guests/centos/centos.xfs,xvdb1,w'] vif = [ 'bridge=br0, vifname=centos.0' ] type = "pvh" xl create centos -c
Once the guest is started, create the XFS file-system on the vdisk
mkfs.xfs /dev/xvdb1 mkdir lala/ mount /dev/xvdb1 lala/
yum wants /dev/null
and /proc/cpuinfo
mkdir lala/dev/ lala/proc/ mount --bind /dev lala/dev mount --bind /proc lala/proc #mount --bind /sys lala/sys
install CentOS Stream 8.2 onto the file-system
yum update yum groupinstall --releasever 8.2 --installroot `pwd`/lala/ Core -y
in case you where doing that from a temporary guest, it is now time to get back to domain zero and re-mount the thing
umount -R lala/ poweroff rm -f centos.qcow2 mkdir lala/ mount centos.xfs lala/ mount --bind /dev lala/dev mount --bind /proc lala/proc tar xzf /data/kernels/5.2.21.domureiser4.modules.tar.gz -C lala/lib/modules/ echo tmem > lala/etc/modules-load.d/tmem.conf cat > lala/etc/fstab <<EOF /dev/xvda1 / xfs defaults 0 1 EOF vi lala/usr/lib/systemd/system/console-getty.service ConditionPathExists=/dev/hvc0 ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear --keep-baud hvc0 115200,38400,9600 $TERM TTYPath=/dev/hvc0 echo centos > lala/etc/hostname echo 127.0.0.1 centos >> lala/etc/hosts cat > lala/etc/resolv.conf <<-EOF search nethence.com nameserver 62.210.16.6 nameserver 62.210.16.7 EOF cp -pi lala/etc/resolv.conf lala/etc/resolv.conf.ip4 ls -lF lala/etc/resolv.conf* vi lala/etc/sysconfig/network NETWORKING=yes NOZEROCONF=no GATEWAY=10.3.3.1 vi lala/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 IPADDR=10.3.3.9 PREFIX=24 ONBOOT=yes NM_CONTROLLED=no vi lala/etc/sysconfig/selinux #SELINUX=permissive SELINUX=disabled
OpenSSH complains about privkey perms being 640 by default so let’s fix it
chmod 400 lala/etc/ssh/ssh_host_*
disable that crap and setup the network old-school
chroot lala/ systemctl list-unit-files | grep -i cloud systemctl list-unit-files | grep -i network for sv in \ NetworkManager \ kdump \ firewalld \ auditd \ ; do echo disabling $sv ... systemctl disable $sv && echo done || echo FAILED echo done; unset sv yum update yum remove plymouth polkit yum install network-scripts mlocate -y systemctl enable network
Unlock the root account and get rid of any password and exit the chroot
passwd --delete root passwd -f --unlock root ^D
Ready to leave
umount -R lala/
SWITCH FROM VDISK2 to VDISK1!!!
disk = ['file:/root/guests/centos/centos.xfs,xvda1,w']
xl create centos -c cat /sys/devices/system/clocksource/clocksource0/current_clocksource lsmod free -m ping -c1 opendns.com systemctl stop sshd rm -f /etc/ssh/ssh_host_* updatedb sync history -c rm -f .bash_history ^] xl shu centos
What about the microcode?
[ 177.726567] This kernel doesn't handle early microcode load properly (it tries to load [ 177.726567] microcode even in virtualised environment, which may lead to a panic on some [ 177.726567] hypervisors), thus the microcode files have not been added to the initramfs [ 177.726567] image. Please update your kernel to one of the following: [ 177.726567] RHEL 7.5: kernel-3.10.0-862.14.1 or newer; [ 177.726567] RHEL 7.4: kernel-3.10.0-693.38.1 or newer; [ 177.726567] RHEL 7.3: kernel-3.10.0-514.57.1 or newer; [ 177.726567] RHEL 7.2: kernel-3.10.0-327.73.1 or newer. [ 177.726567] Please refer to /usr/share/doc/microcode_ctl/caveats/intel_readme [ 177.726567] and /usr/share/doc/microcode_ctl/README.caveats for details. [ 177.736294] Some Dell systems that use some models of Intel CPUs are susceptible to hangs [ 177.736294] and system instability during or after microcode update to newer revisions. [ 177.736294] In order to address this, microcode update to these newer revision [ 177.736294] has been disabled by default on these systems, and the previously published [ 177.736294] microcode revisions are used by default for the OS-driven microcode update. [ 177.736294] Please refer to /usr/share/doc/microcode_ctl/caveats/06-8e-9e-0x-dell_readme [ 177.736294] and /usr/share/doc/microcode_ctl/README.caveats for details.
SELINUX does not like our XEN guest
[FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details. [FAILED] Failed to start Rebuild Dynamic Linker Cache. See 'systemctl status ldconfig.service' for details. [FAILED] Failed to start Rebuild Hardware Database. See 'systemctl status systemd-hwdb-update.service' for details. [FAILED] Failed to start Security Auditing Service. See 'systemctl status auditd.service' for details. [FAILED] Failed to start Update UTMP about System Boot/Shutdown. See 'systemctl status systemd-update-utmp.service' for details. [DEPEND] Dependency failed for Update UTMP about System Runlevel Changes. [FAILED] Failed to listen on SSSD Kerberos Cache Manager responder socket. See 'systemctl status sssd-kcm.socket' for details. [FAILED] Failed to start System Security Services Daemon. See 'systemctl status sssd.service' for details. [FAILED] Failed to start Authorization Manager. See 'systemctl status polkit.service' for details. [DEPEND] Dependency failed for Dynamic System Tuning Daemon. [FAILED] Failed to start firewalld - dynamic firewall daemon. See 'systemctl status firewalld.service' for details.
==> re-enable and solve it at some time
getenforce sestatus
…from a system that is NOT RHEL
# choose your rsync mirror accordingly rsync -avz --delete rsync://mirror.in2p3.fr/ftp/linux/CentOS/8-stream/BaseOS/x86_64/os/Packages ./ rsync -avz rsync://mirror.in2p3.fr/ftp/linux/CentOS/8-stream/AppStream/x86_64/os/Packages/plymouth*.rpm Packages/ rsync -avz rsync://mirror.in2p3.fr/ftp/linux/CentOS/8-stream/AppStream/x86_64/os/Packages/rsyslog*.rpm Packages/ mkdir -p /root/guests/yoloo/lala/ cd /root/guests/yoloo/ dd if=/dev/zero of=yoloo.reiser4 bs=1GB count=0 seek=10 mkfs.reiser4 -dfy yoloo.reiser4 mount yoloo.reiser4 lala/ rpm --version # RPM version 4.15.1 cd Packages/ rpm -ivh --root=`pwd`/../lala/ basesystem-*.rpm filesystem-*.rpm setup-*.rpm \ rpmlib-*.rpm \ system-release-*.rpm
test run / check
cd Packages/ for pkg in `grep -v ^# lala`; do echo pkg is $pkg ls -1 $pkg-*.rpm | grep -E "^$pkg-[^-]+-[^-]+.(x86_64|noarch).rpm" echo done; unset pkg
proceed. note bash is needed for scriptlets
#lua for pkg in bash glibc glibc-common; do ls $pkg-*.rpm | grep -E "^$pkg-[^-]+-[^-]+.(x86_64|noarch).rpm" done | xargs rpm -ivh --force --nodeps --root=/root/guests/yoloo/lala/; unset pkg for pkg in `grep -v ^# lala`; do ls $pkg-*.rpm | grep -E "^$pkg-[^-]+-[^-]+.(x86_64|noarch).rpm" done | xargs rpm -ivh --force --nodeps --root=/root/guests/yoloo/lala/; unset pkg