クロの制作日記

Ubuntu16.04のインストールとネットワークの設定

はじめに

研究室に新しくPCが納品されるたびに、私がUbuntuのインストールやGPU周りの設定をしています。ただ、作業内容を忘れてしまったり、他のメンバーにノウハウを共有できなかったりと色々と不便なので、今回一連の内容をメモすることにしました。

ただし、この記事では、他のサイトのようにスクリーンショットを載せたり、重要ではない部分は省いたりしています。それは、めんどくさいからバグとか行き詰った箇所の対処法を重点的に載せたいと思ったからですのでご了承ください。

なので、不安な人は適宜、以下のサイトとかを確認しながら設定を進めてください。気分が向けば、スクリーンショットとかを載せたりします。
qiita.com

環境

つよつよPCすぎる

用意するもの

Ubuntuのインストールと初期設定

この章では、ディスクからUbuntuをPCにインストールする手順と初期設定の説明をします。

Try Ubuntu install

PC内蔵の光学ドライブ(または外付けの光学ドライブ)にディスクを挿入し、PCの電源をつけます。

するとPCメーカーのロゴが出たあとに、以下のような画面が表示されます。

f:id:kurora-shumpei:20200615152306p:plain
ubuntuのインストール時に出てくる選択肢

上から、

  • Try Ubuntu without installing
  • install ubuntu
  • Check disk for defects

となっていますが、今回は「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

言語とかの設定

あとは、言語とか、国はどこですかとか聞かれますが、適当にやってください。

パーティションの設定

パーティションは、以下のように設定しましょう。

SSD
  • Boot用「EFIシステムパーティション」に200MB(上記の不具合の解消で割り当て済み)
  • 残りの容量は「/」にマウントポイントを設定し、ext4フォーマットを割り当て
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」を入力します。

そして、新規追加を選択すると、ポート変換の設定が保存されます。

sshに接続

じゃあこれでssh接続の準備ができたので、実際にやってみましょう。

ssh -p [ポート番号] [ユーザー名]@[グローバルIPアドレス]

上手く行きましたか?私はエラーを吐かれました(怒怒怒)。上手く言った人たちのPCが壊れる呪いをかけたい。

ssh: connect to host 192.168.xx.xx port 22: Connection refused

調べた所、sshのデーモンが起動していなく、かつ認識もされていないよう。以下のサイトの通りにすれば治りました。
qiita.com

ユーザーとかグループの作成

新しくユーザーを作成したり、グループに所属させたりしたい場合は以下の記事を参考にしてください。
www.kuroshum.com

rootのパスワード設定

初期状態では、「su」コマンドを入力しても設定していないパスワードを聞かれてrootに入れません。なので、以下のサイトの手順に従ってrootのパスワードを設定しましょう。
qiita.com