Parallels Tools 14.1.3をLinux Kernel 5.0にインストールする方法

ROS2ではじめよう 次世代ロボットプログラミングの先行販売分を運良く入手できたので、手元のMacBookのParallels DesktopにXubuntu BionicをインストールしてROS2を試しています。

Parallels Desktop 14(バージョン 14.1.3 (45485))でインストールできるParallels Tools(バージョン 14.1.3.45485)をLinux Kernel 5.0以上のLinux環境にインストールしようとすると、以下のエラーが出て、インストールに失敗します。

この問題を解決する方法がParallelsのフォーラムに書き込まれており、その方法でインストールすることができました。Parallelsのバージョンがあがったり、Linux Kernelのバージョン次第ではこの方法が適用できなくなることも想定されますが、ちょっと探した限りでは、この修正方法が日本語ではまとまっていなかったようなので取り急ぎまとめておきます。

動作確認した環境

  • Parallels Desktop 14(バージョン 14.1.3 (45485))
  • Xubuntu Bionic 18.04.2
    • Linux Kernel 5.0.0-23

修正方法

参考にしたのは以下のページです。

Kernel 5.0.3
As I'm sure the Parallels Linux team is aware... New major kernel out. Tools will not build against it.

#4の投稿に以下の変更が示されており、その方法を適用することで無事にParallels Tools 14をLinux Kernel 5.0.0のXubuntu Bionic 18.04.2にインストールすることができました。

$ diff -puNr parallels_fixed/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c parallels_tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c
--- parallels_fixed/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c	2019-08-11 01:42:47.994961911 +0900
+++ parallels_tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c	2019-08-11 01:41:39.895143829 +0900
@@ -116,11 +116,11 @@ static int prlfs_remount(struct super_bl
 {
 	int ret = 0;
 	DPRINTK("ENTER\n");
-	if ( (!((*flags) & SB_RDONLY) && PRLFS_SB(sb)->readonly) ||
-	       ((*flags) & SB_MANDLOCK) )
+	if ( (!((*flags) & MS_RDONLY) && PRLFS_SB(sb)->readonly) ||
+	       ((*flags) & MS_MANDLOCK) )
 			ret = -EINVAL;

-	*flags |= SB_SYNCHRONOUS; /* silently don't drop sync flag */
+	*flags |= MS_SYNCHRONOUS; /* silently don't drop sync flag */
 	DPRINTK("EXIT returning %d\n", ret);
 	return ret;
 }
@@ -274,7 +274,7 @@ static int prlfs_fill_super(struct super
 	sb->s_maxbytes = MAX_LFS_FILESIZE;
 	sb->s_blocksize = PAGE_SIZE;
 	sb->s_blocksize_bits = PAGE_SHIFT;
-	sb->s_flags |= SB_NOATIME | SB_SYNCHRONOUS;
+	sb->s_flags |= MS_NOATIME | MS_SYNCHRONOUS;
 	sb->s_magic = PRLFS_MAGIC;
 	sb->s_op = &prlfs_super_ops;
 	PRLFS_ALLOC_SB_INFO(sb);

具体的にはDesktopにparallels_fixedというディレクトリを作成し、その中にParallels Toolsのインストーラをコピーして修正し、parallels_fixed内のインストーラを実行してParallels Toolsをインストールするという流れです。

まず、Parallels Toolsのインストーラをマウントし、デスクトップの所定のフォルダに展開します。prl_mod.tar.gzの中のファイルのパーミッションの都合でsudoを付けて圧縮ファイルを展開しました。

mkdir -p ~/Desktop/parallels_fixed/
cp -r /media/ubuntu/Parallels\ Tools/* ~/Desktop/parallels_fixed/
cd ~/Desktop/parallels_fixed/kmods/
sudo tar xvf prl_mod.tar.gz

次に、kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.cを編集します。

MS_SB_に置き換えるだけなので、以下のコマンドで編集できます。

sed -e 's/MS_/SB_/g' -i prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c

編集したら、展開元のprl_mod.tar.gzを削除して、編集したファイルで再度圧縮ファイルを作成します。最後にインストーラを起動して、無事にインストールできることが確認できれば終了です。

sudo rm prl_mod.tar.gz
sudo tar cvf prl_mod.tar.gz . dkms.conf Makefile.kmods
cd ../
./install-gui

あとがき

XubuntuはUbuntuの軽量版ディストリビューションで、デスクトップ環境にXfceを使用しており、Ubuntuよりも描画の負担が少ないのが特徴です。MacBookで仮想マシンを動かすような状況でも比較的不満なく使えると思いますので、Ubuntuしか使ったことがない方も是非使ってみてください。

コメント