Check for /boot/loader.rc as "install disc" detection, using it to mark FreeBSD install discs. Also, check for /mfsroot.gz to see whether such disc is also a live one.
See also RHBZ#1033207. --- src/inspect-fs-cd.c | 19 ++++++++++++++++++- src/inspect-fs.c | 3 ++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/inspect-fs-cd.c b/src/inspect-fs-cd.c index eaeaa6f..fff0629 100644 --- a/src/inspect-fs-cd.c +++ b/src/inspect-fs-cd.c @@ -327,6 +327,16 @@ check_isolinux_installer_root (guestfs_h *g, struct inspect_fs *fs) return 0; } +/* FreeBSD with /boot/loader.rc. + */ +static int +check_freebsd_installer_root (guestfs_h *g, struct inspect_fs *fs) +{ + fs->type = OS_TYPE_FREEBSD; + + return 0; +} + /* Windows 2003 and similar versions. * * NB: txtsetup file contains Windows \r\n line endings, which guestfs_grep @@ -430,7 +440,8 @@ guestfs___check_installer_root (guestfs_h *g, struct inspect_fs *fs) * need to unpack this and look inside to tell the difference. */ if (guestfs_is_file (g, "/casper/filesystem.squashfs") > 0 || - guestfs_is_file (g, "/live/filesystem.squashfs") > 0) + guestfs_is_file (g, "/live/filesystem.squashfs") > 0 || + guestfs_is_file (g, "/mfsroot.gz") > 0) fs->is_live_disk = 1; /* Debian/Ubuntu. */ @@ -461,6 +472,12 @@ guestfs___check_installer_root (guestfs_h *g, struct inspect_fs *fs) return -1; } + /* FreeBSD. */ + else if (guestfs_is_file (g, "/boot/loader.rc") > 0) { + if (check_freebsd_installer_root (g, fs) == -1) + return -1; + } + /* Windows 2003 64 bit */ else if (guestfs_is_file (g, "/amd64/txtsetup.sif") > 0) { fs->arch = safe_strdup (g, "x86_64"); diff --git a/src/inspect-fs.c b/src/inspect-fs.c index 0473e92..89c9335 100644 --- a/src/inspect-fs.c +++ b/src/inspect-fs.c @@ -320,7 +320,8 @@ check_filesystem (guestfs_h *g, const char *mountable, guestfs_is_file (g, "/.discinfo") > 0 || guestfs_is_file (g, "/i386/txtsetup.sif") > 0 || guestfs_is_file (g, "/amd64/txtsetup.sif") > 0 || - guestfs_is_file (g, "/freedos/freedos.ico") > 0)) { + guestfs_is_file (g, "/freedos/freedos.ico") > 0 || + guestfs_is_file (g, "/boot/loader.rc") > 0)) { fs->is_root = 1; fs->format = OS_FORMAT_INSTALLER; if (guestfs___check_installer_root (g, fs) == -1) -- 1.8.3.1 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs