新PCにUbuntuをインストールしてセットアップした手順

目次

5年選手の旧PCがずっとファンファン言うようになったため、思い切って新PCとしてミニPCのLenovo Think Centre M73 Tinyの再生品をアマゾンから購入しました。

CPUがCore-i5、メモリ8GB、ディスクSSD 256GBなのでデフォルトのwindows10でそのまま使っても良かったのですが、再生品のためかすでにwindowsのユーザ設定が行われていた状態でちょっと気持ち悪かったのでUbuntuをクリーンインストールすることにしました。

今までも何度かWindows PCにUbuntuをインストールしてきたのですが、そのたびに毎回同じことを同じページで調べているような気がしてきたので、これを期に手順をまとめて備忘録として残しておきます。
といってもほとんど偉大な先人たちが残してくれたウェブ上の情報をコピペしているだけなので、参考URL集みたいになってしまいました。


旧PCでUbuntuの起動ディスクを作成

起動ディスクと言っていますがUSBメモリでやりました。

旧PC (Windows10) にてまずはUSBメモリにUbuntuのインストールメディアを作成します。
今回は20.04LTSを選択しました。

参考URL:WindowsでUbuntuのインストールUSBメディアを作成する

詰まりポイントはなかったのですが、旧PCに自分で Rufus をインストールする手順は前にやってなかったような…? 自分の環境だと1時間ちょいくらいかかったので気長に待ちます。

新PCにUbuntuをインストール

新PCをネットに接続して 事前に先ほど作成したインストールUSBメディアを挿した後で新PCを起動します。
Ubuntuインストール時にネットから色々ダウンロードするので、有線で接続。後から分かったことですが、自分が購入したPCだとubuntuを入れた際に必要な設定をしないとwifiを認識しないことが分かったので、これはナイス判断自分、でした。

BIOSでいろいろやらなきゃ…と思っていたら何もせずともUbuntuの立ち上げ画面になりました。便利。
インストールするか、お試しでUSBメモリでUbuntuをブートするかを選べるので、今回はインストールを選択。
デュアルブートにする予定はないので、Windows10を削除してインストールを選択。
あとは画面上の指示(というか必要な選択はデフォルトでされていたので次へをクリックするだけ)に従えばインストールできました。

インストールが終了すると再起動を求められるので、言われるままに再起動。
起動時にUSBメディアを抜いた上でエンターを押せと言われるので、言われるままに実行。
これでUbuntuのインストールは終了しました。

Ubuntuインストール直後は色々アップデートを求められるので、言われるままにアップデート。
自分で端末を開いて、そこでも sudo apt update && apt upgrade -y で諸々パッケージ更新。
これでUbuntuの最低限のセットアップは終了、今日は遅いし後は明日からやるか…と思ったら問題が発生しました。

問題1: シャットダウンできない問題

なぜかPCをシャットダウンしても再起動されるという問題が発覚。
こちら のような対処をするも解決せず。

どうやらOSの問題ではなく、BIOSでWake on LANが設定されていた模様。BIOSはいじってないので、もともとそのような設定がされていたようです。( 参考 )

このPCはサーバで使われることが多いのでしょうか?

ということでBIOS画面を開こうとするも起動時にF12押したままにしたり画面上の指示に従ってエンター押したりするもなぜかBIOSへ入れず。
これは詰んだかと思ったのですが、 こちら の記事にあるように起動後に端末から sudo systemctl reboot --firmware-setup と打つと再起動時にBIOSに入れました。

BIOSで何をどうしたかはちょっと覚えていないのですが、電源オプション的なところから “Wake on LAN” を disable にするとかそのような操作をすると電源OFFできちんとシャットダウンできるようになりました。

この問題には初めて遭遇したのでテンパりました…

Ubuntuの必須ソフトのインストール

ブラウザはGoogle Chromeの方で色々設定して共有できるようにしてあるので、Chromeをインストールします。
また、自分はブログを書いたりプログラミングをしたりするので、それ用に必要になるソフトをインストールします。

  1. Ubuntu Softwareセンターで以下をインストール
    1. clamtk : ウイルス検知ソフト。apt でもインストールできるのですが、たまたま見つけたのでこちらで。
    2. GNU Image Manupilation Program : いわゆるGIMP。画像編集ソフト。ブログを書くときに簡単な画像編集を行うために。別に必須ではないのですが、このタイミングで一応入れておきました。
  2. ホーム以下のディレクトリ名を英語にする。
    1. 日本語でUbuntuをセットアップするとホーム以下のディレクトリ(ダウンロードやらデスクトップやら)が日本語になっています。別に日本語でも良いのですが、端末から移動する際にわざわざ日本語変換したくないので英語に直します。
    2. 参考:Ubuntuでホームディレクトリの中身を英語にする
    3. 下部の “never ask again” みたいなところにチェックを入れないと、Ubuntuを起動するたびに日本語に戻そうとされるのでチェックを入れます。
  3. Google Chromeのインストールとセットアップ
    1. FireFoxでchromeのダウンロード画面に行き、64bit ubuntu (debian)版をダウンロード。このとき、「実行」ではなく「保存」するようにする。(実行にすると「インストールできません」と言われる)
    2. Download ディレクトリにdebファイルがダウンロードされるので、 ~/Downloads へ行き、 sudo apt install -y ./<ダウンロードしたdebファイル> とします。これでGoogle chromeがインストールされます。
    3. あとはchromeを開いてアカウント認証をすればもとの環境が再現されます(chrome側で共有設定をしていれば)。素晴らしいですね。
  4. 開発に必要なパッケージのインストール
    1. apt で以下をインストールします。
      • build-essentials
      • git
      • curl
      • wget
      • vim
      • tmux
      • emacs : 自分はlisp (gauche scheme) で project euler の数学の問題を解くのがちょっとした趣味です。なので、emacsをlisp専用IDEとして使っています。エディタは後でも説明しますがvscode使いです。
  5. 設定ファイルをgitからclone
    1. 自分は.bashrcなどの設定ファイルをgitで管理しているので、それらをリポジトリからcloneします。
    2. cloneしたディレクトリ内の設定ファイルからシンボリックリンクを貼ります。 ln -s ~/dotfiles/.bashrc ~/.bashrc みたいな感じです。
  6. 諸々のリポジトリをclone
    1. 作業しているリポジトリをcloneしておきます。

問題2:Wifiに繋げない

自分が購入したマシンは無線LAN非対応なので、外付けのwifi受信機が必要になります。
もともと購入時についてきていたのですが、それをつけてもwifiに繋げない、というかwifi設定そのものが設定画面にないことに気づきました。

どうもUbuntuは無線LAN非対応機に無線LANのドライバは入れてくれないようで、後から設定する必要があるようです。
ここまで重いダウンロードが続くので有線に接続していたため、気づきもしない問題でした…
まあ別に有線でつなぎ続けても良いのですが、サブ機として持っていたChromebookをサブモニターとして使いたいと思っていたため、wifiの設定も行うことにしました。

こちらのページを参考に設定しました。 Linuxで使えるUSB Wifiの探索 (Ubuntu 20.04LTS)
無線LANのレシーバもこちらのページに記載されている “TP-Link T2U” を新たに購入して使用しましたが、もしかしたら付属のレシーバでもできたのかもしれません…

pyenvでpythonインストール

デフォルトのpython環境を汚したくなかったので pyenv でプログラミングをする際のpythonをインストールすることにしました。
最近は pipenv, poetry などpipで入れられるパッケージ管理システムやdockerを使うほうがイマドキ感がある気もしますが、今までpyenvを使っていたのでなんとなく惰性で…
とはいえUbuntu20.04特有の問題なのか、結構面倒くさかったです。

参考URL : Ubuntu 20.04 で pyenv を使用して Python を導入する

pyenvのインストールした後にパスを通して pyenv init するとどのようなコマンドを .bashrc などに書けばよいかを教えてくれます。
.profile

# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init --path)"
fi

.bashrc

# pyenv
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

を追記します。これでログアウト -> 再ログイン するとpyenvが使えるようになります。
自分はここで何度か

pyenv init no longer set path

みたいに怒られたのですが、再起動や再ログインしているうちに解消していました…謎です…

pythonは3.9.5をインストールしました。以下のようにインストールしました。

pyenv install 3.9.5 # 数10分くらい時間がかかります
pyenv global 3.9.5

私の記憶だと、ログイン時に実行されるのは .bash_profile だったはずなのですが、いつの間にか .profile なるファイルに置き換わっていたようです
…やばい…世界に置いていかれている…

Visual Studio Codeのインストールとセットアップ

エディタは基本VSCodeを使っているのでインストールします。基本はGoogle Chromeと同じです。

  1. ダウンロードサイト からマシンにあった deb パッケージをインストール
  2. ~/Downloads へ移動し、 sudo apt install -y ./<ダウンロードしたdebファイル>
  3. 必要な拡張機能をインストール
    1. VSCodeを開いて以下の拡張機能をインストール。(他にも必要なものがあった気がするのですが、とりあえず思いついたものだけ)
      • Vim
      • Python
      • Remove-development (Remote-WSLは多分必要ありませんでした…)
      • Git History
      • GitLens
    2. GitLens はGithubの認証を必要とするので、出てくるアラートに従って認証。もしかしたら拡張機能をインストールした後VSCodeを再起動しないと認証が要求されないかもしれません。

場合によっては 日本語設定 や、キーボードの設定 をしたほうが良いかもしれません。

Node.js, npmのインストール

Javascript実行環境もそうですが、PythonのJupyteLabの拡張機能を入れるためにもNode.js, npmの最新版(安定版)をインストールします。
例の如く apt でインストールされるのは古いバージョンなので、一度 apt でインストールした後に最新版にアップデートします。

参考URL : Ubuntuに最新のNode.jsを難なくインストールする

Hugoのインストール

このブログはHugoでサイトを生成しています。
なのでHugoがないとこのブログも書けない!!
のでHugoをインストールします。

linux版のHomebrew でインストールするのが一番楽そうなのですが、そこまできちっと管理する必要も無かろうということでリリースされたdebファイルからインストールします。
基本はGoogle chromeやVSCodeと同じです。

  1. debファイルをダウンロード
    1. Hugoの ダウンロードサイト から自分のマシンにあったファイルをダウンロードする。今は64bit ubuntuなので、 hugo_extended_0.83.1_Linux-64bit.deb をダウンロード。(extended はSASS/SCSSコンパイルが可能です。おそらく自作のテンプレートを作成する際に必要になるかと。この機能が必要ない場合は extended でなくとも良いです。)
    2. ダウンロードディレクトリで `sudo apt install -y ./<ダウンロードしたdebファイル>
  2. hugo versions などでインストールできたかテスト

ここまでで自分にとって必須の設定はほぼ終了しました。後は趣味の範囲なのでのんびりとやっていきます。

spacemacsのインストールと設定

前述の通り時々shcemeを書くのですが、今の所VSCodeよりemacsのほうがlisp系は快適に書ける&実行できると感じています(emacs自体、emacs lispで動いてますしね)。

問題は基本私はVim使いということです。
なので、 Emacs + Vimである spacemacs をlispのIDEとしてセットアップします。

参考URL

gauche schemeのインストールとspacemacsの設定

schemeの処理系は色々あるのですが、作者が日本人の方で日本語のドキュメントが充実している gauche scheme を使っています。
また、spacemacsにgauche用の設定をします。gauche-mode もあるのですが、とりあえずデフォルトのschemeモードを使っています。

参考URL

注意するのは、今回は spacemacs を使っているので、設定は ~/.spacemacsuser-init() 関数内に記述します。

今後やりたいこと

  • Docker関係のセットアップ
  • Android Studio関係のセットアップ
  • kite の導入
    • AIベースのすごい賢い補完をしてくれるそうです。VSCode版があるそうなので、いずれ試してみたいです。