With the following Vagrantfile:
Vagrant.configure("2") do |config|
config.vm.box = "almalinux/9"
config.vm.provider :parallels do |prl|
prl.update_guest_tools = true
end
end
The installation of Parallels Tools fails:
$ vagrant up
Bringing machine 'default' up with 'parallels' provider...
==> default: Registering VM image from the base box 'almalinux/9'...
==> default: Creating new virtual machine as a linked clone of the box image...
==> default: Unregistering the box VM image...
==> default: Setting the default configuration for VM...
==> default: Checking if box 'almalinux/9' version '9.1.20221117' is up to date...
…
==> default: Checking for Parallels Tools installed on the VM...
==> default: Parallels Tools were not detected on this VM! They are required
==> default: for shared folders, time sync and more. If shared folders are not
…
Started installation of Parallels Guest Tools version '18.2.0.53488'
Error: failed to install mandatory packages.
Error: failed to install or upgrade Parallels Guest Tools!
Because the ‘parallels-tools-install.log’ shows the underlying error is ‘Unable to find a match: kernel-devel-5.14.0-162.6.1.el9_1.x86_64’, I tried updating the kernel as suggested in KB Parallels: How to update kernel-devel to install Parallels Tools, but the installation of Parallels Tools then still fails at a compilation error:
$ vagrant ssh --command 'sudo yum -y install kernel kernel-devel epel-release' && vagrant reload
…
==> default: Booting VM...
…
Started installation of Parallels Guest Tools version '18.2.0.53488'
…
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c:864:10: error: 'const struct address_space_operations' has no member named 'set_page_dirty'
I can’t quite make sense of this error. I found this commit in which set_page_dirty
was removed from address_space_operations
, but the tags indicate it’s in v5.18 and later:
So I would expect set_page_dirty
to still be present in the following (ostensibly v5.14), but it’s not:
$ vagrant ssh --command 'sed -n 369,377p /usr/src/kernels/5.14.0-284.11.1.el9_2.x86_64/include/linux/fs.h'
struct address_space_operations {
int (*writepage)(struct page *page, struct writeback_control *wbc);
int (*readpage)(struct file *, struct page *);
/* Write back some dirty pages from this mapping. */
int (*writepages)(struct address_space *, struct writeback_control *);
/* Mark a folio dirty. Return true if this dirtied it */
bool (*dirty_folio)(struct address_space *, struct folio *);
What can I do to get the Parallels Tools to install?