1

A CentOS 7 host needs to install a CentOS 7 guest using virt-install and kickstart, but the approach documented below is not recognizing either the designated hard drive or the dependencies.

What specific changes need to be made to the below in order for the installation process to recognize the hard disk and the dependencies?


The Error Symptoms:

The following is what Putty prints out during the guest OS' installation process:

[  OK  ] Started Anaconda NetworkManager configuration.
         Starting Anaconda NetworkManager configuration...
         Starting Wait for Plymouth Boot Screen to Quit...
         Starting Terminate Plymouth Boot Screen...
         Starting pre-anaconda logging service...
         Starting firewalld - dynamic firewall daemon...
         Starting Dump dmesg to /var/log/dmesg...
         Starting Service enabling compressing RAM with zRam...
Starting installer, one moment...
anaconda 21.48.22.93-1 for CentOS Linux 7 started.
 * installation log files are stored in /tmp during the installation
 * shell is available on TTY2
 * when reporting a bug add logs from /tmp as separate text/plain attachments
18:17:26 Not asking for VNC because of an automated install
18:17:26 Not asking for VNC because we don't have a network
Starting automated install.
Checking software selection
================================================================================
================================================================================
Question

You have specified that the group 'base' should be installed.  This group does
not exist.  Would you like to ignore this group and continue with installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

You have specified that the group 'compat-libraries' should be installed.  This
group does not exist.  Would you like to ignore this group and continue with
installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

 You have specified that the group 'debugging' should be installed.  This group
 does not exist.  Would you like to ignore this group and continue with
 installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

You have specified that the group 'development' should be installed.  This group
does not exist.  Would you like to ignore this group and continue with
installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

You have specified that the group 'network-file-system-client' should be
installed.  This group does not exist.  Would you like to ignore this group and
continue with installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

You have specified that the group 'remote-system-management' should be
installed.  This group does not exist.  Would you like to ignore this group and
continue with installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

 You have specified that the group 'security-tools' should be installed.  This
 group does not exist.  Would you like to ignore this group and continue with
 installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

You have specified that the group 'smart-card' should be installed.  This group
does not exist.  Would you like to ignore this group and continue with
installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

You have specified that the group 'virtualization-hypervisor' should be
installed.  This group does not exist.  Would you like to ignore this group and
continue with installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

You have specified that the group 'virtualization-platform' should be installed.
This group does not exist.  Would you like to ignore this group and continue
with installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

 You have specified that the group 'virtualization-tools' should be installed.
 with installation?

Please respond 'yes' or 'no': yes
================================================================================
================================================================================
Question

 You have specified that the group 'virtualization-client' should be installed.
 This group does not exist.  Would you like to ignore this group and continue
 with installation?

Please respond 'yes' or 'no': yes
Generating updated storage configuration
storage configuration failed: The following problem occurred on line 19 of the kickstart file:

Requested boot drive "sda" doesn't exist or cannot be used.

================================================================================
================================================================================
================================================================================
Installation

 1) [x] Language settings                 2) [x] Time settings
        (English (United States))                (America/Los_Angeles timezone)
 3) [x] Installation source               4) [x] Software selection
        (Local media)                            (Custom software selected)
 5) [!] Installation Destination          6) [x] Kdump
        (No disks selected)                      (Kdump is enabled)
 7) [ ] Network configuration
        (Not connected)
Not enough space in file systems for the current software selection. An additional 1069.52 MiB is needed.
Enter 'b' to ignore the warning and attempt to install anyway.
  Please make your choice from above ['q' to quit | 'b' to begin installation |
  'r' to refresh]: b
Please complete all spokes before continuing
  Please make your choice from above ['q' to quit | 'b' to begin installation |
  'r' to refresh]: q
================================================================================
================================================================================
Question

                          Do you really want to quit?

Please respond 'yes' or 'no': yes

[anaconda] 1:main* 2:shell  3:log  4:storage-lo> Switch tab: Alt+Tab | Help: F1
[terminated]


How The Disk Was Created:

The disk image was created on the host with the following two commands:

cd /home
qemu-img create -f qcow2 disk_test.img 100G


The kickstart file:

The kickstart file in question has the following contents:

[root@remote-host ~]# vi /tmp/vm.ks
# System authorization information
auth --enableshadow --passalgo=sha512

# Run the Setup Agent on first boot
firstboot --enable
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=static --ip=12.34.567.8aa --netmask=255.255.255.248 --gateway=12.34.567.8bb --nameserver=xx.xx.xx.xx,xx.xx.yy.yy --device=eno1 --hostname=localhost.localdomain --onboot=on --activate
# Root password
rootpw --iscrypted $someLongHashForEncryptedPassword
# System timezone
timezone Valid_Time_Zone_Given_Here --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information.  Erases all partitions from the sda drive.
clearpart --all --initlabel
# Disk partitioning information
part pv.204 --fstype="lvmpv" --ondisk=sda --size=1902212
part /boot/efi --fstype="efi" --ondisk=sda --size=200 --fsoptions="umask=0077,shortname=winnt"
part /boot --fstype="xfs" --ondisk=sda --size=500
volgroup centos --pesize=4096 pv.204
logvol /  --fstype="xfs" --grow --maxsize=51200 --size=1024 --name=root --vgname=centos
logvol /home  --fstype="xfs" --size=230400 --name=home --vgname=centos
logvol swap  --fstype="swap" --size=7808 --name=swap --vgname=centos

repo --name="CentOS" --baseurl="http://mirror.centos.org/centos/7/os/x86_64/"
repo --name="EPEL" --baseurl="http://dl.fedoraproject.org/pub/epel/7/x86_64/"

%packages
@base
@compat-libraries
@core
@debugging
@development
@network-file-system-client
@remote-system-management
@security-tools
@smart-card
@virtualization-hypervisor
@virtualization-platform
@virtualization-tools
@virtualization-client
kexec-tools

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end
~
"/tmp/vm.ks" 51L, 1872C


The virt-install Command:

The virt-install command that triggered the installation process that generated the output shown above is as follows:

[root@remote-host ~]# virt-install --name=public-centos7 --disk path=/home/disk_test.img,size=99 --graphics none --vcpus=1 --memory=2048    --location /tmp/CentOS-7-x86_64-Minimal-1611.iso    --network bridge=virbr0 --os-type=linux --os-variant=rhel7.0    --initrd-inject=/tmp/vm.ks    --extra-args "ks=file:/vm.ks console=ttyS0"


Attempt To View Logs:

I attempted to mount the guest's disk image in order to view the logs, but received the following message indicating that the disk file system seems to be null:

[root@remote-host ~]# virsh destroy public-centos7
Domain public-centos7 destroyed

[root@remote-host ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     public-centos7                 shut off

[root@remote-host ~]# guestmount -a /home/disk_test.img -m /dev/sda1 /mnt
libguestfs: error: vfs_type: vfs_type_stub: /dev/sda1: No such file or directory
libguestfs: error: mount_options: mount_options_stub: /dev/sda1: No such file or directory
guestmount: '/dev/sda1' could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
guestmount:     /dev/sda (unknown)

[root@remote-host ~]# guestmount -a /home/disk_test.img -m /dev/sda /mnt
libguestfs: error: mount_options: /dev/sda on / (options: ''): mount: /dev/sda is write-protected, mounting read-only
mount: unknown filesystem type '(null)'
guestmount: '/dev/sda' could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
guestmount:     /dev/sda (unknown)
[root@remote-host ~]#  


Validating the disk image:

Per @garethTheRed's suggestion, I typed the following:

[root@remote-host ~]# virt-filesystems -a /home/disk_test.img
[root@remote-host ~]#

What specific changes should be made in response to the lack of results from this command? Do partitions need to be added to disk_test.img? If so, how?

For reference, here are the contents of the physical drive:

[root@remote-host ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sda: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: gpt

#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      1435647    500M  Microsoft basic
 3      1435648   3897165823    1.8T  Linux LVM

Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/centos-swap: 8187 MB, 8187281408 bytes, 15990784 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/centos-home: 241.6 GB, 241591910400 bytes, 471859200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/centos-second: 241.6 GB, 241587716096 bytes, 471851008 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/centos-third: 241.6 GB, 241591910400 bytes, 471859200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/centos-fourth: 241.6 GB, 241591910400 bytes, 471859200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/centos-fifth: 241.6 GB, 241591910400 bytes, 471859200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/centos-seventh: 241.6 GB, 241591910400 bytes, 471859200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/centos-eighth: 241.6 GB, 241587716096 bytes, 471851008 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/centos-sixth: 241.6 GB, 241591910400 bytes, 471859200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

[root@remote-host ~]#

Please note that /home/disk_test.img is located in the /dev/mapper/centos-home partition, which is the host's partition. I was just putting it there for starters to simply get something to work before improving.

Also for reference, the available storage pools are as follows:

[root@remote-host ~]# virsh pool-list
 Name                 State      Autostart
-------------------------------------------
 home                 active     yes
 root                 active     yes
 anotherUserName      active     yes
 tmp                  active     yes

[root@remote-host ~]#

Should I create a storage pool for one of the other partitions, then a storage volume inside of it, and pass one or the other of those into the virt-install command?

  • 1
    12.34.567.8aa is not a valid IP address, as the kickstart documentation suggests is needed for the --ip option. – user4556274 Mar 17 '17 at 21:19
  • @user4556274 Yes of course. That is because 12.34.567.8aa is a fig leaf used in the OP only, to obscure the very real and legal PUBLIC IP address that is in the actual kickstart file. A person cannot very well post public IP addresses in web forums. – CodeMed Mar 17 '17 at 21:22
  • Instead of trying to read via SSH, why not attempt to mount the VMs disk from the host and access the log that way? Make sure the VM is powered off at that stage though! – garethTheRed Mar 18 '17 at 7:40
  • @garethTheRed I tried to mount the VM disk in the course of completely re-writing the question above since you last read it, including a lot of downstream learning and re-framing of the process leading up to the problem. What else can you suggest? – CodeMed Mar 19 '17 at 21:24
  • virt-filesystems -a /home/disk_test.img will list the partitions on that image - just to make sure the argument to your guestmount is correct. – garethTheRed Mar 20 '17 at 7:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.