なぜVMwareを入れるのか
これはあくまで僕の持論なので反論は受け付けませんが、僕は色んなOSを触るために仮想で試しています。
いやいや。待ってください。自分のパソコンに入れたらいいじゃないですか?って
自分のパソコンに入れるとなるとメモリに限度があるというのと、一度インストールに失敗したりパソコン全体に響くようなミスをしてしまった場合を考えて仮想で試すのです。
自分のパソコンなので責任なんてどうでもいいですが、まずは慣れが大事だと思うので僕は入れます。
実際にVMwareを入れてみよう
まず、実際に導入した機器のスペック?です。
パソコン | ThinkPad X1 Carbon (2017モデル) |
入れてるOS | Ubuntu17.10 |
結構最新のもの使ってます。ただ、やり方は変わらない(と思う)ので特に気にしなくて問題ないと思います。 |
インストール手順
①こちらからLinux版をダウンロードしてきてください。
② 上記のサイトからダウンロードしてきたbandleファイルをrootディレクトリに置いてshコマンドで実行してインストールしてください。*1
$ sh VMware-Player-14.0.0-6661328.x86_64.bundle
③終わり
さあ、起動しよう
なんでや!!!!
俺が悪いことでもしたっていうのか?!(心当たりあり)
このエラーを直して使えるようにしよう
このエラーを凄い要約すると物理メモリが足りないって言われてます。
ということでググってみたらこのサイト辺りが当たりだと思ったのでやってみました。*2
①以下のコマンドを実行
cd /usr/lib/vmware/modules/source
tar xf vmmon.tar
cd vmmon-only/linux
edit vmmon-only/linux/hostif.c
②hostif.cの中身追加
#include "versioned_atomic.h"
--- BEGIN ADD ---
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
# define global_zone_page_state global_page_state
#endif
static unsigned long get_nr_slab_unreclaimable(void)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
return global_node_page_state(NR_SLAB_UNRECLAIMABLE);
#else
return global_page_state(NR_SLAB_UNRECLAIMABLE);
#endif
}
static unsigned long get_nr_unevictable(void)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
return global_node_page_state(NR_UNEVICTABLE);
#else
return global_page_state(NR_UNEVICTABLE);
#endif
}
static unsigned long get_nr_anon_mapped(void)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
return global_node_page_state(NR_ANON_MAPPED);
#else
return global_page_state(NR_ANON_PAGES);
#endif
}
--- END ADD ---
...
unsigned int reservedPages = MEMDEFAULTS_MIN_HOST_PAGES;
unsigned int hugePages = (vm == NULL) ? 0 :
BYTES_2_PAGES(vm->memInfo.hugePageBytes);
--- BEGIN REPLACE ---
unsigned int lockedPages = global_page_state(NR_PAGETABLE) +
global_page_state(NR_SLAB_UNRECLAIMABLE) +
global_page_state(NR_UNEVICTABLE) +
hugePages + reservedPages;
unsigned int anonPages =
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
global_page_state(NR_ANON_MAPPED);
#else
global_page_state(NR_ANON_PAGES);
#endif
--- WITH ---
unsigned int lockedPages = global_zone_page_state(NR_PAGETABLE) +
get_nr_slab_unreclaimable() +
get_nr_unevictable() +
hugePages + reservedPages;
unsigned int anonPages = get_nr_anon_mapped();
--- END REPLACE ---
③以下のコマンドを実行
cd ../..
tar cf vmmon.tar vmmon-only
rm -rf vmmon-only
④追加したパッチを適応するためにもう一度構築する
sudo vmware-modconfig --console --install-all
これで以上になります。
さあ起動しよう②
エラーでないようにググってそれを実行しただけ修正をしたので早速実行してみましょう!
なんで(ry
調べてみました
これを行うことは自己責任でお願いします。
ドライバをインストールするときにセキュアブートがONだと邪魔するみたいです。
なのでBIOSからセキュアブートをOFFにして上記のことをもう一回やりました。
参照はこちらから
さあ起動しよう③
これで動かなかったらもうVMwareやめます。
動きました!!!
日頃の行いが良かったからできました(心当たりなし)
最後に
なにか質問があったらTwitterまでお願いします。
仮想マシンの使い道とかは聞かないでください。
補足説明
*1、ここの説明ではrootディレクトリにおきましたが、以下の方法でも可能です
①実行権限を与える。
$ sudo chmod +x VMware-Player-14.0.0-6661328.x86_64.bundle
②インストーラを起動する
$ sudo ./VMware-Player-14.0.0-6661328.x86_64.bundle
これでインストールできます。
参照はこちらから
*2、これが正解かどうかはわかりませんが、少なくともセキュアブート関連が関係ない人は治ったみたいです。