Emacs25 on Ubuntu18 on Hyper-V on Windows 10 (MEMO-3 Ubuntu18.04LTSのインストールと環境設定)

Ubuntu18.04LTSのインストールと環境設定

インストール開始

OSをインストールするためには、今作ったばかりの仮想マシンを起動します。(ブート順で指定した通り、DVDのブートイメージが実行されます)

Hyper-Vマネージャーの画面で仮想マシンを選択状態にし、右クリックメニュー(又はメニューバーの「操作」メニュー(もしくは右側の「操作」ペイン))の「接続」を選択して仮想マシンと接続するための画面を表示し、そこに出ている「起動」ボタンをクリックします。(下記画面例は右クリックメニュー)

私の使ったUbuntuのISOイメージ(Ubuntu 18.04 LTS 日本語Remix)は、放っておくとUbuntuをインストールするためのUbuntuが(仮想DVDドライブから)立ち上がりました。この画面で左上に見えている「Ubuntu 18.04 LTSのインストール」のアイコンをクリックすることで、インストーラが起動します。

補足:起動してすぐに現れるGRUBのメニューから「Install」 を指定することもできますが、何もしないで画面を読んでいるとすぐに先に進んでしまうので少々反射神経が必要です。

ちょっとしたご注意

インストール自体は特にどうということもなく画面の指示に従って進めればそのうち終わりますが、このインストーラー、こういうのは珍しいと思うんですけど、しばらく(10分くらいかな?)キーボードに触らないでいると待機画面になってしまうんですね。しかも、普通この手の画面はマウスを動かしたりシフトキーでもなんでも押せば復帰するものですが、この画面は(私が試した限りでは)ESCキー以外には反応しないんです。これに気が付かないと、知らないうちにインストールが失敗してマシンが応答しなくなったように見えます。ちょっとしたことですが、心に留めておくと慌てなくて済みます。

updateとupgrade

インストールが終わったらUbuntuにログインします。まずはISOイメージ作成以降の更新を反映しておきましょう。GUIの設定画面でも出来ますが、端末を開いて下記のパッケージ管理コマンドを実行するのが簡単でしょう。

sudo apt update
sudo apt upgrade

更に、ソフトウェアの自動アップデートの設定を確認しておきます。画面左下の「アプリケーションを表示する」(画面左側のDockの一番下の四角いアイコン、下記の画面例では(これは表示後のイメージですが)小さな黄緑の丸のところ)をクリックして表示された画面から「ソフトウェアとアップデート」(下記画面例では大きな黄緑の丸で囲んであるアイコン)をクリックします。

「ソフトウェアとアップデート」画面には幾つかのタブ画面がありますが、全部見ておいた方がよいと思います。

アップデートのスケジュールなどは「アップデート」タブ画面にて確認・変更できます。

画面解像度の変更

ここまではデフォルトの画面解像度でやっているので、たぶん、Hyper-VのUbuntuの仮想マシンの画面サイズはディスプレイのサイズとは合ってないだろうと思います。ここは当然合わせたいところですが、Hyper-V上でUbuntuを動かしている場合、画面サイズを変更することは出来るのですが、Hyper-Vと連携して自由自在、とはいかないようです。

Hyper-V上で動かしている場合、Ubuntuの画面サイズは

/etc/default/grub

ファイルを一行だけ編集して、更におまじないを唱えることで変更できます。具体的には下記の行、先頭から10行目くらいにあると思いますが、この行の後ろに解像度を示す文字列を追加します。(編集はnanoとかviとかの軽量エディタをスーパーバイザとして使えばよいでしょう)

 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash video=hyperv_fb:横x縦”

 「横x縦」に希望するピクセル数を記述します。私のところのノートPCでは1366×768にしました。編集後、ファイルに書き込んだらターミナルで、

sudo update-grub

しておきます。このおまじないを唱えることでブートセクタにあるGRUB本体の情報が書き換えられて、起動時の画面解像度に反映する仕掛けです。再起動すれば新しい解像度でUbuntuが立ち上がります。(なにやら大げさですが、要するにこのやり方でしか変更できないってことですね)

内部ネットワークのUbuntu側IPアドレスの設定

内部通信用に作った仮想ネットワークのNICはデフォルトではDHCPでアドレス等が自動割り当てされていますが、これだとファイル共有時の指定には使いにくいので、固定IPアドレスを割り当てます。

例によって画面左下のアイコンからソフトウェアの一覧を表示させ、「設定」をクリックします。

「設定」の画面から「ネットワーク」を表示し、更に eth1の設定画面を開きます。

「IPv4」タブ画面にて「IPv4メソッド」を「手動」にし、適当なアドレスを設定します。下記例ではローカルアドレスとして192.168.17.2、ネットマスクは24bitを指定しています。

このネットワークはWindows側との内部通信専用なのでデフォルトゲートウェイやDNSなどは空欄で構いません。

内部ネットワークのWindows側のIPアドレスの設定

Hyper-V上のUbuntuと通信するためのWindows側のIPアドレスを設定します。下記の(Windowsの画面での)設定対象は「vEthernet(仮想スイッチ(内部))」になっていますが、仮想スイッチの名前は作成したものに読み替えてください。ここではIPv4プロトコルのプロパティ画面で192.168.17.1にしています。

Windows - Ubuntu間のファイル共有の手順

共有させたいフォルダは人それぞれだと思うので、ここでは例としてWindows側の C:\home フォルダを共有させるための手順を記載しておきます。フォルダの共有は、Windows側のフォルダをUbuntu側でネットワーク越しにマウントすることで行います。必要な準備及び手順は下記のとおりです。

  1. Windows側で C:\home フォルダを共有フォルダとして公開します。公開対象のユーザーやアクセス権は必要に応じて適当に制限してください。ここではユーザ名=attocraft、アクセス権は全て許可されているものとして進めます。
  2. Ubuntu側の /mntフォルダの下にマウントポイントとなる空のフォルダを作ります。ここでは /mnt/win/home というフォルダを作成します。
    sudo mkdir /mnt/win
    sudo mkdir /mnt/win/home
  3. Windows側のファイルシステムを認識できるようにするために、cifs-utilsパッケージをインストールします。
    sudo apt install cifs-utils
  4. あとは作成したマウントポイントに cifsタイプのファイルシステムとして //192.168.17.1/home フォルダをマウントしてやればよいのですが、それだけだとrootの読み書き権限でマウントされてしまいます。これでは不便なので、下記のようにしてログイン中のアカウントのgidとuidでマウントするようにします。
    sudo  mount -t cifs -o username=attocraft,gid=$(id -g),uid-$(id -u) //192.168.17.1/home /mnt/win/home

    -o オプションでパスワードを指定していないので、sudoのパスワードに引き続いてmountコマンドはWindows側のユーザ(この例ではattocraft)のパスワードを聞いてきます。
    $(id -g) は id -g コマンドの実行結果つまり実行者のグループID、$(id -u) は id -u コマンドの実行結果つまりユーザーIDに置換されます。(注:このコマンドをシェルファイルに記述した場合、シェルファイル自体をsudoで実行するとrootで実行されてしまい、せっかくの仕掛けが無駄になってしまうのでご注意ください)

Ubuntuを起動するたびに上のようなコマンドラインを打つのはいかにも面倒ですが、自動マウントさせるべく /etc/fstab に追加する時はパスワードの取り扱いに注意が必要です。私はfstabには書かないで、シェルファイルを作って必要になったときに実行しています。Hyper-Vで動かしている場合ゲストOSはいつでも一時停止にしておけますので、これでもさほど不便ということはありません。(安全にfstabを使いたい人は “/etc/fstab credentials” でWEB検索するといいことがあるかもしれません)

(To Be Continued)

コメントを残す