はじめに
研究室に新しくPCが納品されるたびに、私がUbuntuのインストールやGPU周りの設定をしています。ただ、作業内容を忘れてしまったり、他のメンバーにノウハウを共有できなかったりと色々と不便なので、今回一連の内容をメモすることにしました。
ただし、この記事では、他のサイトのようにスクリーンショットを載せたり、重要ではない部分は省いたりしています。それは、めんどくさいからバグとか行き詰った箇所の対処法を重点的に載せたいと思ったからですのでご了承ください。
なので、不安な人は適宜、以下のサイトとかを確認しながら設定を進めてください。気分が向けば、スクリーンショットとかを載せたりします。
qiita.com
環境
- OS : ubuntu16.04LTS
- マザーボード : ASRock Z390 Phantom Gaming 4
- GPU : Geforce RTX 2080ti
- CPU : Intel core i9-9900KF
- メモリ:64GB
つよつよPCすぎる
Ubuntuのインストールと初期設定
この章では、ディスクからUbuntuをPCにインストールする手順と初期設定の説明をします。
Try Ubuntu install
PC内蔵の光学ドライブ(または外付けの光学ドライブ)にディスクを挿入し、PCの電源をつけます。
するとPCメーカーのロゴが出たあとに、以下のような画面が表示されます。
上から、
となっていますが、今回は「Try ubuntu without install」を設定してください。
ちなみに、「install ubntu」はその名の通りubuntuのインストールが始まりますが、今回は面倒な不具合に遭遇したので使用しません。「Check disk for defects」はインストールに使用するディスクが問題無いかを調べたい時に使用します。
「Try Ubuntu without install」を選択すると、Ubuntuのデスクトップ画面が表示され、「Install Ubuntu 16.04.3LTS」とかいうアイコンがデスクトップに置かれていると思います。
このアイコンをクリックするとインストールの設定をすることができるのですが、上で言ったように、パーティションを設定しようとしたら不具合に遭遇します。
よくわからん不具合の解消
「install Ubuntu」を実行し、パーティションを設定してからインストールしようとすると、以下のようなエラーを吐きやがります。
あなたのコンピータのファームウェアは、UEFIモードでインストーラを開始しましたが、あなたのコンピュータには”BIOS 互換性モード”を利用するオペレーティングシステムがすでにインストールされているようです。
このままUEFIモードでDebianのインストールを続けると、BIOSモードのオペレーティングシステムを後になって再起動することが難しくなります。UEFIモードでインストールすることを望んでおり、既存のシステムを起動できなくなってもかまわなければ、ここで「はい」を選びます。
BIOS互換モードを利用する既存のオペレーティングシステムを起動できる状態を保持したいなら、UEFIインストールをしないよう、ここで「いいえ」を選ぶべきです。
これを回避するためには、以下のサイトで説明されている手順を実行してください。
サイトを開く前の注意事項
このサイトで紹介している不具合の解消の方法は、インストールする前にbootのパーティションを作成するというものです(多分)。なので、サイトではHDDにbootを作成していますが、HDDとSSDが2つあるPCの場合は、SSDにbootを作成するように読み替えてください。
kledgeb.blogspot.com
言語とかの設定
あとは、言語とか、国はどこですかとか聞かれますが、適当にやってください。
パーティションの設定
パーティションは、以下のように設定しましょう。
HHD
- SWAP用にメモリの容量+2GB
- 残りの容量は「/home」にマウントポイントを設定し、ext4フォーマットを割り当て
パーティションの割り当て方法は以下のサイトを参考にしてください。
eng-entrance.com
インストール完了
いくつかの手順を端折りました,気をつけないといけない所は記述したと思います。インストールが完了したら、再起動するか聞かれます。
そこで、まだディスクがPCに接続されている状態なら、「Files」から接続を解除してから再起動するようにしてください。接続を解除せずに再起動すると、「please remove the installation medium then press enter 」の画面のままフリーズするのできをつけてください。
もし、上記のようにフリーズしたら、電源ボタンから直接電源を切って起動しなおしてみましょう。運が良ければインストール成功し、ubuntuが起動します。(私は大丈夫でした)
ネットワークの設定
私の環境では、有線LANを用いています。また、ssh接続とかをする必要があるので、IPアドレスは固定にし、ポート変換とかを行う必要があります。
なので、有線LANの場合での、諸々のネットワーク設定の手順を説明していきます。
有線LANが認識されない
通常は、PCに有線LANを接続すると右上に上下の矢印のアイコンが表示されます。これが、ネットワークに接続しているよという証なのですが、私の環境では表示されていませんでした(怒)。
何かー、前にもー、同じようなことが起きていた気がして、勘弁してくれよと思いながら解決方法をググりました。
セキュアブートが悪い
セキュアブートが有効になっているせいで、何かネットワーク設定のドライバが読み込めない、みたいなことがあるっぽいので、BIOSの設定からセキュアブートを無効にしましょう。
BIOSの起動はPCのマザーボードによってまちまちですが、私の環境(多分Asrock)の場合はPC起動時にF2を連打すればいけました。
以下のサイトを参考にセキュアブートを無効にしてください。
freesoft.tvbok.com
これで再起動してネットワークが使えたら我々の勝利です。
ドライバをインストールしないとダメ(怒)
かったるいことに、セキュアブートを無効にしても、ネットワークが接続出来なかった場合はIntelからドライバをインストールしましょう。
以下のサイトから3.6.0のバージョンのドライバをダウンロードしてください。私の環境では3.6.0で動きました。
恐らくこのドライバが必要なPCはネットワークに接続できないと思うので、別のPCでダウンロードしてからUSBなどを使用して持ってくる必要があります。
downloadcenter.intel.com
ダウンロードできたら、適当なディレクトリで、
tar zxvf e1000e-3.6.0.tar.gz
でファイルを解凍し、
cd e1000e-3.6.0/src/
srcディレクトリまで移動しましょう。
ここで、また面倒なことに、nvm.cというファイルを書き換える必要があります。
blog.spiralray.net
これを...
nvm.c
s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw) { s32 ret_val; u16 checksum = 0; u16 i, nvm_data; for (i = 0; i < (NVM_CHECKSUM_REG + 1); i++) { ret_val = e1000_read_nvm(hw, i, 1, &nvm_data); if (ret_val) { e_dbg("NVM Read Error\n"); return ret_val; } checksum += nvm_data; } if (checksum != (u16)NVM_SUM) { e_dbg("NVM Checksum Invalid\n"); return -E1000_ERR_NVM; } return 0; }
こう!!!
nvm.c
s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw) { /* s32 ret_val; u16 checksum = 0; u16 i, nvm_data; for (i = 0; i < (NVM_CHECKSUM_REG + 1); i++) { ret_val = e1000_read_nvm(hw, i, 1, &nvm_data); if (ret_val) { e_dbg("NVM Read Error\n"); return ret_val; } checksum += nvm_data; } if (checksum != (u16)NVM_SUM) { e_dbg("NVM Checksum Invalid\n"); return -E1000_ERR_NVM; } */ return 0; }
要するに、この関数はどんな場合でも0を返すようにしましょうってことですね。
んで、srcディレクトリ内でmakeとビルドを行い、
make
sudo make install
ドライバを読み込みます。右上に矢印のアイコンが表示されれば成功です!
sudo modprobe e1000e
新しく設定したドライバを毎回読み込むように設定します。
sudo update-initramfs -u
固定IPアドレスの設定
以下のサイトの通りやれば大丈夫だと思います。CLIからもできますが、GUIが使えるならGUIでやったほうが楽です。
tomosoft.jp
ポートの設定
外部からSSH接続する際には、ポート変換を行い、先ほど固定したIPアドレスにSSH接続できるようにする必要があります。
まずは、ブラウザのURLを入力する所に、「192.168.11.1」と入力してenterを押します。
すると、ルーターの設定にアクセスする画面が表示されますので、ユーザー名とパスワードを入力し、設定画面に入ります。
そこからは、詳細設定 -> セキュリティ -> ポート変換と選択します。
すると、ポート変換の新規追加という画面が表示されるので、グループを追加する場合は追加し(私は以前にSSHというグループを作成したのでそれを選択)、任意のTCP/UDPポート蘭に任意のポート番号を入力し、LAN側ポートには「22」を入力します。
そして、新規追加を選択すると、ポート変換の設定が保存されます。
ユーザーとかグループの作成
新しくユーザーを作成したり、グループに所属させたりしたい場合は以下の記事を参考にしてください。
www.kuroshum.com
rootのパスワード設定
初期状態では、「su」コマンドを入力しても設定していないパスワードを聞かれてrootに入れません。なので、以下のサイトの手順に従ってrootのパスワードを設定しましょう。
qiita.com
最後に
取り敢えず、Ubuntuのインストールとネットワーク周りの設定を終えました。今日だけで、GPU周りの設定も行う予定でしたが、上記のようなエラー群のせいでまた別の日にやる羽目になりました(怒)。
また、後日、Tensorflowとかを動かすためのGPUの設定の記事を書きますので、その記事でお会いしましょう。
参考したサイト
Ubuntu 16.04 LTSのセットアップ - Qiita
Ubuntu 18.04 LTSインストールガイド【スクリーンショットつき解説】 | LFI
ubunt16.04のインストール(DELL precision tower, GALLERIA ZZ + GTX1080ti) - 八谷大岳の覚え書きブログ
Ubuntu 16.04 インストール(UEFI) その1 - UEFIのPCにUbuntu 16.04をインストールする(ライブメディアから起動 〜 インストールの種類の選択) - kledgeb
{UbuntuでNICを認識しない場合の対処法 - Qiita]
Ubuntu 16.04 その43 - UEFIでパーティションが一つもないHDDにUbuntuをインストールしようとすると、インストーラーがフリーズする不具合 - kledgeb