View Issue Details

IDProjectCategoryView StatusLast Update
0018492CentOS-7squashfs-toolspublic2022-08-02 19:22
Reporterjustinw Assigned To 
PrioritynormalSeverityblockReproducibilityalways
Status closedResolutionno change required 
Product Version7.9.2009 
Summary0018492: Unable to pxe boot into CentOS 7 squashfs live image
DescriptionI'm encountering a bug after making edits to my squashfs image. The unedited version boots fine but now the system pauses after the following line:
localhost kernel: squashfs: version 4.0 (2009/01/31) Phillip Lougher
and here's more context:
[ 29.308400] localhost dracut-initqueue[259]: RTNETLINK answers: File exists
[ 29.965973] localhost dracut-initqueue[259]: % Total % Received % Xferd Average Speed Time Time Time Current
[ 29.975238] localhost kernel: random: fast init done
[ 29.970525] localhost dracut-initqueue[259]: Dload Upload Total Spent Left Speed
[ 33.204532] localhost kernel: random: crng init done
[ 38.915267] localhost dracut-initqueue[259]: 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
  0 1002M 0 5686k 0 0 101M 0 0:00:09 --:--:-- 0:00:09 100M
 11 1002M 11 117M 0 0 111M 0 0:00:08 0:00:01 0:00:07 111M
 22 1002M 22 230M 0 0 111M 0 0:00:08 0:00:02 0:00:06 111M
 34 1002M 34 342M 0 0 112M 0 0:00:08 0:00:03 0:00:05 112M
 45 1002M 45 453M 0 0 111M 0 0:00:08 0:00:04 0:00:04 111M
 56 1002M 56 565M 0 0 111M 0 0:00:08 0:00:05 0:00:03 112M
 67 1002M 67 678M 0 0 112M 0 0:00:08 0:00:06 0:00:02 112M
 78 1002M 78 790M 0 0 112M 0 0:00:08 0:00:07 0:00:01 112M
 90 1002M 90 902M 0 0 112M 0 0:00:08 0:00:08 --:--:-- 112M
100 1002M 100 1002M 0 0 112M 0 0:00:08 0:00:08 --:--:-- 112M
[ 38.991803] localhost kernel: squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 166.025697] localhost dracut-initqueue[259]: Warning: dracut-initqueue timeout - starting timeout scripts
[ 166.565439] localhost dracut-initqueue[259]: Warning: dracut-initqueue timeout - starting timeout scripts
[ 167.091962] localhost dracut-initqueue[259]: Warning: dracut-initqueue timeout - starting timeout scripts

I've attached a rdsosreport with the rd.debug enabled as a kernel option. Unfortunately, I don't have an exact history of the edits I made to the squash image but I did the following:
I enabled auto root login according to post #10 in the following forum:
https://forums.fedoraforum.org/showthread.php?297228-root-autologin-in-Fedora-20-minimal-installation
I installed gcc, make, c++ to compile stressapptest package for CentOS 7
https://github.com/stressapptest/stressapptest

Kernel Command Line from rdsosreport:
CMDLINE_PROC=' BOOT_IMAGE=imageC7/vmlinuz vga=771 rootflags=loop initrd=imageC7/initrd.img rootfstype=auto ro root=live:http://192.168.16.1:/C7/LiveOS/squashfs.img rd.live.image nomodeset rd.luks=0 rd.dm=0 rd.md=0 selinux-0 rd.net.timeout.carrier=5 rd.debug'
Steps To Reproduce1. Create squashfs live image for CentOS 7 release 7.9.2009 (Core) using livemedia-creator and the attached kickstart (note I'm booting the packages from a local yum repo)
2. unsquashfs -d 2mount/ squashfs.img
3. mount -o loop 2mount/root.fs 3mount/
4. mount -bind /dev 3mount/dev
5. cp /etc/resolv.conf /etc/hosts 3mount/etc/
6. chroot 3mount/
7. __vte_prompt_command() { true; }
8. mount -t proc none /proc/
9. mount -t sysfs none /sys/
10. export HOME=/root
11. *make the changes mentioned above
12. rm -rf /tmp/*
13. umount /proc/
14. umount /sys/
15. exit
16. umount 3mount/dev
17. umount 3mount
18. mkquashfs 2mount/rootfs.img 4mount/squashfs.img -comp xz -Xbcj x86
TagsNo tags attached.
abrt_hash
URL

Activities

justinw

justinw

2022-08-02 18:47

reporter  

rdsosreport-debug1.txt (1,418,403 bytes)
rdsosreport-debug2.txt (1,234,404 bytes)
2c7-working.ks (11,148 bytes)   
#version=DEVEL
sshpw --username=root --plaintext randOmStrinGhERE
# Firewall configuration
firewall --enabled --service=mdns
# Use network installation
url --url=http://10.43.248.29/C7/repos/base/
repo --name=centosplus --baseurl=http://10.43.248.29/C7/repos/centosplus/
repo --name=extras --baseurl=http://10.43.248.29/C7/repos/extras/
repo --name=updates --baseurl=http://10.43.248.29/C7/repos/updates/

# X Window System configuration information
xconfig  --startxonboot
# Root password is removed for live-iso
rootpw --plaintext removethispw
# Network information
network  --bootproto=dhcp --device=eno1 --onboot=on --activate --noipv6
# System keyboard
keyboard --xlayouts=us --vckeymap=us
# System language
lang en_US.UTF-8
# SELinux configuration
selinux --enforcing
# Installation logging level
# logging --level=info
# Shutdown after installation
shutdown
# System services
services --disabled="network,sshd" --enabled="NetworkManager"
# System timezone
timezone  America/Los_Angeles
# System bootloader configuration
bootloader --location=none
# Clear the Master Boot Record
zerombr
# Clear blank disks or all existing partitions
clearpart --all
# Disk partitioning information
reqpart
part / --size=4096 --maxsize=16384 --grow

%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

. /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
    \$*
}

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

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

# turn off firstboot for livecd boots
systemctl --no-reload disable firstboot-text.service 2> /dev/null || :
systemctl --no-reload disable firstboot-graphical.service 2> /dev/null || :
systemctl stop firstboot-text.service 2> /dev/null || :
systemctl stop firstboot-graphical.service 2> /dev/null || :

# 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.software download-updates '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 || :

# Don't sync the system clock when running live (RHBZ #1018162)
sed -i 's/rtcsync//' /etc/chrony.conf

# Mark things as configured
touch /.liveimg-configured

# 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

# make it so that we don't do writing to the overlay for things which
# are just tmpdirs/caches
# note https://bugzilla.redhat.com/show_bug.cgi?id=1135475
cat >> /etc/fstab << EOF
vartmp   /var/tmp    tmpfs   defaults   0  0
EOF

# work around for poor key import UI in PackageKit
rm -f /var/lib/rpm/__db*
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
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

# make sure there aren't core files lying around
rm -f /core*

# convince readahead not to collect
# FIXME: for systemd

echo 'File created by kickstart. See systemd-update-done.service(8).' \
    | tee /etc/.updated >/var/.updated

# Remove random-seed
rm /var/lib/systemd/random-seed

# Remove the rescue kernel and image to save space
# Installation will recreate these on the target
rm -f /boot/*-rescue*
%end

%post
cat >> /etc/rc.d/init.d/livesys << EOF

# disable updates plugin
cat >> /usr/share/glib-2.0/schemas/org.gnome.software.gschema.override << FOE
[org.gnome.software]
download-updates=false
FOE

# don't run gnome-initial-setup
mkdir ~liveuser/.config
touch ~liveuser/.config/gnome-initial-setup-done

# make the installer show up
if [ -f /usr/share/applications/liveinst.desktop ]; then
  # Show harddisk install in shell dash
  sed -i -e 's/NoDisplay=true/NoDisplay=false/' /usr/share/applications/liveinst.desktop ""
  # need to move it to anaconda.desktop to make shell happy
  mv /usr/share/applications/liveinst.desktop /usr/share/applications/anaconda.desktop

  cat >> /usr/share/glib-2.0/schemas/org.gnome.shell.gschema.override << FOE
[org.gnome.shell]
favorite-apps=['firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'anaconda.desktop']
FOE

  # Make the welcome screen show up
  if [ -f /usr/share/anaconda/gnome/fedora-welcome.desktop ]; then
    mkdir -p ~liveuser/.config/autostart
    cp /usr/share/anaconda/gnome/fedora-welcome.desktop /usr/share/applications/
    cp /usr/share/anaconda/gnome/fedora-welcome.desktop ~liveuser/.config/autostart/
  fi

  # Copy Anaconda branding in place
  if [ -d /usr/share/lorax/product/usr/share/anaconda ]; then
    cp -a /usr/share/lorax/product/* /
  fi
fi

# rebuild schema cache with any overrides we installed
glib-compile-schemas /usr/share/glib-2.0/schemas

# set up auto-login
cat > /etc/gdm/custom.conf << FOE
[daemon]
AutomaticLoginEnable=True
AutomaticLogin=root
FOE

# Turn off PackageKit-command-not-found while uninstalled
if [ -f /etc/PackageKit/CommandNotFound.conf ]; then
  sed -i -e 's/^SoftwareSourceSearch=true/SoftwareSourceSearch=false/' /etc/PackageKit/CommandNotFound.conf
fi

# make sure to set the right permissions and selinux contexts
chown -R liveuser:liveuser /home/liveuser/
restorecon -R /home/liveuser/

EOF
%end

# NOTE Do NOT add any other sections after %packages
%packages
# Packages requires to support this output format go here
@core
chrony
isomd5sum
kernel
memtest86+
syslinux
-dracut-config-rescue
dracut-config-generic
system-logos
selinux-policy-targeted

# This package is needed to boot the iso on UEFI
shim
shim-ia32
grub2
grub2-efi
grub2-efi-*-cdboot
grub2-efi-ia32
efibootmgr

# no longer in @core since 2018-10, but needed for livesys script
initscripts
chkconfig

# NOTE lorax-composer will add the blueprint packages below here, including the final %end
%end

2c7-working.ks (11,148 bytes)   
ManuelWolfshant

ManuelWolfshant

2022-08-02 19:22

manager   ~0038964

What you are describing is not a bug in CentOS but a problem somewhere in your process of modifying what is provided by CentOS. Please seek help in one of the recommended avenues like mailing lists or fora.

Issue History

Date Modified Username Field Change
2022-08-02 18:47 justinw New Issue
2022-08-02 18:47 justinw File Added: rdsosreport-debug1.txt
2022-08-02 18:47 justinw File Added: rdsosreport-debug2.txt
2022-08-02 18:47 justinw File Added: 2c7-working.ks
2022-08-02 19:22 ManuelWolfshant Status new => closed
2022-08-02 19:22 ManuelWolfshant Resolution open => no change required
2022-08-02 19:22 ManuelWolfshant Note Added: 0038964