サブ開発環境を Ubuntu 18.04 で準備する

手元で使っている業務PC は、2013年に自作(他作でもあるけど)したもので、その記録が 最強.NET開発PCを作るよ(その1) | Moonmile Solutions Blog にある。かれこれ、5年になるけど、メモリ 64GB を積んだ .NET 開発マシンというのは伊達ではなくて、今でも十分可動している。途中で、2回ほど SSD が逝ったのは熱が籠ってしまったのか、Windows 10 にしてハードに使い過ぎたのかは分からないが、SSD を交換して(つまりは OS を再インストールして)現役状態である。

現時点では、主な稼働状況としては、

  • Windows 10 Pro
  • Visual Studio 2017 が3,4枚稼働
  • Word/Excel が3,4枚稼働
  • VMWare が 2つほど常時稼働
  • Amazon Video か VLC が常に動いている

状態で、なんというか、夏は熱暴走が気になるところで常にCPUは50度位。CPU 稼働はこんな感じで、面白いのは OS が乗っている C ドライブはほとんど稼働していない状態(おそらくキャッシュに乗っているのだと思う)という感じです。

image

Windows Update による再起動が困る

確か、Windows 8 の頃にはあまりなかったのですが、Windows 10 では PC がスリープした状態でも夜中に勝手に起動して勝手に Windows Update をして、勝手にシャットダウンしていうことが多々あります。たまに、朝まで電源が付いているときもあるのですが、最近は月一は PC 落ちている状態が多いですよね。

これ何が困るって、作業を途中にしてスリープしているのに、PC を再起動するものだから途中のアプリが勝手に落とされるんですよ。Excel や Word が途中で落ちて、自動修復状態になってしまったり、Visual Studio で大き目のものを開いているのにまた開き直さないといけない訳です。最近では、更に妙なことになって、再起動時に Visual Studio が 10個位勝手に起動したりします(たぶん、以前に画面を復活させようとして、デバッグ中に死んだ Visual Studio も立ち上げてようとしているのが原因)。

一番困るのは、VMWare へのシャットダウンが十分ではなくて、VMWare で仮想環境を立ち上げたままスリープをすると、Windows Update の再起動のおかげで、VMWare が強制終了されてしまうんですよ。これで、何回か VMWare 上の Linux マシンや Windows が修復起動になったりしてます。まあ、まめに仮想環境自体もスリープさせればよいのですが、そのあたりも手間だし忘れるし。

そんな訳で、仮想環境の VMWare 分を何処かに引っ越せないか?と考えていました。

じゃあ、Ubuntu + VMWare の組み合わせを考えよう

正攻法ならば、Windows サーバー機を用意するのがいいんですが、自宅が仕事場所でもあるし、サーバー機のファンがうるさいのも困るところなので、通常の静音型 PC を使いたい。

どうせなので、ベースは Ubuntu にして ROS とか React-Native あたりも試してたい。Android のビルドを VMWare 上でやると遅くて大変なので、実機 PC でやりたい。ということで、Ubuntu を入れる前提で PC の追加購入を考えました。

image

スペックとしては、

  • メモリ 32GB
  • SSD 512GB + HDD 1TB
  • CPU Intel i7-7700
  • グラボは無し
  • OS無し、Office無し
  • 静音ファンで少しだけプラス

ドスパラの Magnate GE(マグネイト GE)ミニタワーパソコン(PC) 7768|パソコン通販のドスパラ【公式】 をベースにして税込みで13万円也です。

ゲームや映像に使う訳ではないので、グラフィックボードはオンボードのみを使う。メモリは 64GB にしたいところだけど、結構な値段がプラスになってしまうので 32GB にしておく。これは、常時 VMWare を動かす予定なので、16GB だとちょっと足りない(仮想で、4GB x3 位動くので、ホスト OS が圧迫されてしまう)。

Ubuntu + VMware の時は UEFI を切る

Ubuntu 18.04 LTS の DVD を使ってインストールした訳ですが、結構すんなり入ります。ブラウザを使ったり、メールや Slack などを使うだけならば Windows じゃなくてもいい感じですね。Mac の場合、どうしてもスペックが制限されてしまうので、メモリを摘んだりして標準以上にしようとすると Windows PC の選択にならざえるを得ないのですが、初心者であっても Linux 機を使える感じにはなっているようです。

ただし、ハマりどころもあります。

image

Windows で VMWare や VirtualBox で仮想環境を作るときはすんなりといくのですが、Ubuntu でハマりました。何故か、VMWare Player をインストールしたあとに、起動しようとすると、/dev/vmmon が無いと云って起動できません。何度か、Ubuntu 自体をインストールし直して Virtualbox を入れたりしたのですが、こちらも起動できません。

要は、マシンが UEFI が有効になっていて、インストールする OS ( Ubuntu 18.04
LTS ) の署名とのずれがある(そもそも署名がない?)らしいのです。そういえば確かに、2,3年前に「もともと Windows が入っていたノート PC に Ubuntu を入れようとした入れられない問題」ってのがあって、それのことです。VMWare や Virtualbox が入れようとしているドライバーに署名が UEFI BIOS の署名と異なっているので駄目ってことですね…たぶん。

ネットを見るとあれこれ解決方法があるみたいなのですが、手っ取り早いのは BIOS の画面を開いて UTFI を使わないで起動することです。この画面ではデフォルトで「Windows UEFI mode」になっているので、「Other OS」に切り替えてしまいます。UEFI その1 – UEFIとセキュアブートについて・UEFI環境でOSを起動するOSローダー・UEFI対応PCとBIOS対応PC – kledgeb を参照してください。

そうすると、無事 VMWare Player が起動できるようになって、ゲスト OS に Windows 7 を使ったりできます。この画面は、もともと業務 PC のか仮想環境を Ubuntu のほうに引っ越して起動させています。

image

この仮想化された Windows 7 へは、業務 PC(Windows 10)からリモートデスクトップができるので、今までと同じように開発ができます。ネットワークを通す分だけちょっと遅くなるけど、Azure などで仮想環境を作るよりも操作は素早くなります。ファイル転送も楽ですからね。

VNC で接続する

Ubuntu + VMWare は基本モニタを使わずに作業をする予定です。業務 PC からリモートデスクトップで仮想環境にある Windows 7 に繋ぎに行くか、Ubuntu へ VNC で接続するかというところです。

Windows 10 から繋げられるように Screen Sharing の設定をしておきます。

image

クライアントは、VNC Viewer や TightVNC を使います。

React Native の環境を作る

さて、Ubuntu を使うもうひとつの目的である React Native の環境を作ります。React,Angular,Vue.js,React Nativeを使って学ぶ はじめてのフロントエンド開発 の第9章だけ見て分かったような気になっても仕方がないので、手を動かします。

ただ、素の環境から作るのは結構手間がかかるみたいですね。これも落とし穴が結構あります。

  • Java SDK のインストール
  • Android IDEのインストール
  • nodejs のインストール
  • react native のプロジェクトを作る
  • アプリを実機で動かす

基本は Getting Started · React Native にある手順に沿って行きます。nodejs は Installing Node.js via package manager | Node.js にあるらしい。

あれこれやって、エミュレータと実機 Android で動かすところまでできました。

$ react-native init aproj

aproj というプロジェクトを作る。

$ adb devices
$ adb reverse tcp:8081 tcp:8081

実機 Android で動かす場合は、adb reverse で 8081 を設定する。

$ react-native run-android

デバッグ実行する。

という手順です。このあたりは再び仮想環境で試してみる予定。

↓は参照先

ReactNative for Androidで実機をデバッグに使うには | Theoretical Cat https://www.yslibrary.net/2015/09/17/reactnative-for-android-debugging-on-real-device/

画面では、こんな感じでやると、実機 Android で React Native が動作します。

image

react native で実機を振ると menu が出るってことになっているんだけど、うちだと出ないですよね。なので画面の更新ができない(苦笑)。エミュレータのほうは R キーが効くので、実機の振動 API の問題ですかね?

“R” キーを2回送ればいいので、adb shell input  を使えばコマンドラインから更新ができます。

$ adb shell input keyevent KEYCODE_R KEYCODE_R

あとは、ラズパイの Android Things に接続するとか、ファイル共有のための samba の設定とかがあるので、それはまた今度。HDD 1TB を何処かにマウントしないといけないので。

カテゴリー: 雑談 パーマリンク