自作PCからUbuntu22.04開発環境構築してみた
アップルをはじめとして、最近スペックがそこそこ良いPCがわけわからないくらい高くなり、誰でも使える個人用のコンピュータというPersnal Computerの趣旨と乖離しています。独断と偏見ですが、せっかく数十万円でPCを購入したのにもかかわらず、
- パーツ交換不可なので、数年後は電子ゴミになり、自然環境に優しくない
- 不要なソフトウェア・サービスが多い(たとえば、2022年なのに、バージョン管理非対応のクラウドサービスiCloudが大きなシェアを占めているっていう皮肉)
- なんとかStoreの通知がうるさい。利用するのにアカウント(個人情報)が必要
- プライバシー侵害問題
- ...
別にゲーマーではないですが、数十万払ったのに自由が奪われる感じがどうしても気に入らないので、自作PCからLinuxの開発環境を構築することにしました。
ハードウェア
秋葉原まで行く元気がなかったので、すべてのパーツはAmazonやメルカリから購入することにしました。また、PCパーツの価格変動が激しいのでkeepaのメール通知機能を活用すると簡単に低価格でお気に入りのパーツ狙えます。
最終的に以下のパーツを買いました。
Model | Price | |
---|---|---|
Motherboard | ASUS Intel B560M-A | ¥10,563 |
CPU | Intel Core i5 10400 | ¥18,943 |
GPU | ASUS GTX 1650-4G DUAL | ¥21,500 |
Power | 玄人志向 KRPW-BK 80PLUS Bronze 750W | ¥5,535 |
Memory | KLEVV DDR4 2666 PC4-21300 8GB*2 | ¥7,002 |
Storage | Crucial SSD 500GB MX500 | ¥5,980 |
CPU Cooler | CPUクーラー 虎徹 Mark II | ¥3,400 |
Case | SAMA JAX-03W (second hand) | ¥4,480 |
LAN cable | ¥945 | |
Total | ¥78,348 |
あくまで筆者の例ですが、他のパーツに替えても全然問題がありません。パーツ間の互換性と電源容量だけ気をつけてください
完成!!!
パーツをマザーボードに突っ込むだけの作業なので、そこまで難しくはないです。
ハードウェアの環境構築を完了したので、これからソフトウェアの環境構築に入ります。
OS: Ubuntu 22.04
なぜ22.04
最近の暗黙的なルールだと偶数年4月(22.04, 20.04.4, 18.04.6)以外のバージョンはLTSではないので、特別な理由がない限り使うのをおすすめしません。せっかくなので最新LTS 22.04 Jammy Jellyfishをインストールします。今度はArch Linux系も挑戦してみたいですね
余談ですが、今年1月まで使っていた21.04のサポートが切れたので、21.10にアップグレードしようとしたら、OS自体が崩壊しました()
Bootable USBを作成
- 公式から
Ubuntu 22.04 LTS
をダウンロードします。
- USBを他のPCに挿し込んで、デバイス名(例えば
/dev/sdd
)を確認します。
sudo fdisk -l
- ddコマンドを実行します。
sudo dd if={YOUR_ISO_NAME} of={YOUR_DEVICE_NAME} bs=1M status=progress
なお、bs=1M
というのは一度に読み書きするサイズを1MBにするという意味です。
- USBに組み立てたデスクトップPCに挿し込んで、ガイダンスにしたがって20分前後インストールが完了します。
筆者自身は余計なソフトウェア一切いらないので、Minimal Install
を選んでOSをインストールしました。
必要最小限の設定
開発環境を構築する前に、必要最小限なソフトウェアを入れておきましょう。
Wifiドライバー
デスクトップから自宅のルーターの距離が遠いので、USB無線LAN子機を購入しました。しかし、デフォルトのドライバーは想定通りにLinux非対応です。
GitHubでLinux Driver for USB WiFi Adapters
で検索してみたら、下記のLinux用ドライバーを見つけました。しかも最近もバリバリ開発されているようなので、早速入れることにしました。
README.md
にしたがって、スクリプトでインストールします。
sudo apt install -y dkms git build-essential
git clone https://github.com/morrownr/88x2bu-20210702.git
cd 88x2bu-20210702/
sudo ./install-driver.sh
入力ソース
Ubuntuはデフォルト英語入力しかはいっていないので、日本語と中国語の入力ソースを追加します。
日本語入力
Manage Installed Languages -> The language support is not installed completely” と表示さて -> Install
sudo apt install ibus-mozc
ibus restart
gsettings set org.gnome.desktop.input-sources sources "[('ibus', 'mozc-jp')]"
Mozc Setting -> Keymap style -> Customize
- パッティングを避けるために、「Ctrl Space」になっているコマンドを適当なものに変更
-「key」が「Hankaku/Zenkaku」になっているものを「Ctrl Space」に変更
中国語入力
Add an Input Source -> Chinese (Intelligent Pinyin)
メディア
sudo apt-get install ubuntu-restricted-extras
開発環境
- fish shell
- Visual Studio Code
- Docker
- GitHub
- Python
- pyenv
- pyenv-virtualenv
- Node
- nvm
fish shell
user-friendlyなシェルfishをインストールします。
sudo apt install fish
which fish`
chsh -s /usr/bin/fish
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
Visual Studio Code
.deb package
をダウンロードし、インストールする
sudo apt install ~/Downloads/code_1.68.1-1655263094_amd64.deb
GitHub
認証
2021年までにtokenを発行してローカルにダウンロードする必要がありましたが、認証用のCLI gh
のおかげで、AWSやGCPなどと同じくブラウザ経由で認証できるようになりました。
まずはgh
をインストールします。
gh auth login
を実行すると認証が完了するので、tokenをローカルに保存しなくても良いです。だいぶ便利になりましたね。
Docker
公式によると、リポジトリ、パッケージ、スクリプトの3種類のインストールする方法がありますが、スクリプトはOSバージョンやCPUアーキテクチャを自動的に識別してくれるので、便利です。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo docker run hello-world
UbuntuはDebian basedのLinuxなので、systemctl
やservice
コマンドを実行しなくても、dockerは自動的に立ち上がります。また、rootlessでも使いたい場合は追加の設定が必要です。
Python
pyenvはシンプルで複数のPythonバージョン切り替えやすいため、今回は採用しました。
pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
~/.config/fish/config.fish
に環境変数の設定を追加します。
set -Ux PYENV_ROOT $HOME/.pyenv
set -U fish_user_paths $PYENV_ROOT/bin $fish_user_paths
pyenvのビルド環境
sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
pyenv-virtualenv
インストール
git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
初期化
pyenv init - | source
pyenv virtualenv-init - | source
実際にPython 3.9.10を入れてみましょう
pyenv install 3.9.10
pyenv virtualenv 3.9.10 {YOUR_NAME}
pyenv local {YOUR_NAME}
Node
Pythonと同じく、そのままnode
をインストールしてしまうと、バージョンを特定したい場合やdependencyを管理するのがめんどくさくなるので、nvm
というnode
のバージョンマネージャーを導入します。
nvm
先ほど、fishのプラグインを管理ツールfisher
をインストールしたので、fisher install jorgebucaran/nvm.fish
で一発インストールできます。
fisher install jorgebucaran/nvm.fish
nvm ls-remote
nvm install 18.4.0
他のシェルを利用している場合は、公式のリポジトリにご参照ください。
Start Your Voyage
8万円未満でそこそこ良いGPU付きのPCを自作し、開発環境を構築しました。
以上
Discussion