virt-customize fail to inject firstboot script when running it from script.
Hello, We have a nodejs app which is injecting first boot scripts using virt-customize however the exact same commands are working when triggered manually. Here is the debug output of the commands Regards, Peter [ 0.0] Examining the guest ... libguestfs: trace: set_network true libguestfs: trace: set_network = 0 libguestfs: trace: add_drive "/var/lib/vz/images/1041/vm-1041-disk-1.qcow2" "readonly:false" "protocol:file" "discard:besteffort" libguestfs: trace: add_drive = 0 libguestfs: trace: launch libguestfs: trace: get_tmpdir libguestfs: trace: get_tmpdir = "/tmp" libguestfs: trace: get_backend_setting "force_tcg" libguestfs: trace: get_backend_setting = NULL (error) libguestfs: trace: get_cachedir libguestfs: trace: get_cachedir = "/var/tmp" libguestfs: trace: get_cachedir libguestfs: trace: get_cachedir = "/var/tmp" libguestfs: trace: get_sockdir libguestfs: trace: get_sockdir = "/tmp" libguestfs: trace: get_backend_setting "gdb" libguestfs: trace: get_backend_setting = NULL (error) libguestfs: trace: launch = 0 libguestfs: trace: inspect_os libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: list_filesystems libguestfs: trace: feature_available "lvm2" libguestfs: trace: internal_feature_available "lvm2" libguestfs: trace: internal_feature_available = 0 libguestfs: trace: feature_available = 1 libguestfs: trace: feature_available "ldm" libguestfs: trace: internal_feature_available "ldm" libguestfs: trace: internal_feature_available = 1 libguestfs: trace: feature_available = 0 libguestfs: trace: list_devices libguestfs: trace: list_devices = ["/dev/sda"] libguestfs: trace: list_partitions libguestfs: trace: list_partitions = ["/dev/sda1", "/dev/sda2"] libguestfs: trace: list_md_devices libguestfs: trace: list_md_devices = [] libguestfs: trace: part_to_dev "/dev/sda1" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: part_to_dev "/dev/sda2" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: vfs_type "/dev/sda1" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: vfs_type "/dev/sda2" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: lvs libguestfs: trace: lvs = [] libguestfs: trace: list_filesystems = ["/dev/sda1", "ext4", "/dev/sda2", "ext4"] libguestfs: trace: vfs_type "/dev/sda1" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: internal_parse_mountable "/dev/sda1" libguestfs: trace: internal_parse_mountable = <struct guestfs_internal_mountable = im_type: 0, im_device: /dev/sda1, im_volume: , > libguestfs: trace: is_whole_device "/dev/sda1" libguestfs: trace: is_whole_device = 0 libguestfs: trace: mount_ro "/dev/sda1" "/" libguestfs: trace: mount_ro = 0 libguestfs: trace: part_to_dev "/dev/sda1" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: device_index "/dev/sda" libguestfs: trace: device_index = 0 libguestfs: trace: part_to_partnum "/dev/sda1" libguestfs: trace: part_to_partnum = 1 libguestfs: trace: part_to_dev "/dev/sda1" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: part_list "/dev/sda" libguestfs: trace: part_list = <struct guestfs_partition_list(2) = [0]{part_num: 1, part_start: 1048576, part_end: 500170751, part_size: 499122176, } [1]{part_num: 2, part_start: 500170752, part_end: 10736369663, part_size: 10236198912, }> libguestfs: trace: is_dir "/etc" libguestfs: trace: is_dir = 0 libguestfs: trace: is_dir "/bin" libguestfs: trace: is_dir = 0 libguestfs: trace: is_dir "/share" libguestfs: trace: is_dir = 0 libguestfs: trace: is_file "/grub/menu.lst" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub/grub.conf" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub2/grub.cfg" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/hurd/console" libguestfs: trace: is_file = 0 libguestfs: trace: is_dir "/log" libguestfs: trace: is_dir = 0 libguestfs: trace: case_sensitive_path "/windows" libguestfs: trace: case_sensitive_path = "/windows" libguestfs: trace: case_sensitive_path "/windows/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/winnt" libguestfs: trace: case_sensitive_path = "/winnt" libguestfs: trace: case_sensitive_path "/winnt/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/win32" libguestfs: trace: case_sensitive_path = "/win32" libguestfs: trace: case_sensitive_path "/win32/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/win" libguestfs: trace: case_sensitive_path = "/win" libguestfs: trace: case_sensitive_path "/win/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/reactos" libguestfs: trace: case_sensitive_path = "/reactos" libguestfs: trace: case_sensitive_path "/reactos/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/boot.ini" libguestfs: trace: case_sensitive_path = "/boot.ini" libguestfs: trace: is_file "/boot.ini" libguestfs: trace: is_file = 0 libguestfs: trace: case_sensitive_path "/System Volume Information" libguestfs: trace: case_sensitive_path = "/System Volume Information" libguestfs: trace: is_dir "/System Volume Information" libguestfs: trace: is_dir = 0 libguestfs: trace: case_sensitive_path "/System Volume Information" libguestfs: trace: case_sensitive_path = "/System Volume Information" libguestfs: trace: is_dir "/System Volume Information" libguestfs: trace: is_dir = 0 libguestfs: trace: case_sensitive_path "/FDOS" libguestfs: trace: case_sensitive_path = "/FDOS" libguestfs: trace: is_dir "/FDOS" libguestfs: trace: is_dir = 0 libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: vfs_type "/dev/sda2" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: internal_parse_mountable "/dev/sda2" libguestfs: trace: internal_parse_mountable = <struct guestfs_internal_mountable = im_type: 0, im_device: /dev/sda2, im_volume: , > libguestfs: trace: is_whole_device "/dev/sda2" libguestfs: trace: is_whole_device = 0 libguestfs: trace: mount_ro "/dev/sda2" "/" libguestfs: trace: mount_ro = 0 libguestfs: trace: part_to_dev "/dev/sda2" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: device_index "/dev/sda" libguestfs: trace: device_index = 0 libguestfs: trace: part_to_partnum "/dev/sda2" libguestfs: trace: part_to_partnum = 2 libguestfs: trace: part_to_dev "/dev/sda2" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: part_list "/dev/sda" libguestfs: trace: part_list = <struct guestfs_partition_list(2) = [0]{part_num: 1, part_start: 1048576, part_end: 500170751, part_size: 499122176, } [1]{part_num: 2, part_start: 500170752, part_end: 10736369663, part_size: 10236198912, }> libguestfs: trace: is_dir "/etc" libguestfs: trace: is_dir = 1 libguestfs: trace: is_dir "/bin" libguestfs: trace: is_dir = 1 libguestfs: trace: is_dir "/share" libguestfs: trace: is_dir = 0 libguestfs: trace: is_file "/grub/menu.lst" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub/grub.conf" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub2/grub.cfg" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/freebsd-update.conf" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/netbsd" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/bsd" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/hurd/console" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/service/vm" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/fstab" libguestfs: trace: is_file = 1 libguestfs: trace: is_file "/etc/os-release" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/os-release" libguestfs: trace: filesize = 233 libguestfs: trace: read_lines "/etc/os-release" libguestfs: trace: read_file "/etc/os-release" libguestfs: trace: download "/etc/os-release" "/tmp/libguestfsTQwKl0/cat1" libguestfs: trace: download = 0 libguestfs: trace: read_file = "PRETTY_NAME="Debian GNU/Linux 8 (jessie)"\x0aNAME="Debian GNU/Linux"\x0aVERSION_ID="8"\x0aVERSION="8 (jessie)"\x0aID=debian\x0aHOME_URL="http://www.debian.org/"\x0aSUPPORT_URL="http://www.debian.org/support/"\x0aBUG_REPORT_URL="https://bugs.debian.org/"\x0a" libguestfs: trace: read_lines = ["PRETTY_NAME="Debian GNU/Linux 8 (jessie)"", "NAME="Debian GNU/Linux"", "VERSION_ID="8"", "VERSION="8 (jessie)"", "ID=debian", "HOME_URL="http://www.debian.org/"", "SUPPORT_URL="http://www.debian.org/support/"", "BUG_REPORT_URL="https://bugs.debian.org/""] libguestfs: trace: is_file "/etc/lsb-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/oracle-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/centos-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/altlinux-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/redhat-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/debian_version" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/debian_version" libguestfs: trace: filesize = 4 libguestfs: trace: head_n 1 "/etc/debian_version" libguestfs: trace: head_n = ["8.1"] libguestfs: trace: is_file "/bin/bash" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: realpath "/bin/bash" libguestfs: trace: realpath = "/bin/bash" libguestfs: trace: file_architecture "/bin/bash" libguestfs: trace: file "/bin/bash" libguestfs: trace: file = "ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a8ff57737fe60fba639d91d603253f4cdc6eb9f7, stripped" libguestfs: trace: file_architecture = "x86_64" libguestfs: trace: is_file "/etc/fstab" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/fstab" libguestfs: trace: filesize = 665 libguestfs: trace: is_file "/etc/mdadm.conf" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: aug_init "/" 48 libguestfs: trace: aug_init = 0 libguestfs: trace: aug_rm "/augeas/load/*[ "/etc/fstab/" !~ regexp('^') + glob(incl) + regexp('/.*') and "/etc/mdadm.conf/" !~ regexp('^') + glob(incl) + regexp('/.*') ]" libguestfs: trace: aug_rm = 1191 libguestfs: trace: aug_load libguestfs: trace: aug_load = 0 libguestfs: trace: aug_match "/augeas/files//error" libguestfs: trace: aug_match = [] libguestfs: trace: list_md_devices libguestfs: trace: list_md_devices = [] libguestfs: trace: aug_match "/files/etc/fstab/*[label() != '#comment']" libguestfs: trace: aug_match = ["/files/etc/fstab/1", "/files/etc/fstab/2", "/files/etc/fstab/3"] libguestfs: trace: aug_get "/files/etc/fstab/1/spec" libguestfs: trace: aug_get = "UUID=a1d1d2db-71f3-4354-95ba-fc582e84c26e" libguestfs: trace: aug_get "/files/etc/fstab/1/file" libguestfs: trace: aug_get = "/" libguestfs: trace: findfs_uuid "a1d1d2db-71f3-4354-95ba-fc582e84c26e" libguestfs: trace: findfs_uuid = "/dev/sda2" libguestfs: trace: aug_get "/files/etc/fstab/1/vfstype" libguestfs: trace: aug_get = "ext4" libguestfs: trace: aug_get "/files/etc/fstab/2/spec" libguestfs: trace: aug_get = "UUID=9b14f996-b8a0-4cdc-9dcc-946ebcd8fc5e" libguestfs: trace: aug_get "/files/etc/fstab/2/file" libguestfs: trace: aug_get = "/boot" libguestfs: trace: findfs_uuid "9b14f996-b8a0-4cdc-9dcc-946ebcd8fc5e" libguestfs: trace: findfs_uuid = "/dev/sda1" libguestfs: trace: aug_get "/files/etc/fstab/2/vfstype" libguestfs: trace: aug_get = "ext4" libguestfs: trace: aug_get "/files/etc/fstab/3/spec" libguestfs: trace: aug_get = "/dev/sr0" libguestfs: trace: aug_get "/files/etc/fstab/3/file" libguestfs: trace: aug_get = "/media/cdrom0" libguestfs: trace: aug_close libguestfs: trace: aug_close = 0 libguestfs: trace: is_file "/etc/HOSTNAME" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/hostname" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/hostname" libguestfs: trace: filesize = 6 libguestfs: trace: head_n 1 "/etc/hostname" libguestfs: trace: head_n = ["multi6"] libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: inspect_get_roots libguestfs: trace: inspect_get_roots = ["/dev/sda2"] libguestfs: trace: inspect_os = ["/dev/sda2"] libguestfs: trace: inspect_get_mountpoints "/dev/sda2" libguestfs: trace: inspect_get_mountpoints = ["/", "/dev/sda2", "/boot", "/dev/sda1"] libguestfs: trace: mount "/dev/sda2" "/" libguestfs: trace: mount = 0 libguestfs: trace: mount "/dev/sda1" "/boot" libguestfs: trace: mount = 0 libguestfs: trace: inspect_get_arch "/dev/sda2" libguestfs: trace: inspect_get_arch = "x86_64" libguestfs: trace: inspect_get_type "/dev/sda2" libguestfs: trace: inspect_get_type = "linux" libguestfs: trace: is_dir "/tmp" "followsymlinks:true" libguestfs: trace: is_dir = 1 libguestfs: trace: inspect_get_type "/dev/sda2" libguestfs: trace: inspect_get_type = "linux" libguestfs: trace: is_file "/var/lib/random-seed" [ 3.4] Setting a random seed libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/var/lib/systemd/random-seed" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/var/lib/systemd/random-seed" libguestfs: trace: filesize = 512 libguestfs: trace: truncate "/var/lib/systemd/random-seed" libguestfs: trace: truncate = 0 libguestfs: trace: write_append "/var/lib/systemd/random-seed" "\x9e\x92\xa5\xae\xa3\x13\xb3Qt'\x1fn\x00\xd9\xf6\xcd\x1cYP\x14U\x1b\xfbc\xdd\xa2\x95\xd1\xdf\x0d\x94\xf7\xb8\xba$\x18z \xe2,\xd3\xd0u\xb9F\xd9\x87G\x8c\x16S\x90q\xf12(a\x89\xb1\xab\x8b\xd4\xd4M\xc4\xc6\xb0\x186\xe2A\x09\x99\xd1\xb8;\xee\x9b\xef\xee\x01co$\xfe\xf0I\xd5\x1a\xac{C&:y\xc8\xf2\xf5H\xe116\x97$\x02\xc9\xc0u\xcf7\x094\xb0SM\x8d\x0f\x0b\xc8\xf1\x1e\xae\xe0`\xbe\x87\x97\xc6\xf1\x07E\x99G\x1b\x89\x9c\x14\xfcx\xcd\xaf[[_\xc6%\x99:H\xba,4\xd4~\x0d\xb7\xf03<\xd5\x15\xef/\xa8T\xf6L\xee\xa9A\x8d\xa7\xc48r*\x0c\x9f\xde\x10/\xb0\x1a<@\xa8]2\x94{\xf0\x97S\xd6'\xc4\x1d\xff\xb5Y\x9bV\x0b`\x8d\x8d\xab\xd3\x02\x99z\xf3\x88\xff\xa1\xf7\x9et\xe3\xd0\xa9\xd9x\x19\xa4\x9c)P\x02z\xd7[K|f\x06-U%\x11\xf17\xedha\xb6\xf8f\x1b\xc5\x8fM\xab1;5"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append "/var/lib/systemd/random-seed" "\x9e\x92\xa5\xae\xa3\x13\xb3Qt'\x1fn\x00\xd9\xf6\xcd\x1cYP\x14U\x1b\xfbc\xdd\xa2\x95\xd1\xdf\x0d\x94\xf7\xb8\xba$\x18z \xe2,\xd3\xd0u\xb9F\xd9\x87G\x8c\x16S\x90q\xf12(a\x89\xb1\xab\x8b\xd4\xd4M\xc4\xc6\xb0\x186\xe2A\x09\x99\xd1\xb8;\xee\x9b\xef\xee\x01co$\xfe\xf0I\xd5\x1a\xac{C&:y\xc8\xf2\xf5H\xe116\x97$\x02\xc9\xc0u\xcf7\x094\xb0SM\x8d\x0f\x0b\xc8\xf1\x1e\xae\xe0`\xbe\x87\x97\xc6\xf1\x07E\x99G\x1b\x89\x9c\x14\xfcx\xcd\xaf[[_\xc6%\x99:H\xba,4\xd4~\x0d\xb7\xf03<\xd5\x15\xef/\xa8T\xf6L\xee\xa9A\x8d\xa7\xc48r*\x0c\x9f\xde\x10/\xb0\x1a<@\xa8]2\x94{\xf0\x97S\xd6'\xc4\x1d\xff\xb5Y\x9bV\x0b`\x8d\x8d\xab\xd3\x02\x99z\xf3\x88\xff\xa1\xf7\x9et\xe3\xd0\xa9\xd9x\x19\xa4\x9c)P\x02z\xd7[K|f\x06-U%\x11\xf17\xedha\xb6\xf8f\x1b\xc5\x8fM\xab1;5"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append = 0 libguestfs: trace: write_append = 0 libguestfs: trace: is_file "/var/lib/urandom/random-seed" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/var/lib/urandom/random-seed" libguestfs: trace: filesize = 512 libguestfs: trace: truncate "/var/lib/urandom/random-seed" libguestfs: trace: truncate = 0 libguestfs: trace: write_append "/var/lib/urandom/random-seed" "\x87}\x96\x13\xa73\xd6\xc8\x7f\x93\xd0)\x1d\xcd\xf1\xab\xca?`[u\x80\x0b\xd4\xebIwC\xd2\x94\xfcm\xc9!\x0fj\x04\xe9\x92h\xdc\xf5\x07\xc3\xc5\xd4\xae\x1f\xff\xc9\xb0K%\x9f\xad\xff{Y\xbfT\xb2\x92\x0b\x03\xde<\xb2\xfe\xc7\xeb\x01\xb6\xd4!\xdb\xb1\x18\x1d6\xa9\xb9SO#\xae8\xb80\x1b|\xa4\xc3V\xda\x0e%\x81\xc1\x9a\xbfS\xa5\xeb\x94\xb9\xf0{\xe8 \xcb|\x00\xe8\xe2-\xfa\x87\x15\xbe\x96\xbb\xffW#\\x84\x83\x8c\x06C\xf9\xb7\xb9\xff!\x8c\x18\x17\xd92\x1a\xd6W\xc0\xab\x11\x04\x09G\xacG/\xd7\xe6g9\xd4\xbc\xa2gz\xee\x06s+\x8bn\xb9\xa0\x94&L\xec\x7f\xbde)\xaf\xfa\xd6kt\xa06R&\xd6+-$\x0b\xaa\xf7\xf2i?\x1bnl\x0f8\xb9Kx\x0d\xb3\xf4\x0d\xae\xe0\x8a\x19\x1f\x05d2)\x88\xdb/\x9f\x1a"\x9b \xfc\xcf\xf87\xa5\x82\x18\x1a\x0d\xbf\xc7X7\x17%F\xa3~\xa9\xba^\x80H\xea\x11\xd9\xce\xf0\x98\xd7V"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append "/var/lib/urandom/random-seed" "\x87}\x96\x13\xa73\xd6\xc8\x7f\x93\xd0)\x1d\xcd\xf1\xab\xca?`[u\x80\x0b\xd4\xebIwC\xd2\x94\xfcm\xc9!\x0fj\x04\xe9\x92h\xdc\xf5\x07\xc3\xc5\xd4\xae\x1f\xff\xc9\xb0K%\x9f\xad\xff{Y\xbfT\xb2\x92\x0b\x03\xde<\xb2\xfe\xc7\xeb\x01\xb6\xd4!\xdb\xb1\x18\x1d6\xa9\xb9SO#\xae8\xb80\x1b|\xa4\xc3V\xda\x0e%\x81\xc1\x9a\xbfS\xa5\xeb\x94\xb9\xf0{\xe8 \xcb|\x00\xe8\xe2-\xfa\x87\x15\xbe\x96\xbb\xffW#\\x84\x83\x8c\x06C\xf9\xb7\xb9\xff!\x8c\x18\x17\xd92\x1a\xd6W\xc0\xab\x11\x04\x09G\xacG/\xd7\xe6g9\xd4\xbc\xa2gz\xee\x06s+\x8bn\xb9\xa0\x94&L\xec\x7f\xbde)\xaf\xfa\xd6kt\xa06R&\xd6+-$\x0b\xaa\xf7\xf2i?\x1bnl\x0f8\xb9Kx\x0d\xb3\xf4\x0d\xae\xe0\x8a\x19\x1f\x05d2)\x88\xdb/\x9f\x1a"\x9b \xfc\xcf\xf87\xa5\x82\x18\x1a\x0d\xbf\xc7X7\x17%F\xa3~\xa9\xba^\x80H\xea\x11\xd9\xce\xf0\x98\xd7V"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append = 0 libguestfs: trace: write_append = 0 libguestfs: trace: is_file "/var/lib/misc/random-seed" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/random-seed" libguestfs: trace: is_file = 0 libguestfs: trace: inspect_get_type "/dev/sda2" libguestfs: trace: inspect_get_type = "linux" libguestfs: trace: inspect_get_distro "/dev/sda2" libguestfs: trace: inspect_get_distro = "debian" libguestfs: trace: inspect_get_major_version "/dev/sda2" libguestfs: trace: inspect_get_major_version = 8 libguestfs: trace: mkdir_p "/usr/lib/virt-sysprep" [ 3.4] Installing firstboot script: /utilities/1041/startup.sh libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/usr/lib/virt-sysprep/scripts" libguestfs: trace: mkdir_p = 0 libguestfs: trace: write "/usr/lib/virt-sysprep/firstboot.sh" "#!/bin/sh -\x0a\x0a### BEGIN INIT INFO\x0a# Provides: virt-sysprep\x0a# Required-Start: $null\x0a# Should-Start: $all\x0a# Required-Stop: $null\x0a# Should-Stop: $all\x0a# Default-Start: 2 3 5\x0a# Default-Stop: 0 1 6\x0a# Short-Description: Start sc"<truncated, original size 1099 bytes> libguestfs: trace: internal_write "/usr/lib/virt-sysprep/firstboot.sh" "#!/bin/sh -\x0a\x0a### BEGIN INIT INFO\x0a# Provides: virt-sysprep\x0a# Required-Start: $null\x0a# Should-Start: $all\x0a# Required-Stop: $null\x0a# Should-Stop: $all\x0a# Default-Start: 2 3 5\x0a# Default-Stop: 0 1 6\x0a# Short-Description: Start sc"<truncated, original size 1099 bytes> libguestfs: trace: internal_write = 0 libguestfs: trace: write = 0 libguestfs: trace: chmod 493 "/usr/lib/virt-sysprep/firstboot.sh" libguestfs: trace: chmod = 0 libguestfs: trace: is_dir "/etc/systemd/system" libguestfs: trace: is_dir = 1 libguestfs: trace: mkdir_p "/usr/lib/systemd/system" libguestfs: trace: mkdir_p = 0 libguestfs: trace: write "/usr/lib/systemd/system/guestfs-firstboot.service" "[Unit]\x0aDescription=libguestfs firstboot service\x0aAfter=network.target\x0aBefore=prefdm.service\x0a\x0a[Service]\x0aType=oneshot\x0aExecStart=/usr/lib/virt-sysprep/firstboot.sh start\x0aRemainAfterExit=yes\x0aStandardOutput=journal+console\x0aStandardError=inherit\x0a\x0a[Install]\x0aWanted"<truncated, original size 274 bytes> libguestfs: trace: internal_write "/usr/lib/systemd/system/guestfs-firstboot.service" "[Unit]\x0aDescription=libguestfs firstboot service\x0aAfter=network.target\x0aBefore=prefdm.service\x0a\x0a[Service]\x0aType=oneshot\x0aExecStart=/usr/lib/virt-sysprep/firstboot.sh start\x0aRemainAfterExit=yes\x0aStandardOutput=journal+console\x0aStandardError=inherit\x0a\x0a[Install]\x0aWanted"<truncated, original size 274 bytes> libguestfs: trace: internal_write = 0 libguestfs: trace: write = 0 libguestfs: trace: mkdir_p "/etc/systemd/system/default.target.wants" libguestfs: trace: mkdir_p = 0 libguestfs: trace: ln_sf "/usr/lib/systemd/system/guestfs-firstboot.service" "/etc/systemd/system/default.target.wants" libguestfs: trace: ln_sf = 0 libguestfs: trace: is_file "/usr/lib/systemd/system/firstboot.service" libguestfs: trace: is_file = 0 libguestfs: trace: is_dir "/etc/rc.d" libguestfs: trace: is_dir = 0 libguestfs: trace: is_dir "/etc/init.d" libguestfs: trace: is_dir = 1 libguestfs: trace: mkdir_p "/etc/init.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/etc/rc2.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/etc/rc3.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/etc/rc5.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: ln_sf "/usr/lib/virt-sysprep/firstboot.sh" "/etc/init.d/guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: ln_sf "../init.d/guestfs-firstboot" "/etc/rc2.d/S99guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: ln_sf "../init.d/guestfs-firstboot" "/etc/rc3.d/S99guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: ln_sf "../init.d/guestfs-firstboot" "/etc/rc5.d/S99guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: rm_f "/etc/init.d/virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: rm_f "/etc/rc2.d/S99virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: rm_f "/etc/rc3.d/S99virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: rm_f "/etc/rc5.d/S99virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: write "/usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh" "#!/bin/bash\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue.net\x0d\x0aecho "This is a motd startup test" | tee -a /etc/motd" libguestfs: trace: internal_write "/usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh" "#!/bin/bash\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue.net\x0d\x0aecho "This is a motd startup test" | tee -a /etc/motd" libguestfs: trace: internal_write = 0 libguestfs: trace: write = 0 libguestfs: trace: chmod 493 "/usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh" libguestfs: trace: chmod = 0 libguestfs: trace: debug "sh" "fuser -k /sysroot" libguestfs: trace: debug = NULL (error) libguestfs: trace: ping_daemon libguestfs: trace: ping_daemon = 0 libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: shutdown libguestfs: trace: internal_autosync [ 3.4] Finishing off libguestfs: trace: internal_autosync = 0 libguestfs: trace: shutdown = 0 libguestfs: trace: close 0 Startup Script Exec - virt-customize -x -a /var/lib/vz/images/1041/vm-1041-disk-1.qcow2 --firstboot=/utilities/1041/startup.sh Startup Script stdout - [ 0.0] Examining the guest ... [ 3.4] Setting a random seed [ 3.4] Installing firstboot script: /utilities/1041/startup.sh [ 3.4] Finishing off
On Mon, Mar 13, 2017 at 11:48:05PM +0200, Keresztes Péter-Zoltán wrote:
Hello,
We have a nodejs app which is injecting first boot scripts using virt-customize however the exact same commands are working when triggered manually.
Here is the debug output of the commands
Which version of virt-customize? A number of bugs were fixed in this part of the code in the last year. Furthermore we now have a regression test which should ensure that this keeps working on Debian 8 guests. Also I'm not clear about what the problem is. It looks as if virt-customize is OK. Do you mean the script doesn't run at first boot? Rich.
Regards, Peter
[ 0.0] Examining the guest ... libguestfs: trace: set_network true libguestfs: trace: set_network = 0 libguestfs: trace: add_drive "/var/lib/vz/images/1041/vm-1041-disk-1.qcow2" "readonly:false" "protocol:file" "discard:besteffort" libguestfs: trace: add_drive = 0 libguestfs: trace: launch libguestfs: trace: get_tmpdir libguestfs: trace: get_tmpdir = "/tmp" libguestfs: trace: get_backend_setting "force_tcg" libguestfs: trace: get_backend_setting = NULL (error) libguestfs: trace: get_cachedir libguestfs: trace: get_cachedir = "/var/tmp" libguestfs: trace: get_cachedir libguestfs: trace: get_cachedir = "/var/tmp" libguestfs: trace: get_sockdir libguestfs: trace: get_sockdir = "/tmp" libguestfs: trace: get_backend_setting "gdb" libguestfs: trace: get_backend_setting = NULL (error) libguestfs: trace: launch = 0 libguestfs: trace: inspect_os libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: list_filesystems libguestfs: trace: feature_available "lvm2" libguestfs: trace: internal_feature_available "lvm2" libguestfs: trace: internal_feature_available = 0 libguestfs: trace: feature_available = 1 libguestfs: trace: feature_available "ldm" libguestfs: trace: internal_feature_available "ldm" libguestfs: trace: internal_feature_available = 1 libguestfs: trace: feature_available = 0 libguestfs: trace: list_devices libguestfs: trace: list_devices = ["/dev/sda"] libguestfs: trace: list_partitions libguestfs: trace: list_partitions = ["/dev/sda1", "/dev/sda2"] libguestfs: trace: list_md_devices libguestfs: trace: list_md_devices = [] libguestfs: trace: part_to_dev "/dev/sda1" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: part_to_dev "/dev/sda2" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: vfs_type "/dev/sda1" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: vfs_type "/dev/sda2" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: lvs libguestfs: trace: lvs = [] libguestfs: trace: list_filesystems = ["/dev/sda1", "ext4", "/dev/sda2", "ext4"] libguestfs: trace: vfs_type "/dev/sda1" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: internal_parse_mountable "/dev/sda1" libguestfs: trace: internal_parse_mountable = <struct guestfs_internal_mountable = im_type: 0, im_device: /dev/sda1, im_volume: , > libguestfs: trace: is_whole_device "/dev/sda1" libguestfs: trace: is_whole_device = 0 libguestfs: trace: mount_ro "/dev/sda1" "/" libguestfs: trace: mount_ro = 0 libguestfs: trace: part_to_dev "/dev/sda1" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: device_index "/dev/sda" libguestfs: trace: device_index = 0 libguestfs: trace: part_to_partnum "/dev/sda1" libguestfs: trace: part_to_partnum = 1 libguestfs: trace: part_to_dev "/dev/sda1" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: part_list "/dev/sda" libguestfs: trace: part_list = <struct guestfs_partition_list(2) = [0]{part_num: 1, part_start: 1048576, part_end: 500170751, part_size: 499122176, } [1]{part_num: 2, part_start: 500170752, part_end: 10736369663, part_size: 10236198912, }> libguestfs: trace: is_dir "/etc" libguestfs: trace: is_dir = 0 libguestfs: trace: is_dir "/bin" libguestfs: trace: is_dir = 0 libguestfs: trace: is_dir "/share" libguestfs: trace: is_dir = 0 libguestfs: trace: is_file "/grub/menu.lst" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub/grub.conf" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub2/grub.cfg" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/hurd/console" libguestfs: trace: is_file = 0 libguestfs: trace: is_dir "/log" libguestfs: trace: is_dir = 0 libguestfs: trace: case_sensitive_path "/windows" libguestfs: trace: case_sensitive_path = "/windows" libguestfs: trace: case_sensitive_path "/windows/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/winnt" libguestfs: trace: case_sensitive_path = "/winnt" libguestfs: trace: case_sensitive_path "/winnt/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/win32" libguestfs: trace: case_sensitive_path = "/win32" libguestfs: trace: case_sensitive_path "/win32/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/win" libguestfs: trace: case_sensitive_path = "/win" libguestfs: trace: case_sensitive_path "/win/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/reactos" libguestfs: trace: case_sensitive_path = "/reactos" libguestfs: trace: case_sensitive_path "/reactos/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/boot.ini" libguestfs: trace: case_sensitive_path = "/boot.ini" libguestfs: trace: is_file "/boot.ini" libguestfs: trace: is_file = 0 libguestfs: trace: case_sensitive_path "/System Volume Information" libguestfs: trace: case_sensitive_path = "/System Volume Information" libguestfs: trace: is_dir "/System Volume Information" libguestfs: trace: is_dir = 0 libguestfs: trace: case_sensitive_path "/System Volume Information" libguestfs: trace: case_sensitive_path = "/System Volume Information" libguestfs: trace: is_dir "/System Volume Information" libguestfs: trace: is_dir = 0 libguestfs: trace: case_sensitive_path "/FDOS" libguestfs: trace: case_sensitive_path = "/FDOS" libguestfs: trace: is_dir "/FDOS" libguestfs: trace: is_dir = 0 libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: vfs_type "/dev/sda2" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: internal_parse_mountable "/dev/sda2" libguestfs: trace: internal_parse_mountable = <struct guestfs_internal_mountable = im_type: 0, im_device: /dev/sda2, im_volume: , > libguestfs: trace: is_whole_device "/dev/sda2" libguestfs: trace: is_whole_device = 0 libguestfs: trace: mount_ro "/dev/sda2" "/" libguestfs: trace: mount_ro = 0 libguestfs: trace: part_to_dev "/dev/sda2" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: device_index "/dev/sda" libguestfs: trace: device_index = 0 libguestfs: trace: part_to_partnum "/dev/sda2" libguestfs: trace: part_to_partnum = 2 libguestfs: trace: part_to_dev "/dev/sda2" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: part_list "/dev/sda" libguestfs: trace: part_list = <struct guestfs_partition_list(2) = [0]{part_num: 1, part_start: 1048576, part_end: 500170751, part_size: 499122176, } [1]{part_num: 2, part_start: 500170752, part_end: 10736369663, part_size: 10236198912, }> libguestfs: trace: is_dir "/etc" libguestfs: trace: is_dir = 1 libguestfs: trace: is_dir "/bin" libguestfs: trace: is_dir = 1 libguestfs: trace: is_dir "/share" libguestfs: trace: is_dir = 0 libguestfs: trace: is_file "/grub/menu.lst" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub/grub.conf" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub2/grub.cfg" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/freebsd-update.conf" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/netbsd" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/bsd" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/hurd/console" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/service/vm" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/fstab" libguestfs: trace: is_file = 1 libguestfs: trace: is_file "/etc/os-release" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/os-release" libguestfs: trace: filesize = 233 libguestfs: trace: read_lines "/etc/os-release" libguestfs: trace: read_file "/etc/os-release" libguestfs: trace: download "/etc/os-release" "/tmp/libguestfsTQwKl0/cat1" libguestfs: trace: download = 0 libguestfs: trace: read_file = "PRETTY_NAME="Debian GNU/Linux 8 (jessie)"\x0aNAME="Debian GNU/Linux"\x0aVERSION_ID="8"\x0aVERSION="8 (jessie)"\x0aID=debian\x0aHOME_URL="http://www.debian.org/"\x0aSUPPORT_URL="http://www.debian.org/support/"\x0aBUG_REPORT_URL="https://bugs.debian.org/"\x0a" libguestfs: trace: read_lines = ["PRETTY_NAME="Debian GNU/Linux 8 (jessie)"", "NAME="Debian GNU/Linux"", "VERSION_ID="8"", "VERSION="8 (jessie)"", "ID=debian", "HOME_URL="http://www.debian.org/"", "SUPPORT_URL="http://www.debian.org/support/"", "BUG_REPORT_URL="https://bugs.debian.org/""] libguestfs: trace: is_file "/etc/lsb-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/oracle-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/centos-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/altlinux-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/redhat-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/debian_version" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/debian_version" libguestfs: trace: filesize = 4 libguestfs: trace: head_n 1 "/etc/debian_version" libguestfs: trace: head_n = ["8.1"] libguestfs: trace: is_file "/bin/bash" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: realpath "/bin/bash" libguestfs: trace: realpath = "/bin/bash" libguestfs: trace: file_architecture "/bin/bash" libguestfs: trace: file "/bin/bash" libguestfs: trace: file = "ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a8ff57737fe60fba639d91d603253f4cdc6eb9f7, stripped" libguestfs: trace: file_architecture = "x86_64" libguestfs: trace: is_file "/etc/fstab" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/fstab" libguestfs: trace: filesize = 665 libguestfs: trace: is_file "/etc/mdadm.conf" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: aug_init "/" 48 libguestfs: trace: aug_init = 0 libguestfs: trace: aug_rm "/augeas/load/*[ "/etc/fstab/" !~ regexp('^') + glob(incl) + regexp('/.*') and "/etc/mdadm.conf/" !~ regexp('^') + glob(incl) + regexp('/.*') ]" libguestfs: trace: aug_rm = 1191 libguestfs: trace: aug_load libguestfs: trace: aug_load = 0 libguestfs: trace: aug_match "/augeas/files//error" libguestfs: trace: aug_match = [] libguestfs: trace: list_md_devices libguestfs: trace: list_md_devices = [] libguestfs: trace: aug_match "/files/etc/fstab/*[label() != '#comment']" libguestfs: trace: aug_match = ["/files/etc/fstab/1", "/files/etc/fstab/2", "/files/etc/fstab/3"] libguestfs: trace: aug_get "/files/etc/fstab/1/spec" libguestfs: trace: aug_get = "UUID=a1d1d2db-71f3-4354-95ba-fc582e84c26e" libguestfs: trace: aug_get "/files/etc/fstab/1/file" libguestfs: trace: aug_get = "/" libguestfs: trace: findfs_uuid "a1d1d2db-71f3-4354-95ba-fc582e84c26e" libguestfs: trace: findfs_uuid = "/dev/sda2" libguestfs: trace: aug_get "/files/etc/fstab/1/vfstype" libguestfs: trace: aug_get = "ext4" libguestfs: trace: aug_get "/files/etc/fstab/2/spec" libguestfs: trace: aug_get = "UUID=9b14f996-b8a0-4cdc-9dcc-946ebcd8fc5e" libguestfs: trace: aug_get "/files/etc/fstab/2/file" libguestfs: trace: aug_get = "/boot" libguestfs: trace: findfs_uuid "9b14f996-b8a0-4cdc-9dcc-946ebcd8fc5e" libguestfs: trace: findfs_uuid = "/dev/sda1" libguestfs: trace: aug_get "/files/etc/fstab/2/vfstype" libguestfs: trace: aug_get = "ext4" libguestfs: trace: aug_get "/files/etc/fstab/3/spec" libguestfs: trace: aug_get = "/dev/sr0" libguestfs: trace: aug_get "/files/etc/fstab/3/file" libguestfs: trace: aug_get = "/media/cdrom0" libguestfs: trace: aug_close libguestfs: trace: aug_close = 0 libguestfs: trace: is_file "/etc/HOSTNAME" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/hostname" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/hostname" libguestfs: trace: filesize = 6 libguestfs: trace: head_n 1 "/etc/hostname" libguestfs: trace: head_n = ["multi6"] libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: inspect_get_roots libguestfs: trace: inspect_get_roots = ["/dev/sda2"] libguestfs: trace: inspect_os = ["/dev/sda2"] libguestfs: trace: inspect_get_mountpoints "/dev/sda2" libguestfs: trace: inspect_get_mountpoints = ["/", "/dev/sda2", "/boot", "/dev/sda1"] libguestfs: trace: mount "/dev/sda2" "/" libguestfs: trace: mount = 0 libguestfs: trace: mount "/dev/sda1" "/boot" libguestfs: trace: mount = 0 libguestfs: trace: inspect_get_arch "/dev/sda2" libguestfs: trace: inspect_get_arch = "x86_64" libguestfs: trace: inspect_get_type "/dev/sda2" libguestfs: trace: inspect_get_type = "linux" libguestfs: trace: is_dir "/tmp" "followsymlinks:true" libguestfs: trace: is_dir = 1 libguestfs: trace: inspect_get_type "/dev/sda2" libguestfs: trace: inspect_get_type = "linux" libguestfs: trace: is_file "/var/lib/random-seed" [ 3.4] Setting a random seed libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/var/lib/systemd/random-seed" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/var/lib/systemd/random-seed" libguestfs: trace: filesize = 512 libguestfs: trace: truncate "/var/lib/systemd/random-seed" libguestfs: trace: truncate = 0 libguestfs: trace: write_append "/var/lib/systemd/random-seed" "\x9e\x92\xa5\xae\xa3\x13\xb3Qt'\x1fn\x00\xd9\xf6\xcd\x1cYP\x14U\x1b\xfbc\xdd\xa2\x95\xd1\xdf\x0d\x94\xf7\xb8\xba$\x18z \xe2,\xd3\xd0u\xb9F\xd9\x87G\x8c\x16S\x90q\xf12(a\x89\xb1\xab\x8b\xd4\xd4M\xc4\xc6\xb0\x186\xe2A\x09\x99\xd1\xb8;\xee\x9b\xef\xee\x01co$\xfe\xf0I\xd5\x1a\xac{C&:y\xc8\xf2\xf5H\xe116\x97$\x02\xc9\xc0u\xcf7\x094\xb0SM\x8d\x0f\x0b\xc8\xf1\x1e\xae\xe0`\xbe\x87\x97\xc6\xf1\x07E\x99G\x1b\x89\x9c\x14\xfcx\xcd\xaf[[_\xc6%\x99:H\xba,4\xd4~\x0d\xb7\xf03<\xd5\x15\xef/\xa8T\xf6L\xee\xa9A\x8d\xa7\xc48r*\x0c\x9f\xde\x10/\xb0\x1a<@\xa8]2\x94{\xf0\x97S\xd6'\xc4\x1d\xff\xb5Y\x9bV\x0b`\x8d\x8d\xab\xd3\x02\x99z\xf3\x88\xff\xa1\xf7\x9et\xe3\xd0\xa9\xd9x\x19\xa4\x9c)P\x02z\xd7[K|f\x06-U%\x11\xf17\xedha\xb6\xf8f\x1b\xc5\x8fM\xab1;5"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append "/var/lib/systemd/random-seed" "\x9e\x92\xa5\xae\xa3\x13\xb3Qt'\x1fn\x00\xd9\xf6\xcd\x1cYP\x14U\x1b\xfbc\xdd\xa2\x95\xd1\xdf\x0d\x94\xf7\xb8\xba$\x18z \xe2,\xd3\xd0u\xb9F\xd9\x87G\x8c\x16S\x90q\xf12(a\x89\xb1\xab\x8b\xd4\xd4M\xc4\xc6\xb0\x186\xe2A\x09\x99\xd1\xb8;\xee\x9b\xef\xee\x01co$\xfe\xf0I\xd5\x1a\xac{C&:y\xc8\xf2\xf5H\xe116\x97$\x02\xc9\xc0u\xcf7\x094\xb0SM\x8d\x0f\x0b\xc8\xf1\x1e\xae\xe0`\xbe\x87\x97\xc6\xf1\x07E\x99G\x1b\x89\x9c\x14\xfcx\xcd\xaf[[_\xc6%\x99:H\xba,4\xd4~\x0d\xb7\xf03<\xd5\x15\xef/\xa8T\xf6L\xee\xa9A\x8d\xa7\xc48r*\x0c\x9f\xde\x10/\xb0\x1a<@\xa8]2\x94{\xf0\x97S\xd6'\xc4\x1d\xff\xb5Y\x9bV\x0b`\x8d\x8d\xab\xd3\x02\x99z\xf3\x88\xff\xa1\xf7\x9et\xe3\xd0\xa9\xd9x\x19\xa4\x9c)P\x02z\xd7[K|f\x06-U%\x11\xf17\xedha\xb6\xf8f\x1b\xc5\x8fM\xab1;5"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append = 0 libguestfs: trace: write_append = 0 libguestfs: trace: is_file "/var/lib/urandom/random-seed" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/var/lib/urandom/random-seed" libguestfs: trace: filesize = 512 libguestfs: trace: truncate "/var/lib/urandom/random-seed" libguestfs: trace: truncate = 0 libguestfs: trace: write_append "/var/lib/urandom/random-seed" "\x87}\x96\x13\xa73\xd6\xc8\x7f\x93\xd0)\x1d\xcd\xf1\xab\xca?`[u\x80\x0b\xd4\xebIwC\xd2\x94\xfcm\xc9!\x0fj\x04\xe9\x92h\xdc\xf5\x07\xc3\xc5\xd4\xae\x1f\xff\xc9\xb0K%\x9f\xad\xff{Y\xbfT\xb2\x92\x0b\x03\xde<\xb2\xfe\xc7\xeb\x01\xb6\xd4!\xdb\xb1\x18\x1d6\xa9\xb9SO#\xae8\xb80\x1b|\xa4\xc3V\xda\x0e%\x81\xc1\x9a\xbfS\xa5\xeb\x94\xb9\xf0{\xe8 \xcb|\x00\xe8\xe2-\xfa\x87\x15\xbe\x96\xbb\xffW#\\x84\x83\x8c\x06C\xf9\xb7\xb9\xff!\x8c\x18\x17\xd92\x1a\xd6W\xc0\xab\x11\x04\x09G\xacG/\xd7\xe6g9\xd4\xbc\xa2gz\xee\x06s+\x8bn\xb9\xa0\x94&L\xec\x7f\xbde)\xaf\xfa\xd6kt\xa06R&\xd6+-$\x0b\xaa\xf7\xf2i?\x1bnl\x0f8\xb9Kx\x0d\xb3\xf4\x0d\xae\xe0\x8a\x19\x1f\x05d2)\x88\xdb/\x9f\x1a"\x9b \xfc\xcf\xf87\xa5\x82\x18\x1a\x0d\xbf\xc7X7\x17%F\xa3~\xa9\xba^\x80H\xea\x11\xd9\xce\xf0\x98\xd7V"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append "/var/lib/urandom/random-seed" "\x87}\x96\x13\xa73\xd6\xc8\x7f\x93\xd0)\x1d\xcd\xf1\xab\xca?`[u\x80\x0b\xd4\xebIwC\xd2\x94\xfcm\xc9!\x0fj\x04\xe9\x92h\xdc\xf5\x07\xc3\xc5\xd4\xae\x1f\xff\xc9\xb0K%\x9f\xad\xff{Y\xbfT\xb2\x92\x0b\x03\xde<\xb2\xfe\xc7\xeb\x01\xb6\xd4!\xdb\xb1\x18\x1d6\xa9\xb9SO#\xae8\xb80\x1b|\xa4\xc3V\xda\x0e%\x81\xc1\x9a\xbfS\xa5\xeb\x94\xb9\xf0{\xe8 \xcb|\x00\xe8\xe2-\xfa\x87\x15\xbe\x96\xbb\xffW#\\x84\x83\x8c\x06C\xf9\xb7\xb9\xff!\x8c\x18\x17\xd92\x1a\xd6W\xc0\xab\x11\x04\x09G\xacG/\xd7\xe6g9\xd4\xbc\xa2gz\xee\x06s+\x8bn\xb9\xa0\x94&L\xec\x7f\xbde)\xaf\xfa\xd6kt\xa06R&\xd6+-$\x0b\xaa\xf7\xf2i?\x1bnl\x0f8\xb9Kx\x0d\xb3\xf4\x0d\xae\xe0\x8a\x19\x1f\x05d2)\x88\xdb/\x9f\x1a"\x9b \xfc\xcf\xf87\xa5\x82\x18\x1a\x0d\xbf\xc7X7\x17%F\xa3~\xa9\xba^\x80H\xea\x11\xd9\xce\xf0\x98\xd7V"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append = 0 libguestfs: trace: write_append = 0 libguestfs: trace: is_file "/var/lib/misc/random-seed" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/random-seed" libguestfs: trace: is_file = 0 libguestfs: trace: inspect_get_type "/dev/sda2" libguestfs: trace: inspect_get_type = "linux" libguestfs: trace: inspect_get_distro "/dev/sda2" libguestfs: trace: inspect_get_distro = "debian" libguestfs: trace: inspect_get_major_version "/dev/sda2" libguestfs: trace: inspect_get_major_version = 8 libguestfs: trace: mkdir_p "/usr/lib/virt-sysprep" [ 3.4] Installing firstboot script: /utilities/1041/startup.sh libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/usr/lib/virt-sysprep/scripts" libguestfs: trace: mkdir_p = 0 libguestfs: trace: write "/usr/lib/virt-sysprep/firstboot.sh" "#!/bin/sh -\x0a\x0a### BEGIN INIT INFO\x0a# Provides: virt-sysprep\x0a# Required-Start: $null\x0a# Should-Start: $all\x0a# Required-Stop: $null\x0a# Should-Stop: $all\x0a# Default-Start: 2 3 5\x0a# Default-Stop: 0 1 6\x0a# Short-Description: Start sc"<truncated, original size 1099 bytes> libguestfs: trace: internal_write "/usr/lib/virt-sysprep/firstboot.sh" "#!/bin/sh -\x0a\x0a### BEGIN INIT INFO\x0a# Provides: virt-sysprep\x0a# Required-Start: $null\x0a# Should-Start: $all\x0a# Required-Stop: $null\x0a# Should-Stop: $all\x0a# Default-Start: 2 3 5\x0a# Default-Stop: 0 1 6\x0a# Short-Description: Start sc"<truncated, original size 1099 bytes> libguestfs: trace: internal_write = 0 libguestfs: trace: write = 0 libguestfs: trace: chmod 493 "/usr/lib/virt-sysprep/firstboot.sh" libguestfs: trace: chmod = 0 libguestfs: trace: is_dir "/etc/systemd/system" libguestfs: trace: is_dir = 1 libguestfs: trace: mkdir_p "/usr/lib/systemd/system" libguestfs: trace: mkdir_p = 0 libguestfs: trace: write "/usr/lib/systemd/system/guestfs-firstboot.service" "[Unit]\x0aDescription=libguestfs firstboot service\x0aAfter=network.target\x0aBefore=prefdm.service\x0a\x0a[Service]\x0aType=oneshot\x0aExecStart=/usr/lib/virt-sysprep/firstboot.sh start\x0aRemainAfterExit=yes\x0aStandardOutput=journal+console\x0aStandardError=inherit\x0a\x0a[Install]\x0aWanted"<truncated, original size 274 bytes> libguestfs: trace: internal_write "/usr/lib/systemd/system/guestfs-firstboot.service" "[Unit]\x0aDescription=libguestfs firstboot service\x0aAfter=network.target\x0aBefore=prefdm.service\x0a\x0a[Service]\x0aType=oneshot\x0aExecStart=/usr/lib/virt-sysprep/firstboot.sh start\x0aRemainAfterExit=yes\x0aStandardOutput=journal+console\x0aStandardError=inherit\x0a\x0a[Install]\x0aWanted"<truncated, original size 274 bytes> libguestfs: trace: internal_write = 0 libguestfs: trace: write = 0 libguestfs: trace: mkdir_p "/etc/systemd/system/default.target.wants" libguestfs: trace: mkdir_p = 0 libguestfs: trace: ln_sf "/usr/lib/systemd/system/guestfs-firstboot.service" "/etc/systemd/system/default.target.wants" libguestfs: trace: ln_sf = 0 libguestfs: trace: is_file "/usr/lib/systemd/system/firstboot.service" libguestfs: trace: is_file = 0 libguestfs: trace: is_dir "/etc/rc.d" libguestfs: trace: is_dir = 0 libguestfs: trace: is_dir "/etc/init.d" libguestfs: trace: is_dir = 1 libguestfs: trace: mkdir_p "/etc/init.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/etc/rc2.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/etc/rc3.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/etc/rc5.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: ln_sf "/usr/lib/virt-sysprep/firstboot.sh" "/etc/init.d/guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: ln_sf "../init.d/guestfs-firstboot" "/etc/rc2.d/S99guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: ln_sf "../init.d/guestfs-firstboot" "/etc/rc3.d/S99guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: ln_sf "../init.d/guestfs-firstboot" "/etc/rc5.d/S99guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: rm_f "/etc/init.d/virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: rm_f "/etc/rc2.d/S99virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: rm_f "/etc/rc3.d/S99virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: rm_f "/etc/rc5.d/S99virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: write "/usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh" "#!/bin/bash\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue.net\x0d\x0aecho "This is a motd startup test" | tee -a /etc/motd" libguestfs: trace: internal_write "/usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh" "#!/bin/bash\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue.net\x0d\x0aecho "This is a motd startup test" | tee -a /etc/motd" libguestfs: trace: internal_write = 0 libguestfs: trace: write = 0 libguestfs: trace: chmod 493 "/usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh" libguestfs: trace: chmod = 0 libguestfs: trace: debug "sh" "fuser -k /sysroot" libguestfs: trace: debug = NULL (error) libguestfs: trace: ping_daemon libguestfs: trace: ping_daemon = 0 libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: shutdown libguestfs: trace: internal_autosync [ 3.4] Finishing off libguestfs: trace: internal_autosync = 0 libguestfs: trace: shutdown = 0 libguestfs: trace: close 0 Startup Script Exec - virt-customize -x -a /var/lib/vz/images/1041/vm-1041-disk-1.qcow2 --firstboot=/utilities/1041/startup.sh Startup Script stdout - [ 0.0] Examining the guest ... [ 3.4] Setting a random seed [ 3.4] Installing firstboot script: /utilities/1041/startup.sh [ 3.4] Finishing off
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://people.redhat.com/~rjones/virt-df/
I am running libguestfs version 1.34.2 The issue is the following. When I start the vm with virt-log I see this: Mar 13 17:33:30 multi6 firstboot.sh[358]: /usr/lib/virt-sysprep/firstboot.sh start Mar 13 17:33:30 multi6 cron[359]: (CRON) INFO (Running @reboot jobs) Mar 13 17:33:30 multi6 firstboot.sh[358]: Scripts dir: /usr/lib/virt-sysprep/scripts Mar 13 17:33:30 multi6 firstboot.sh[358]: === Running /usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh === Mar 13 17:33:30 multi6 firstboot.sh[358]: /usr/lib/virt-sysprep/firstboot.sh: 35: /usr/lib/virt-sysprep/firstboot.sh: /usr/lib/virt-sysprep/scripts-done/0001--utilities-1041-startup-sh: not found The host OS is Debian jessie we have tried with multiple distributions of guests they are had the same issue. Regards, Peter
On 14 Mar 2017, at 10:58, Richard W.M. Jones <rjones@redhat.com> wrote:
On Mon, Mar 13, 2017 at 11:48:05PM +0200, Keresztes Péter-Zoltán wrote:
Hello,
We have a nodejs app which is injecting first boot scripts using virt-customize however the exact same commands are working when triggered manually.
Here is the debug output of the commands
Which version of virt-customize? A number of bugs were fixed in this part of the code in the last year. Furthermore we now have a regression test which should ensure that this keeps working on Debian 8 guests.
Also I'm not clear about what the problem is. It looks as if virt-customize is OK. Do you mean the script doesn't run at first boot?
Rich.
Regards, Peter
[ 0.0] Examining the guest ... libguestfs: trace: set_network true libguestfs: trace: set_network = 0 libguestfs: trace: add_drive "/var/lib/vz/images/1041/vm-1041-disk-1.qcow2" "readonly:false" "protocol:file" "discard:besteffort" libguestfs: trace: add_drive = 0 libguestfs: trace: launch libguestfs: trace: get_tmpdir libguestfs: trace: get_tmpdir = "/tmp" libguestfs: trace: get_backend_setting "force_tcg" libguestfs: trace: get_backend_setting = NULL (error) libguestfs: trace: get_cachedir libguestfs: trace: get_cachedir = "/var/tmp" libguestfs: trace: get_cachedir libguestfs: trace: get_cachedir = "/var/tmp" libguestfs: trace: get_sockdir libguestfs: trace: get_sockdir = "/tmp" libguestfs: trace: get_backend_setting "gdb" libguestfs: trace: get_backend_setting = NULL (error) libguestfs: trace: launch = 0 libguestfs: trace: inspect_os libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: list_filesystems libguestfs: trace: feature_available "lvm2" libguestfs: trace: internal_feature_available "lvm2" libguestfs: trace: internal_feature_available = 0 libguestfs: trace: feature_available = 1 libguestfs: trace: feature_available "ldm" libguestfs: trace: internal_feature_available "ldm" libguestfs: trace: internal_feature_available = 1 libguestfs: trace: feature_available = 0 libguestfs: trace: list_devices libguestfs: trace: list_devices = ["/dev/sda"] libguestfs: trace: list_partitions libguestfs: trace: list_partitions = ["/dev/sda1", "/dev/sda2"] libguestfs: trace: list_md_devices libguestfs: trace: list_md_devices = [] libguestfs: trace: part_to_dev "/dev/sda1" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: part_to_dev "/dev/sda2" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: vfs_type "/dev/sda1" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: vfs_type "/dev/sda2" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: lvs libguestfs: trace: lvs = [] libguestfs: trace: list_filesystems = ["/dev/sda1", "ext4", "/dev/sda2", "ext4"] libguestfs: trace: vfs_type "/dev/sda1" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: internal_parse_mountable "/dev/sda1" libguestfs: trace: internal_parse_mountable = <struct guestfs_internal_mountable = im_type: 0, im_device: /dev/sda1, im_volume: , > libguestfs: trace: is_whole_device "/dev/sda1" libguestfs: trace: is_whole_device = 0 libguestfs: trace: mount_ro "/dev/sda1" "/" libguestfs: trace: mount_ro = 0 libguestfs: trace: part_to_dev "/dev/sda1" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: device_index "/dev/sda" libguestfs: trace: device_index = 0 libguestfs: trace: part_to_partnum "/dev/sda1" libguestfs: trace: part_to_partnum = 1 libguestfs: trace: part_to_dev "/dev/sda1" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: part_list "/dev/sda" libguestfs: trace: part_list = <struct guestfs_partition_list(2) = [0]{part_num: 1, part_start: 1048576, part_end: 500170751, part_size: 499122176, } [1]{part_num: 2, part_start: 500170752, part_end: 10736369663, part_size: 10236198912, }> libguestfs: trace: is_dir "/etc" libguestfs: trace: is_dir = 0 libguestfs: trace: is_dir "/bin" libguestfs: trace: is_dir = 0 libguestfs: trace: is_dir "/share" libguestfs: trace: is_dir = 0 libguestfs: trace: is_file "/grub/menu.lst" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub/grub.conf" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub2/grub.cfg" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/hurd/console" libguestfs: trace: is_file = 0 libguestfs: trace: is_dir "/log" libguestfs: trace: is_dir = 0 libguestfs: trace: case_sensitive_path "/windows" libguestfs: trace: case_sensitive_path = "/windows" libguestfs: trace: case_sensitive_path "/windows/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/winnt" libguestfs: trace: case_sensitive_path = "/winnt" libguestfs: trace: case_sensitive_path "/winnt/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/win32" libguestfs: trace: case_sensitive_path = "/win32" libguestfs: trace: case_sensitive_path "/win32/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/win" libguestfs: trace: case_sensitive_path = "/win" libguestfs: trace: case_sensitive_path "/win/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/reactos" libguestfs: trace: case_sensitive_path = "/reactos" libguestfs: trace: case_sensitive_path "/reactos/system32" libguestfs: trace: case_sensitive_path = NULL (error) libguestfs: trace: case_sensitive_path "/boot.ini" libguestfs: trace: case_sensitive_path = "/boot.ini" libguestfs: trace: is_file "/boot.ini" libguestfs: trace: is_file = 0 libguestfs: trace: case_sensitive_path "/System Volume Information" libguestfs: trace: case_sensitive_path = "/System Volume Information" libguestfs: trace: is_dir "/System Volume Information" libguestfs: trace: is_dir = 0 libguestfs: trace: case_sensitive_path "/System Volume Information" libguestfs: trace: case_sensitive_path = "/System Volume Information" libguestfs: trace: is_dir "/System Volume Information" libguestfs: trace: is_dir = 0 libguestfs: trace: case_sensitive_path "/FDOS" libguestfs: trace: case_sensitive_path = "/FDOS" libguestfs: trace: is_dir "/FDOS" libguestfs: trace: is_dir = 0 libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: vfs_type "/dev/sda2" libguestfs: trace: vfs_type = "ext4" libguestfs: trace: internal_parse_mountable "/dev/sda2" libguestfs: trace: internal_parse_mountable = <struct guestfs_internal_mountable = im_type: 0, im_device: /dev/sda2, im_volume: , > libguestfs: trace: is_whole_device "/dev/sda2" libguestfs: trace: is_whole_device = 0 libguestfs: trace: mount_ro "/dev/sda2" "/" libguestfs: trace: mount_ro = 0 libguestfs: trace: part_to_dev "/dev/sda2" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: device_index "/dev/sda" libguestfs: trace: device_index = 0 libguestfs: trace: part_to_partnum "/dev/sda2" libguestfs: trace: part_to_partnum = 2 libguestfs: trace: part_to_dev "/dev/sda2" libguestfs: trace: part_to_dev = "/dev/sda" libguestfs: trace: part_list "/dev/sda" libguestfs: trace: part_list = <struct guestfs_partition_list(2) = [0]{part_num: 1, part_start: 1048576, part_end: 500170751, part_size: 499122176, } [1]{part_num: 2, part_start: 500170752, part_end: 10736369663, part_size: 10236198912, }> libguestfs: trace: is_dir "/etc" libguestfs: trace: is_dir = 1 libguestfs: trace: is_dir "/bin" libguestfs: trace: is_dir = 1 libguestfs: trace: is_dir "/share" libguestfs: trace: is_dir = 0 libguestfs: trace: is_file "/grub/menu.lst" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub/grub.conf" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/grub2/grub.cfg" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/freebsd-update.conf" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/netbsd" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/bsd" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/hurd/console" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/service/vm" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/fstab" libguestfs: trace: is_file = 1 libguestfs: trace: is_file "/etc/os-release" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/os-release" libguestfs: trace: filesize = 233 libguestfs: trace: read_lines "/etc/os-release" libguestfs: trace: read_file "/etc/os-release" libguestfs: trace: download "/etc/os-release" "/tmp/libguestfsTQwKl0/cat1" libguestfs: trace: download = 0 libguestfs: trace: read_file = "PRETTY_NAME="Debian GNU/Linux 8 (jessie)"\x0aNAME="Debian GNU/Linux"\x0aVERSION_ID="8"\x0aVERSION="8 (jessie)"\x0aID=debian\x0aHOME_URL="http://www.debian.org/"\x0aSUPPORT_URL="http://www.debian.org/support/"\x0aBUG_REPORT_URL="https://bugs.debian.org/"\x0a" libguestfs: trace: read_lines = ["PRETTY_NAME="Debian GNU/Linux 8 (jessie)"", "NAME="Debian GNU/Linux"", "VERSION_ID="8"", "VERSION="8 (jessie)"", "ID=debian", "HOME_URL="http://www.debian.org/"", "SUPPORT_URL="http://www.debian.org/support/"", "BUG_REPORT_URL="https://bugs.debian.org/""] libguestfs: trace: is_file "/etc/lsb-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/oracle-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/centos-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/altlinux-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/redhat-release" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/debian_version" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/debian_version" libguestfs: trace: filesize = 4 libguestfs: trace: head_n 1 "/etc/debian_version" libguestfs: trace: head_n = ["8.1"] libguestfs: trace: is_file "/bin/bash" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: realpath "/bin/bash" libguestfs: trace: realpath = "/bin/bash" libguestfs: trace: file_architecture "/bin/bash" libguestfs: trace: file "/bin/bash" libguestfs: trace: file = "ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a8ff57737fe60fba639d91d603253f4cdc6eb9f7, stripped" libguestfs: trace: file_architecture = "x86_64" libguestfs: trace: is_file "/etc/fstab" "followsymlinks:true" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/fstab" libguestfs: trace: filesize = 665 libguestfs: trace: is_file "/etc/mdadm.conf" "followsymlinks:true" libguestfs: trace: is_file = 0 libguestfs: trace: aug_init "/" 48 libguestfs: trace: aug_init = 0 libguestfs: trace: aug_rm "/augeas/load/*[ "/etc/fstab/" !~ regexp('^') + glob(incl) + regexp('/.*') and "/etc/mdadm.conf/" !~ regexp('^') + glob(incl) + regexp('/.*') ]" libguestfs: trace: aug_rm = 1191 libguestfs: trace: aug_load libguestfs: trace: aug_load = 0 libguestfs: trace: aug_match "/augeas/files//error" libguestfs: trace: aug_match = [] libguestfs: trace: list_md_devices libguestfs: trace: list_md_devices = [] libguestfs: trace: aug_match "/files/etc/fstab/*[label() != '#comment']" libguestfs: trace: aug_match = ["/files/etc/fstab/1", "/files/etc/fstab/2", "/files/etc/fstab/3"] libguestfs: trace: aug_get "/files/etc/fstab/1/spec" libguestfs: trace: aug_get = "UUID=a1d1d2db-71f3-4354-95ba-fc582e84c26e" libguestfs: trace: aug_get "/files/etc/fstab/1/file" libguestfs: trace: aug_get = "/" libguestfs: trace: findfs_uuid "a1d1d2db-71f3-4354-95ba-fc582e84c26e" libguestfs: trace: findfs_uuid = "/dev/sda2" libguestfs: trace: aug_get "/files/etc/fstab/1/vfstype" libguestfs: trace: aug_get = "ext4" libguestfs: trace: aug_get "/files/etc/fstab/2/spec" libguestfs: trace: aug_get = "UUID=9b14f996-b8a0-4cdc-9dcc-946ebcd8fc5e" libguestfs: trace: aug_get "/files/etc/fstab/2/file" libguestfs: trace: aug_get = "/boot" libguestfs: trace: findfs_uuid "9b14f996-b8a0-4cdc-9dcc-946ebcd8fc5e" libguestfs: trace: findfs_uuid = "/dev/sda1" libguestfs: trace: aug_get "/files/etc/fstab/2/vfstype" libguestfs: trace: aug_get = "ext4" libguestfs: trace: aug_get "/files/etc/fstab/3/spec" libguestfs: trace: aug_get = "/dev/sr0" libguestfs: trace: aug_get "/files/etc/fstab/3/file" libguestfs: trace: aug_get = "/media/cdrom0" libguestfs: trace: aug_close libguestfs: trace: aug_close = 0 libguestfs: trace: is_file "/etc/HOSTNAME" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/hostname" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/etc/hostname" libguestfs: trace: filesize = 6 libguestfs: trace: head_n 1 "/etc/hostname" libguestfs: trace: head_n = ["multi6"] libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: inspect_get_roots libguestfs: trace: inspect_get_roots = ["/dev/sda2"] libguestfs: trace: inspect_os = ["/dev/sda2"] libguestfs: trace: inspect_get_mountpoints "/dev/sda2" libguestfs: trace: inspect_get_mountpoints = ["/", "/dev/sda2", "/boot", "/dev/sda1"] libguestfs: trace: mount "/dev/sda2" "/" libguestfs: trace: mount = 0 libguestfs: trace: mount "/dev/sda1" "/boot" libguestfs: trace: mount = 0 libguestfs: trace: inspect_get_arch "/dev/sda2" libguestfs: trace: inspect_get_arch = "x86_64" libguestfs: trace: inspect_get_type "/dev/sda2" libguestfs: trace: inspect_get_type = "linux" libguestfs: trace: is_dir "/tmp" "followsymlinks:true" libguestfs: trace: is_dir = 1 libguestfs: trace: inspect_get_type "/dev/sda2" libguestfs: trace: inspect_get_type = "linux" libguestfs: trace: is_file "/var/lib/random-seed" [ 3.4] Setting a random seed libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/var/lib/systemd/random-seed" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/var/lib/systemd/random-seed" libguestfs: trace: filesize = 512 libguestfs: trace: truncate "/var/lib/systemd/random-seed" libguestfs: trace: truncate = 0 libguestfs: trace: write_append "/var/lib/systemd/random-seed" "\x9e\x92\xa5\xae\xa3\x13\xb3Qt'\x1fn\x00\xd9\xf6\xcd\x1cYP\x14U\x1b\xfbc\xdd\xa2\x95\xd1\xdf\x0d\x94\xf7\xb8\xba$\x18z \xe2,\xd3\xd0u\xb9F\xd9\x87G\x8c\x16S\x90q\xf12(a\x89\xb1\xab\x8b\xd4\xd4M\xc4\xc6\xb0\x186\xe2A\x09\x99\xd1\xb8;\xee\x9b\xef\xee\x01co$\xfe\xf0I\xd5\x1a\xac{C&:y\xc8\xf2\xf5H\xe116\x97$\x02\xc9\xc0u\xcf7\x094\xb0SM\x8d\x0f\x0b\xc8\xf1\x1e\xae\xe0`\xbe\x87\x97\xc6\xf1\x07E\x99G\x1b\x89\x9c\x14\xfcx\xcd\xaf[[_\xc6%\x99:H\xba,4\xd4~\x0d\xb7\xf03<\xd5\x15\xef/\xa8T\xf6L\xee\xa9A\x8d\xa7\xc48r*\x0c\x9f\xde\x10/\xb0\x1a<@\xa8]2\x94{\xf0\x97S\xd6'\xc4\x1d\xff\xb5Y\x9bV\x0b`\x8d\x8d\xab\xd3\x02\x99z\xf3\x88\xff\xa1\xf7\x9et\xe3\xd0\xa9\xd9x\x19\xa4\x9c)P\x02z\xd7[K|f\x06-U%\x11\xf17\xedha\xb6\xf8f\x1b\xc5\x8fM\xab1;5"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append "/var/lib/systemd/random-seed" "\x9e\x92\xa5\xae\xa3\x13\xb3Qt'\x1fn\x00\xd9\xf6\xcd\x1cYP\x14U\x1b\xfbc\xdd\xa2\x95\xd1\xdf\x0d\x94\xf7\xb8\xba$\x18z \xe2,\xd3\xd0u\xb9F\xd9\x87G\x8c\x16S\x90q\xf12(a\x89\xb1\xab\x8b\xd4\xd4M\xc4\xc6\xb0\x186\xe2A\x09\x99\xd1\xb8;\xee\x9b\xef\xee\x01co$\xfe\xf0I\xd5\x1a\xac{C&:y\xc8\xf2\xf5H\xe116\x97$\x02\xc9\xc0u\xcf7\x094\xb0SM\x8d\x0f\x0b\xc8\xf1\x1e\xae\xe0`\xbe\x87\x97\xc6\xf1\x07E\x99G\x1b\x89\x9c\x14\xfcx\xcd\xaf[[_\xc6%\x99:H\xba,4\xd4~\x0d\xb7\xf03<\xd5\x15\xef/\xa8T\xf6L\xee\xa9A\x8d\xa7\xc48r*\x0c\x9f\xde\x10/\xb0\x1a<@\xa8]2\x94{\xf0\x97S\xd6'\xc4\x1d\xff\xb5Y\x9bV\x0b`\x8d\x8d\xab\xd3\x02\x99z\xf3\x88\xff\xa1\xf7\x9et\xe3\xd0\xa9\xd9x\x19\xa4\x9c)P\x02z\xd7[K|f\x06-U%\x11\xf17\xedha\xb6\xf8f\x1b\xc5\x8fM\xab1;5"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append = 0 libguestfs: trace: write_append = 0 libguestfs: trace: is_file "/var/lib/urandom/random-seed" libguestfs: trace: is_file = 1 libguestfs: trace: filesize "/var/lib/urandom/random-seed" libguestfs: trace: filesize = 512 libguestfs: trace: truncate "/var/lib/urandom/random-seed" libguestfs: trace: truncate = 0 libguestfs: trace: write_append "/var/lib/urandom/random-seed" "\x87}\x96\x13\xa73\xd6\xc8\x7f\x93\xd0)\x1d\xcd\xf1\xab\xca?`[u\x80\x0b\xd4\xebIwC\xd2\x94\xfcm\xc9!\x0fj\x04\xe9\x92h\xdc\xf5\x07\xc3\xc5\xd4\xae\x1f\xff\xc9\xb0K%\x9f\xad\xff{Y\xbfT\xb2\x92\x0b\x03\xde<\xb2\xfe\xc7\xeb\x01\xb6\xd4!\xdb\xb1\x18\x1d6\xa9\xb9SO#\xae8\xb80\x1b|\xa4\xc3V\xda\x0e%\x81\xc1\x9a\xbfS\xa5\xeb\x94\xb9\xf0{\xe8 \xcb|\x00\xe8\xe2-\xfa\x87\x15\xbe\x96\xbb\xffW#\\x84\x83\x8c\x06C\xf9\xb7\xb9\xff!\x8c\x18\x17\xd92\x1a\xd6W\xc0\xab\x11\x04\x09G\xacG/\xd7\xe6g9\xd4\xbc\xa2gz\xee\x06s+\x8bn\xb9\xa0\x94&L\xec\x7f\xbde)\xaf\xfa\xd6kt\xa06R&\xd6+-$\x0b\xaa\xf7\xf2i?\x1bnl\x0f8\xb9Kx\x0d\xb3\xf4\x0d\xae\xe0\x8a\x19\x1f\x05d2)\x88\xdb/\x9f\x1a"\x9b \xfc\xcf\xf87\xa5\x82\x18\x1a\x0d\xbf\xc7X7\x17%F\xa3~\xa9\xba^\x80H\xea\x11\xd9\xce\xf0\x98\xd7V"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append "/var/lib/urandom/random-seed" "\x87}\x96\x13\xa73\xd6\xc8\x7f\x93\xd0)\x1d\xcd\xf1\xab\xca?`[u\x80\x0b\xd4\xebIwC\xd2\x94\xfcm\xc9!\x0fj\x04\xe9\x92h\xdc\xf5\x07\xc3\xc5\xd4\xae\x1f\xff\xc9\xb0K%\x9f\xad\xff{Y\xbfT\xb2\x92\x0b\x03\xde<\xb2\xfe\xc7\xeb\x01\xb6\xd4!\xdb\xb1\x18\x1d6\xa9\xb9SO#\xae8\xb80\x1b|\xa4\xc3V\xda\x0e%\x81\xc1\x9a\xbfS\xa5\xeb\x94\xb9\xf0{\xe8 \xcb|\x00\xe8\xe2-\xfa\x87\x15\xbe\x96\xbb\xffW#\\x84\x83\x8c\x06C\xf9\xb7\xb9\xff!\x8c\x18\x17\xd92\x1a\xd6W\xc0\xab\x11\x04\x09G\xacG/\xd7\xe6g9\xd4\xbc\xa2gz\xee\x06s+\x8bn\xb9\xa0\x94&L\xec\x7f\xbde)\xaf\xfa\xd6kt\xa06R&\xd6+-$\x0b\xaa\xf7\xf2i?\x1bnl\x0f8\xb9Kx\x0d\xb3\xf4\x0d\xae\xe0\x8a\x19\x1f\x05d2)\x88\xdb/\x9f\x1a"\x9b \xfc\xcf\xf87\xa5\x82\x18\x1a\x0d\xbf\xc7X7\x17%F\xa3~\xa9\xba^\x80H\xea\x11\xd9\xce\xf0\x98\xd7V"<truncated, original size 512 bytes> libguestfs: trace: internal_write_append = 0 libguestfs: trace: write_append = 0 libguestfs: trace: is_file "/var/lib/misc/random-seed" libguestfs: trace: is_file = 0 libguestfs: trace: is_file "/etc/random-seed" libguestfs: trace: is_file = 0 libguestfs: trace: inspect_get_type "/dev/sda2" libguestfs: trace: inspect_get_type = "linux" libguestfs: trace: inspect_get_distro "/dev/sda2" libguestfs: trace: inspect_get_distro = "debian" libguestfs: trace: inspect_get_major_version "/dev/sda2" libguestfs: trace: inspect_get_major_version = 8 libguestfs: trace: mkdir_p "/usr/lib/virt-sysprep" [ 3.4] Installing firstboot script: /utilities/1041/startup.sh libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/usr/lib/virt-sysprep/scripts" libguestfs: trace: mkdir_p = 0 libguestfs: trace: write "/usr/lib/virt-sysprep/firstboot.sh" "#!/bin/sh -\x0a\x0a### BEGIN INIT INFO\x0a# Provides: virt-sysprep\x0a# Required-Start: $null\x0a# Should-Start: $all\x0a# Required-Stop: $null\x0a# Should-Stop: $all\x0a# Default-Start: 2 3 5\x0a# Default-Stop: 0 1 6\x0a# Short-Description: Start sc"<truncated, original size 1099 bytes> libguestfs: trace: internal_write "/usr/lib/virt-sysprep/firstboot.sh" "#!/bin/sh -\x0a\x0a### BEGIN INIT INFO\x0a# Provides: virt-sysprep\x0a# Required-Start: $null\x0a# Should-Start: $all\x0a# Required-Stop: $null\x0a# Should-Stop: $all\x0a# Default-Start: 2 3 5\x0a# Default-Stop: 0 1 6\x0a# Short-Description: Start sc"<truncated, original size 1099 bytes> libguestfs: trace: internal_write = 0 libguestfs: trace: write = 0 libguestfs: trace: chmod 493 "/usr/lib/virt-sysprep/firstboot.sh" libguestfs: trace: chmod = 0 libguestfs: trace: is_dir "/etc/systemd/system" libguestfs: trace: is_dir = 1 libguestfs: trace: mkdir_p "/usr/lib/systemd/system" libguestfs: trace: mkdir_p = 0 libguestfs: trace: write "/usr/lib/systemd/system/guestfs-firstboot.service" "[Unit]\x0aDescription=libguestfs firstboot service\x0aAfter=network.target\x0aBefore=prefdm.service\x0a\x0a[Service]\x0aType=oneshot\x0aExecStart=/usr/lib/virt-sysprep/firstboot.sh start\x0aRemainAfterExit=yes\x0aStandardOutput=journal+console\x0aStandardError=inherit\x0a\x0a[Install]\x0aWanted"<truncated, original size 274 bytes> libguestfs: trace: internal_write "/usr/lib/systemd/system/guestfs-firstboot.service" "[Unit]\x0aDescription=libguestfs firstboot service\x0aAfter=network.target\x0aBefore=prefdm.service\x0a\x0a[Service]\x0aType=oneshot\x0aExecStart=/usr/lib/virt-sysprep/firstboot.sh start\x0aRemainAfterExit=yes\x0aStandardOutput=journal+console\x0aStandardError=inherit\x0a\x0a[Install]\x0aWanted"<truncated, original size 274 bytes> libguestfs: trace: internal_write = 0 libguestfs: trace: write = 0 libguestfs: trace: mkdir_p "/etc/systemd/system/default.target.wants" libguestfs: trace: mkdir_p = 0 libguestfs: trace: ln_sf "/usr/lib/systemd/system/guestfs-firstboot.service" "/etc/systemd/system/default.target.wants" libguestfs: trace: ln_sf = 0 libguestfs: trace: is_file "/usr/lib/systemd/system/firstboot.service" libguestfs: trace: is_file = 0 libguestfs: trace: is_dir "/etc/rc.d" libguestfs: trace: is_dir = 0 libguestfs: trace: is_dir "/etc/init.d" libguestfs: trace: is_dir = 1 libguestfs: trace: mkdir_p "/etc/init.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/etc/rc2.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/etc/rc3.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: mkdir_p "/etc/rc5.d" libguestfs: trace: mkdir_p = 0 libguestfs: trace: ln_sf "/usr/lib/virt-sysprep/firstboot.sh" "/etc/init.d/guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: ln_sf "../init.d/guestfs-firstboot" "/etc/rc2.d/S99guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: ln_sf "../init.d/guestfs-firstboot" "/etc/rc3.d/S99guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: ln_sf "../init.d/guestfs-firstboot" "/etc/rc5.d/S99guestfs-firstboot" libguestfs: trace: ln_sf = 0 libguestfs: trace: rm_f "/etc/init.d/virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: rm_f "/etc/rc2.d/S99virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: rm_f "/etc/rc3.d/S99virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: rm_f "/etc/rc5.d/S99virt-sysprep-firstboot" libguestfs: trace: rm_f = 0 libguestfs: trace: write "/usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh" "#!/bin/bash\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue.net\x0d\x0aecho "This is a motd startup test" | tee -a /etc/motd" libguestfs: trace: internal_write "/usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh" "#!/bin/bash\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue\x0d\x0aecho "This is another startup script test" | tee -a /etc/issue.net\x0d\x0aecho "This is a motd startup test" | tee -a /etc/motd" libguestfs: trace: internal_write = 0 libguestfs: trace: write = 0 libguestfs: trace: chmod 493 "/usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh" libguestfs: trace: chmod = 0 libguestfs: trace: debug "sh" "fuser -k /sysroot" libguestfs: trace: debug = NULL (error) libguestfs: trace: ping_daemon libguestfs: trace: ping_daemon = 0 libguestfs: trace: umount_all libguestfs: trace: umount_all = 0 libguestfs: trace: shutdown libguestfs: trace: internal_autosync [ 3.4] Finishing off libguestfs: trace: internal_autosync = 0 libguestfs: trace: shutdown = 0 libguestfs: trace: close 0 Startup Script Exec - virt-customize -x -a /var/lib/vz/images/1041/vm-1041-disk-1.qcow2 --firstboot=/utilities/1041/startup.sh Startup Script stdout - [ 0.0] Examining the guest ... [ 3.4] Setting a random seed [ 3.4] Installing firstboot script: /utilities/1041/startup.sh [ 3.4] Finishing off
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://people.redhat.com/~rjones/virt-df/
On Tue, Mar 14, 2017 at 03:45:34PM +0200, Keresztes Péter-Zoltán wrote:
I am running libguestfs version 1.34.2
As far as I know, this version should contain all the fixes for Debian firstboot issues, in particular the ones related to https://bugzilla.redhat.com/1019388
The issue is the following. When I start the vm with virt-log I see this:
Mar 13 17:33:30 multi6 firstboot.sh[358]: /usr/lib/virt-sysprep/firstboot.sh start Mar 13 17:33:30 multi6 cron[359]: (CRON) INFO (Running @reboot jobs) Mar 13 17:33:30 multi6 firstboot.sh[358]: Scripts dir: /usr/lib/virt-sysprep/scripts Mar 13 17:33:30 multi6 firstboot.sh[358]: === Running /usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh === Mar 13 17:33:30 multi6 firstboot.sh[358]: /usr/lib/virt-sysprep/firstboot.sh: 35: /usr/lib/virt-sysprep/firstboot.sh: /usr/lib/virt-sysprep/scripts-done/0001--utilities-1041-startup-sh: not found
I wonder if it's because the script contains a hash-bang path to a non-existing interpreter. IOW if the script starts with `#!/bin/bash' then you would have to install bash in the guest. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html
We are enforcing #!/bin/bash at the beginning of the scripts and bash is installed in every guest. Regards, Peter 2017. márc. 14. dátummal, 16:14 időpontban Richard W.M. Jones <rjones@redhat.com> írta:
On Tue, Mar 14, 2017 at 03:45:34PM +0200, Keresztes Péter-Zoltán wrote: I am running libguestfs version 1.34.2
As far as I know, this version should contain all the fixes for Debian firstboot issues, in particular the ones related to https://bugzilla.redhat.com/1019388
The issue is the following. When I start the vm with virt-log I see this:
Mar 13 17:33:30 multi6 firstboot.sh[358]: /usr/lib/virt-sysprep/firstboot.sh start Mar 13 17:33:30 multi6 cron[359]: (CRON) INFO (Running @reboot jobs) Mar 13 17:33:30 multi6 firstboot.sh[358]: Scripts dir: /usr/lib/virt-sysprep/scripts Mar 13 17:33:30 multi6 firstboot.sh[358]: === Running /usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh === Mar 13 17:33:30 multi6 firstboot.sh[358]: /usr/lib/virt-sysprep/firstboot.sh: 35: /usr/lib/virt-sysprep/firstboot.sh: /usr/lib/virt-sysprep/scripts-done/0001--utilities-1041-startup-sh: not found
I wonder if it's because the script contains a hash-bang path to a non-existing interpreter. IOW if the script starts with `#!/bin/bash' then you would have to install bash in the guest.
Rich.
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html
On Tue, Mar 14, 2017 at 04:46:41PM +0200, Keresztes Péter-Zoltán wrote:
We are enforcing #!/bin/bash at the beginning of the scripts and bash is installed in every guest.
No idea in that case. Suggest using guestfish on the guest after virt-customize has run to check that the files are really being installed in the right places and have the right permissions etc. Rich.
Regards, Peter
2017. márc. 14. dátummal, 16:14 időpontban Richard W.M. Jones <rjones@redhat.com> írta:
On Tue, Mar 14, 2017 at 03:45:34PM +0200, Keresztes Péter-Zoltán wrote: I am running libguestfs version 1.34.2
As far as I know, this version should contain all the fixes for Debian firstboot issues, in particular the ones related to https://bugzilla.redhat.com/1019388
The issue is the following. When I start the vm with virt-log I see this:
Mar 13 17:33:30 multi6 firstboot.sh[358]: /usr/lib/virt-sysprep/firstboot.sh start Mar 13 17:33:30 multi6 cron[359]: (CRON) INFO (Running @reboot jobs) Mar 13 17:33:30 multi6 firstboot.sh[358]: Scripts dir: /usr/lib/virt-sysprep/scripts Mar 13 17:33:30 multi6 firstboot.sh[358]: === Running /usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh === Mar 13 17:33:30 multi6 firstboot.sh[358]: /usr/lib/virt-sysprep/firstboot.sh: 35: /usr/lib/virt-sysprep/firstboot.sh: /usr/lib/virt-sysprep/scripts-done/0001--utilities-1041-startup-sh: not found
I wonder if it's because the script contains a hash-bang path to a non-existing interpreter. IOW if the script starts with `#!/bin/bash' then you would have to install bash in the guest.
Rich.
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top
Figured it out. The generated script had CRLF line termination. When we have removed the \r from the end if line everything started to work. Thanks for the help. Regards, Peter
On 14 Mar 2017, at 17:00, Richard W.M. Jones <rjones@redhat.com> wrote:
On Tue, Mar 14, 2017 at 04:46:41PM +0200, Keresztes Péter-Zoltán wrote:
We are enforcing #!/bin/bash at the beginning of the scripts and bash is installed in every guest.
No idea in that case. Suggest using guestfish on the guest after virt-customize has run to check that the files are really being installed in the right places and have the right permissions etc.
Rich.
Regards, Peter
2017. márc. 14. dátummal, 16:14 időpontban Richard W.M. Jones <rjones@redhat.com> írta:
On Tue, Mar 14, 2017 at 03:45:34PM +0200, Keresztes Péter-Zoltán wrote: I am running libguestfs version 1.34.2
As far as I know, this version should contain all the fixes for Debian firstboot issues, in particular the ones related to https://bugzilla.redhat.com/1019388
The issue is the following. When I start the vm with virt-log I see this:
Mar 13 17:33:30 multi6 firstboot.sh[358]: /usr/lib/virt-sysprep/firstboot.sh start Mar 13 17:33:30 multi6 cron[359]: (CRON) INFO (Running @reboot jobs) Mar 13 17:33:30 multi6 firstboot.sh[358]: Scripts dir: /usr/lib/virt-sysprep/scripts Mar 13 17:33:30 multi6 firstboot.sh[358]: === Running /usr/lib/virt-sysprep/scripts/0001--utilities-1041-startup-sh === Mar 13 17:33:30 multi6 firstboot.sh[358]: /usr/lib/virt-sysprep/firstboot.sh: 35: /usr/lib/virt-sysprep/firstboot.sh: /usr/lib/virt-sysprep/scripts-done/0001--utilities-1041-startup-sh: not found
I wonder if it's because the script contains a hash-bang path to a non-existing interpreter. IOW if the script starts with `#!/bin/bash' then you would have to install bash in the guest.
Rich.
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones <http://people.redhat.com/~rjones> Read my programming and virtualization blog: http://rwmj.wordpress.com <http://rwmj.wordpress.com/> virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top <http://people.redhat.com/~rjones/virt-top>
On Tue, Mar 14, 2017 at 05:58:53PM +0200, Keresztes Péter-Zoltán wrote:
Figured it out.
The generated script had CRLF line termination. When we have removed the \r from the end if line everything started to work.
That's good that you worked this out. Is this something that can be helped and/or fixed in virt-customize do you think? Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html
Unless you can ignore different line terminations I don’t think so. Regards, Peter
On 14 Mar 2017, at 20:23, Richard W.M. Jones <rjones@redhat.com> wrote:
On Tue, Mar 14, 2017 at 05:58:53PM +0200, Keresztes Péter-Zoltán wrote:
Figured it out.
The generated script had CRLF line termination. When we have removed the \r from the end if line everything started to work.
That's good that you worked this out. Is this something that can be helped and/or fixed in virt-customize do you think?
Rich.
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html
participants (2)
-
Keresztes Péter-Zoltán -
Richard W.M. Jones