はじめに
長らく使っていた(放置していた)Ubuntu 18.04 のEOSLを過ぎてしまい、新しくパッケージを入れようにもトラブルに見舞われることが多くなったため22.04へアップグレードしました。その時のメモを未来の私に向けて残します
この記事の操作を一通り実行すれば、サーバや開発環境の基礎を構築できる内容にまとめています。また、この手順でうまくいかなかったときのヒントになることを期待して、私のおま環
ではうまくいかなかった方法を記載しています。このメモが皆さんのお役に立てれば幸いです
システム要求
OSのアップデートがサーバアプリケーションや開発環境に影響しないようなシステムを目指します。
- OSにインストールするソフトウェアは最小限にする
- サーバアプリケーションと必要なパッケージは、Dockerイメージにセットアップしコンテナとして動作させる
- 開発環境は、Dockerイメージにセットアップしコンテナとして動作させる
- プロキシを経由してインターネットに接続する
OS
Try1 - 18.04 > 20.04 > 22.04 (失敗)
18.04 から 22.04 へアップグレードするには、20.04 を経由する必要があり、まずは 20.04へアップグレードします。
sudo apt update -y
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y
sudo apt clean -y
sudo do-release-upgrade
# 下記 do-release-upgrade.log 参照
updateでパッケージサーバ見つからない、証明書の有効期限が切れているなどエラーが出る場合 /etc/apt/sources.list
のリポジトリ・証明書の有効期限が切れているものを外し、代わりに http://jp.archive.ubuntu.com/ubuntu bionic InRelease
を追加します
update と upgrade、autoremoveで更新が生じない状態にしても以下のメッセージが出てうまくいかず
Please install all available updates for your release before upgrading.
参考にした外部サイト:
Try2 - Ubuntu 22.04クリーンインストール (成功)
メディア作成
Ubuntu のHPからUbuntu 22.04のイメージファイルをダウンロードします。
セットアップした当時23.10が既にリリースされていましたが、技術資料も最新版よりLTSの方が見つけやすく、また、不要なトラブルを避けるため安定板のLTSを使用します。
USBメモリや外付けSSDをインストールメディアにセットアップします。DVDやBlu-ray Discでも問題ないですが、DVDは多層型でなければ容量が不足します。
セットアップは、balenaEtcher を使用します。balenaEtcherは、マルチプラットフォームに対応しています。DVDやBlu-ray Discは、OSが提供する書き込み機能を使用します。以降外付けSSDを使用する方法を記載します。
以下のサイトからOSとアーキテクチャに合ったインストーラをダウンロードします。
セットアップするメディアをPCに接続します。
balenaEtcherを起動し、
balenaEtcher の Flash from file
> ダウンロードしたimgファイルを選択 > Select target
> インストールメディにするストレージを選択 > Flash
> Flash Complete!
となれば閉じる
インストール (2025/1/22 追記)
- インストールを終えるまで、BIOS の
Secure Boot
とFast Boot
をDisabled
に変更します (メニュー名とメニューの有無は、メーカによって異なります) -
Installation Type
では、システムディスクのバックアップを取りクリーンインストールを選択する、もしくは、マルチブートを選択します
#この記事ではクリーンインストールを選択します
#クリーンインストールを推奨します - 社外持ち出しするようなPC等ファイルシステムを暗号化する場合、クリーンインストールになります (後から暗号化する方法もありますが、試したことがありません)
インストールするPCにインストールメディを接続し、Bootメニューからインストールメディアを選択します (ブートメニューが無い場合は、BIOS でブートする順番を入れ替えます)
Try or Install Ubuntu
> 言語一覧から English
を選択 > Install Ubuntu
> キーボードレイアウト一覧から Japanese(左のリスト)
の Japanese(右のリスト)
を選択 > Continue
> Minimal installation
のみを選択 > Erase disk and install Ubuntu
- ファイルシステムを暗号化する場合、
Installation Type
のAdvanced features
>Erase disk and use ZFS
とEncrypt the new Ubuntu installation for security
を選択します
Install Now
> Time zone
で日本近辺を選択し Tokyo
に変更 > Continue
> Create User Account
の各項目を入力 > Continue
> インストール完了後 Restart Now
> インストールメディを取り除く
- ファイルシステムを暗号化する場合、
Install Now
の後に、Choose a security key:
にパスフレーズを入力 >Enable recovery key
を選択 >Install Now
を操作します
-
Updates and other software
のDownload updates while installing Ubuntu
は、プロキシ設定がなく失敗するため選択しません -
Updates and other software
のInstall third-party software for graphics and Wi-Fi hardware and additional media formats
は、NVIDIAドライバーが適切な組み合わせでインストールされず、どのみち再インストールが必要になるため選択しません
#これを外すとKernelブート中のエラーが減りました
お使いのPC (特にラップトップパソコン) によっては、 Restart Now
で再起動した後、ロゴ表示のところでフリーズしブートに失敗する場合があります。この場合、以下を操作しOSをブートさせます。2回目以降は何もせずとも起動しました。
再度電源を入れ直し > Shift
キーを連打し GRUB
メニューを表示 > Advanced options for Ubuntu ***
を選択 > Ubuntu *** (recovery mode)
を選択 > resume
を選択
参考になる外部サイト:
メディア初期化
インストールメディアをストレージに戻します。
Windows PCにインストールメディアを接続し、Windows PCのコマンドプロンプトを管理者権限で起動します。
diskpart
REM 下記 diskpart.log 参照
DISKPARTのプロンプトで以下のコマンドを実行します。
-
select disk
の1
はインストールメディアを間違えずに指定します(番号は環境によって変わるので注意)
-
assing letter
のE
は適宜変更します -
format fs
のexfat
は適宜変更します
Microsoft DiskPart バージョン 10.0.19041.3636
Copyright (C) Microsoft Corporation.
コンピューター: PC-HOGE
DISKPART> list
Microsoft DiskPart バージョン 10.0.19041.3636
DISK - ディスクの一覧を表示します。例: LIST DISK
PARTITION - 選択したディスクのパーティションの一覧を表示します。
例: LIST PARTITION
VOLUME - ボリュームの一覧を表示します。例: LIST VOLUME
VDISK - 仮想ディスクの一覧を表示します。
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン 476 GB 0 B *
ディスク 1 オンライン 3725 GB 1024 KB *
DISKPART> select disk 1
ディスク 1 が選択されました。
DISKPART> list partition
Partition ### Type Size Offset
------------- ------------------ ------- -------
Partition 1 プライマリ 4779 MB 32 KB
Partition 2 システム 5034 KB 4779 MB
Partition 3 プライマリ 300 KB 4784 MB
Partition 4 不明 3721 GB 4786 MB
DISKPART> select partition 1
パーティション 1 が選択されました。
DISKPART> delete partition override
DiskPart は選択されたパーティションを正常に削除しました。
DISKPART> select partition 2
パーティション 2 が選択されました。
DISKPART> delete partition override
DiskPart は選択されたパーティションを正常に削除しました。
DISKPART> select partition 3
パーティション 3 が選択されました。
DISKPART> delete partition override
DiskPart は選択されたパーティションを正常に削除しました。
DISKPART> select partition 4
パーティション 4 が選択されました。
DISKPART> delete partition override
DiskPart は選択されたパーティションを正常に削除しました。
DISKPART> list partition
このディスクには表示するパーティションがありません。
DISKPART> create partition primary
DiskPart は指定したパーティションの作成に成功しました。
DISKPART> list partition
Partition ### Type Size Offset
------------- ------------------ ------- -------
* Partition 1 プライマリ 3725 GB 1024 KB
DISKPART> assign letter=E
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。
DISKPART> format fs=exfat quick
100% 完了しました
DiskPart は、ボリュームのフォーマットを完了しました。
DISKPART> exit
DiskPart を終了しています...
参考になる外部サイト:
ディスプレイマネージャー
Ubuntu 20.04まではX11がデフォルトのディスプレイマネージャーでした。22.04からはWaylandに変更されています。リモートデスクトップは、X11を使う部分もあり、技術資料もX11が揃っています。対して、Waylandは成熟の部分では懸念が残ります。トラブルを避けるためディスプレイマネージャーをX11に変更します。
Power Off/Logout
> Logout
> ユーザ選択 > 右下の歯車アイコン
> Ubuntu on Xorg
(表示が多少異なるかも) > ユーザのパスワードを入力
画面が真っ白になった場合は、Windowsキー
> terminal
と入力 > Enterキー
でターミナルを開き以下を実行します。
sudo reboot
Ubuntu PCのデスクトップの Settings
> About
Windows System
が X11
になっていることを確認します。
ビデオドライバがインストールされていなければ表示解像度が1024 x 768に変更されます。
ビデオドライバのインストールは、GPU関係 に記載します。
プロキシ
セットアップに使用するソフトウェアのプロキシを設定します。
GNOME(NetworkManager)
これを設定すればブラウザ(Firefox)でWebを閲覧できます(=Qiitaにアクセスでき、このページを見ながら作業できる!)。
Ubuntu PCのデスクトップの Settings
> Network
> Network Proxy
Manual
に変更し、HTTP Proxy
、HTTPS Proxy
、FTP Proxy
、Socks Proxy
のプロキシサーバとポートを入力
- プロキシサーバのプロトコル指定(例:
http://
)は不要です -
Ignore Hosts
は任意に設定します
Shell
vproxy_server
とvproxy_port
の値はネットワーク環境に合わせて変更します。
vproxy_server=hoge
vproxy_port=foo
sudo touch /etc/profile.d/proxy.sh
echo "MY_PROXY_URL='http://${vproxy_server}:${vproxy_port}'" | sudo tee -a /etc/profile.d/proxy.sh > /dev/null
echo "HTTP_PROXY=\$MY_PROXY_URL" | sudo tee -a /etc/profile.d/proxy.sh > /dev/null
echo "HTTPS_PROXY=\$MY_PROXY_URL" | sudo tee -a /etc/profile.d/proxy.sh > /dev/null
echo "http_proxy=\$MY_PROXY_URL" | sudo tee -a /etc/profile.d/proxy.sh > /dev/null
echo "https_proxy=\$MY_PROXY_URL" | sudo tee -a /etc/profile.d/proxy.sh > /dev/null
echo "ftp_proxy=\$MY_PROXY_URL" | sudo tee -a /etc/profile.d/proxy.sh > /dev/null
echo "export HTTP_PROXY HTTPS_PROXY http_proxy https_proxy ftp_proxy" | sudo tee -a /etc/profile.d/proxy.sh > /dev/null
source /etc/profile.d/proxy.sh
apt
sudo touch /etc/apt/apt.conf.d/90proxy
echo 'Acquire::http::proxy "'${http_proxy}'";' | sudo tee -a /etc/apt/apt.conf.d/90proxy > /dev/null
echo 'Acquire::https::proxy "'${https_proxy}'";' | sudo tee -a /etc/apt/apt.conf.d/90proxy > /dev/null
echo 'Acquire::ftp::proxy "'${ftp_proxy}'";' | sudo tee -a /etc/apt/apt.conf.d/90proxy > /dev/null
echo 'Acquire::socks::proxy "'${http_proxy}'";' | sudo tee -a /etc/apt/apt.conf.d/90proxy > /dev/null
sudo
sudo su -
visudo -f /etc/sudoers
# 下記 /etc/sudoers.log 参照
exit
追記する内容
Defaults env_keep+="HTTP_PROXY"
Defaults env_keep+="HTTPS_PROXY"
Defaults env_keep+="NO_PROXY"
Defaults env_keep+="EDITOR"
エディタ
システムのデフォルトエディタを指定します。CUI上で起動するものを指定します。
vim
は好みに合わせて変更します。
sudo apt update
sudo apt install -y vim
sudo update-alternatives --set editor /usr/bin/vim.basic
必須パッケージ
インストール作業で要求される機会が多いパッケージと、リモートアクセスのパッケージをインストールします。
sudo apt install -y gcc make cmake curl wget ssh
日本語入力
sudo apt install -y fonts-ipafont fonts-ipaexfont
sudo apt install -y fcitx fcitx-mozc
im-config -n fcitx
sudo reboot
デスクトップ上のターミナルで以下のコマンドを実行します。
im-config
OK
> No
> OK
と選択
sudo apt install -y fcitx-config-gtk
sed -i "/EnabledIMList/s/mozc:False/mozc:True/g" ~/.config/fcitx/profile
fcitx-configtool mozc
Input Method Configuration
のリストを上から順に以下の通りに設定します。
- Keyboard - Japanese
- Mozc
Mozc
は Add input method
で Only Show Current Language
のチェックを外すと表示されます。
Add input method
に English
があると動作しない場合があるので必要でなければ削除します。
Global Config
> Trigger Input Method
を Zenkakuhankaku
and/or Ctrl
+Zenkakuhankaku
に変更します。
GPU関係
モニタの出力にNVIDIAのGPUを搭載しているビデオカードを使う場合や、GPGPUを使う場合にインストールします。
NVIDIA Driver (2025/1/24 追記)
Try1 - インストールスクリプト (失敗)
マシンにインストールされているビデオカードの型番を調べます。
lspci | grep -i nvidia
以下のサイトから型番とアーキテクチャを指定してインストールします。
cd Downloads/
chmod u+x NVIDIA-Linux-x86_64-550.54.14.run
コンソールモードへ移ります。
Ctrl
+Alt
+F6
コンソールモードから戻る場合 Ctrl
+Alt
+F2
sudo ./NVIDIA-Linux-x86_64-550.54.14.run
ビルドに失敗、ログでは非対応オプションを指定しているようなエラーが出力され、解決策を見つけられず断念...
参考にした外部サイト:
Try2 - 手操作 (成功)
利用可能なドライバーを表示します。
ubuntu-drivers devices
# 下記 ubuntu-drivers.log 参照
(中略)
driver : nvidia-driver-535 - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-550 - distro non-free recommended
(中略)
Docker コンテナ上で GPU をフル活用するアプリケーション、例えば NVIDIA Omniverse 関連のアプリケーションを使う場合は、 535-server
のような server
がついているバージョンを選択します。その予定がない場合は、 recommended
されているバージョンを選択します。
DRIVER_BRANCH=xxx
の値をバージョンに置き換えて実行します。
DRIVER_BRANCH=xxx
sudo ubuntu-drivers install nvidia:${DRIVER_BRANCH}
sudo ubuntu-drivers install --gpgpu nvidia:${DRIVER_BRANCH}-server
sudo apt install -y nvidia-utils-${DRIVER_BRANCH}-server
sudo apt install -y nvidia-fabricmanager-${DRIVER_BRANCH} libnvidia-nscq-${DRIVER_BRANCH}
sudo apt install -y linux-modules-nvidia-${DRIVER_BRANCH}-generic
sudo apt-cache policy linux-modules-nvidia-${DRIVER_BRANCH}-$(uname -r)
# 下記 apt-cache.log 参照
インストールしたバージョンを確認します(以下参考)。
linux-modules-nvidia-535-6.5.0-18-generic:
Installed: (none)
Candidate: 6.5.0-18.18~22.04.1
Version table:
6.5.0-18.18~22.04.1 500
500 http://jp.archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages
500 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages
sudo apt install -y linux-headers-generic
sudo apt-cache policy linux-headers-$(uname -r)
# 下記 apt-cache.log 参照
インストールしたバージョンを確認します(以下参考)。
linux-headers-6.5.0-18-generic:
Installed: 6.5.0-18.18~22.04.1
Candidate: 6.5.0-18.18~22.04.1
Version table:
*** 6.5.0-18.18~22.04.1 500
500 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
100 /var/lib/dpkg/status
sudo apt install nvidia-driver-${DRIVER_BRANCH}
sudo apt install nvidia-fabricmanager-${DRIVER_BRANCH} libnvidia-nscq-${DRIVER_BRANCH}
参考になる外部サイト:
NVIDIA CUDA
バージョンが異なる2つ以上ドライバをインストールしていると cuda-driversのインストールに失敗します。古い方を以下のコマンドで削除します。EXT_DRIVER_BRANCH
の値は、削除するバージョンに置き換えます。
dpkg -l | grep nvidia-driver
# 下記dpkg.log参照
EXT_DRIVER_BRANCH=XXX
sudo apt --purge remove -y '*nvidia*${EXT_DRIVER_BRANCH}*'
sudo apt autoremove -y
ii nvidia-driver-XXX XXX.YY.ZZ-0ubuntu1 amd64 NVIDIA driver metapackage
以下のサイトからインストールしたドライバに対応する CUDA Toolkit のバージョンを確認します。
サイト左側の R535 Driver Release Notes
など DRIVER_BRANCH
に指定したバージョンのメニューから Version 535.230.02 (Linux)/539.19(Windows)
など Linux
が含まれる項目を選択 > 1.1. Software Versions
の CUDA Toolkit 12: 12.2.2
を確認
以下のサイトから CUDA Toolkit のインストールコマンドを確認します。
調べた CUDA Toolkit 12: 12.2.2
と同じメニューを選択 > Linux
> CPUのアーキテクチャを選択 > Ubuntu
> 22.04
> Installer Type
に deb(network)
を選択
以下のようなインストールコマンドが表示されます。コマンドは、sudo apt-get install -y cuda-drivers
のようにバージョンを省略している場合があります。意図せぬバージョンがインストールされますので、バージョンを指定します。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-2
sudo apt-get install -y cuda-drivers-${DRIVER_BRANCH}
一旦ログアウトし、再度ログインします。
-
sudo apt-get -y install cuda-toolkit-12-3
がパッケージダウンロードに失敗する場合があり、その場合は何度かトライします - サイトに表示されるコマンドをそのまま実行して、ドライババージョンの依存関係エラーが発生した場合、以下を実行します
sudo apt install -y libnvidia-fbc1-${DRIVER_BRANCH} libnvidia-cfg1-${DRIVER_BRANCH} xserver-xorg-video-nvidia-${DRIVER_BRANCH} libnvidia-encode-${DRIVER_BRANCH} libnvidia-decode-${DRIVER_BRANCH} libnvidia-extra-${DRIVER_BRANCH} libnvidia-compute-${DRIVER_BRANCH}
sudo apt --fix-broken install
sudo apt autoremove
sudo apt install -y nvidia-driver-${DRIVER_BRANCH}
sudo apt-get install -y cuda-drivers-${DRIVER_BRANCH}
sudo apt autoremove
ドライバをアンインストールする方法
この手順は、一度ドライバをインストールしたもののアプリケーションが対応していなかった場合などに再インストールする人向けです。
以下をアンインストールします。
- NVIDIA Driver
- CUDA Driver
- CUDA Toolkit
- NVIDIA Docker 2
sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"
sudo apt-get autoremove
アンインストール後、再起動します。
リモートデスクトップ
いずれか1つしか機能せず、1つを選ぶことになります。どれも一長一短です。
実機でログインしている場合に機能 (2025/1/23 追記)
Ubuntu22.04 の標準デスクトップ環境に備わっている GNOME Remote Desktop を使用します。
実機でログインしデスクトップ表示している場合に機能
Ubuntu PCのデスクトップの Settings
> Sharing
> タイトルバーのスイッチを ON
に切り替え
続いて、Remote Desktop
> Remote Desktop
を ON
、Remote Control
を ON
、Password
にパスワードを入力
ランダムなパスワードがデフォルトで設定されていますので、任意に変更します。
参考になる外部サイト:
実機でログインしてスクリーンロックしている場合も機能
先に、実機でログインしデスクトップ表示している場合に機能 を設定します。
Try1 - Gnome Shell Extension Manager (失敗)
sudo apt install gnome-shell-extension-manager
extension-manager
Extension managerのタブを Browse
に切り替えるとCore dumpが発生し落ちました
参考にした外部サイト:
Try2 - Gnome Shell Extensions (成功)
gnome-shell-extension-manager
をインストールしている場合は、アンインストールします。
sudo apt --purge remove -y gnome-shell-extension-manager
sudo apt autoremove -y
一旦ログアウトし、再度ログインします。
sudo apt update
sudo apt install -y gnome-shell-extensions
デスクトップからログアウトし、再度ログインします。
ログイン後Firefoxを立ち上げ以下のURLにアクセスします。
ページのAdd to Firefox
を実行します。
アドオンをインストール後ターミナルで以下のコマンドを実行します。
sudo apt install -y chrome-gnome-shell
Firefoxを立ち上げてExtensionをインストールします。
Addon(ピースアイコン)
> GNOME Shell Integration
> 検索欄に allow locked
と入力 > Allow Locked Remote Desktop
> ON
> Install
参考になった外部サイト:
リモートデスクトップ接続におけるキー入力諸問題
実機でログインしている場合に機能 のいずれかの方法でWindowsクライアントからリモートデスクトップ接続を行うと、以下の問題が発生しましたので、その対処方法を紹介します。
半角入力と全角入力が高速に切り替わる問題の対処
日本語入力 で設定した切り替えキー Zenkakuhankaku
を押すと、Mozc
が点滅し、半角入力と全角入力が高速に切り替わります。対処方法は次の通りです。
cat << EOS >> ~/.profile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
export DefaultIMModule=fcitx
xset -r 49 # 半角全角点滅防止
EOS
source ~/.profile
参考にしたサイト:
日本語キーボード配列の |
(パイプ) を入力できない問題の対処
Ubuntu PCのキーボードの Shift
+ |
キーを押せばパイプ文字を入力できますが、リモートデスクトップ接続しているWindows PCのキーボードの |
キーを押しても反応がなく、キーイベントを確認する xev
コマンドにおいてもイベント入力を受け付けません。リモートデスクトップクライアントからキーイベントが送信されていないような挙動です。
対処方法を調べると、レジストリをいじる方法や、英語版IMEを使用する方法などありましたが、そもそもイベントが送られていないようなので、効果なしです。
結局、キー割り当てを変える方法を採りました。チルダ文字は、Shift
+ 0
と Shift
+ ^
とに割り当たっているため、Shift
+ 0
を |
に割り当てます。0
の keycode
は 19
です。割り当て方は次の通りです。他のキーを割り当てる場合は、xev
コマンドで keycode
を調べてください。
xmodmap -pke > ~/.Xmodmap
vim ~/.Xmodmap
# 下記 ~/.Xmodmap 参照
echo 'xmodmap ~/.Xmodmap' >> ~/.bashrc
source ~/.bashrc
(中略)
keycode 19 = 0 bar 0 parenright
(中略)
参考にしたサイト:
実機でログアウトしている場合に機能
先に、実機でログインしデスクトップ表示している場合に機能 を設定します。
sudo apt install -y xrdp
sudo ufw allow 3389
sudo systemctl status xrdp
ログインし直し、以下のコマンドでxrdpサーバが正常に実行されているか確認します。
sudo systemctl restart xrdp
sudo systemctl status xrdp
ログインし直し、勝手に書き換わるパスワードを再設定します。
Settings
> Sharing
> Remote Desktop
> Password
にパスワードを入力
参考になる外部サイト:
サーバ・クライアント間のクリップボード共有
sudo sed -i -e '/FuseMountName/s/thinclient_drives/shared-drives/g' /etc/xrdp/sesman.ini
いつでも機能 (Xfceデスクトップ)
実機のログイン有無関係なくリモートデスクトップを利用できますが、デスクトップがXfceになり、ウィンドウメニューやコピー&ペーストなど不都合が生じます。
sudo apt update
sudo apt install xrdp -y
sudo ufw allow 3389
sudo systemctl status xrdp
sudo adduser $USER xrdp
sudo apt install xfce4 xfce4-goodies -y
echo "xfce4-session" > ~/.xsession
sudo vim /etc/xrdp/startwm.sh
# 下記 /etc/xrdp/startwm.sh 参照
sudo reboot
(略)
#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession
startxfce4
sudo systemctl restart xrdp
sudo systemctl status xrdp
参考になる外部サイト:
接続テスト (2025/1/22 追記)
Windows 11からUbuntu 22.04へ接続
WindowsデフォルトがインバウンドのICPを許可しておらず、Windows 11にpingを送っても返ってこないです。pingを試す場合は、WindowsからUbuntuへ確認します。
Windows標準のリモート接続を起動し、オプションを表示し、コンピュータ名にIPアドレス (XXX.XXX.XXX.XXX
)やホスト名を入力し、ユーザ名にUbuntuのユーザ名 (Ubuntu-User-Name
) を指定します。
Docker
Docker engine
DockerコンテナからNVIDIA GPGPUを利用する場合、NVIDIA Docker 2でGPUのハードウェア仮想化が必要になります。Dockerの導入手順を紹介する記事で良く使われているdocker-ceでは、NVIDIA Docker 2をインストールする際、依存関係エラーが発生するため、docker.ioを使用します。
sudo apt-get install -y docker.io
sudo gpasswd -a $(whoami) docker
sudo chgrp docker /var/run/docker.sock
sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf
echo '[Service]' | sudo tee -a /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null
echo 'Environment="HTTP_PROXY='${HTTP_PROXY}'"' | sudo tee -a /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null
echo 'Environment="HTTPS_PROXY='${HTTPS_PROXY}'"' | sudo tee -a /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null
echo 'Environment="NO_PROXY='${NO_PROXY}'"' | sudo tee -a /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null
sudo reboot
docker version
# 下記 docker version.log 参照
docker run hello-world
# 下記 docker run.log 参照
Client:
Version: 24.0.5
API version: 1.43
Go version: go1.20.3
Git commit: 24.0.5-0ubuntu1~22.04.1
Built: Mon Aug 21 19:50:14 2023
OS/Arch: linux/amd64
Context: default
Server:
Engine:
Version: 24.0.5
API version: 1.43 (minimum version 1.12)
Go version: go1.20.3
Git commit: 24.0.5-0ubuntu1~22.04.1
Built: Mon Aug 21 19:50:14 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.7.2
GitCommit:
runc:
Version: 1.1.7-0ubuntu1~22.04.2
GitCommit:
docker-init:
Version: 0.19.0
GitCommit:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:d000bc569937abbe195e20322a0bde6b2922d805332fd6d8a68b19f524b7d21d
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
参考になる外部サイト:
Docker compose (2025/1/7 追記)
プラグイン版(2025年から主流になる?)
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-compose-plugin
docker compose version
# 下記 docker_compose.log 参照
Docker Compose version v2.32.1
スタンドアロン版(~2024年ぐらいまで主流)
sudo apt install docker-compose -y
docker-compose -v
# 下記 docker-compose.log 参照
docker-compose version 1.29.2, build unknown
NVIDIA Docker 2
DockerコンテナからNVIDIAのビデオカード(アクセラレータ)を制御できるように設定します。
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
nvidia-ctk -v
# 下記 nvidia-ctk.log 参照
sudo nvidia-ctk runtime configure --runtime=docker
cat /etc/docker/daemon.json
# 下記 /etc/docker/daemon.json 参照
sudo systemctl restart docker
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
# 下記 docker.log 参照
NVIDIA Container Toolkit CLI version 1.14.5
commit: 9ea336070134e612145d342e495f2fc616aab063
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
}
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
01007420e9b0: Pull complete
Digest: sha256:f9d633ff6640178c2d0525017174a688e2c1aef28f0a0130b26bd5554491f0da
Status: Downloaded newer image for ubuntu:latest
Tue Mar 5 08:26:46 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.14 Driver Version: 550.54.14 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 2080 Ti Off | 00000000:05:00.0 Off | N/A |
| 25% 31C P8 15W / 260W | 66MiB / 11264MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA GeForce RTX 2080 Ti Off | 00000000:09:00.0 Off | N/A |
| 25% 33C P8 19W / 260W | 5MiB / 11264MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
+-----------------------------------------------------------------------------------------+
参考になる外部サイト:
インストールしているビデオカードの構成によって出力が異なります。
Visual Studio Code (VSCode)
テキストエディアとしても勿論、エクスプローラーとしても、リモート接続やDocker管理もでき非常に便利です。
snapでVSCodeをインストールしようと考えましたが、諸所で日本語入力ができないとの書き込みがあり、また、本家GitHubも未だissueがクローズになっていないため、従来どおりaptを使用します。
参考になる外部サイト:
https://ch-random.net/post/458/
https://qiita.com/ykmchd/items/707e5460f739c0c775d2
https://redj.hatenablog.com/entry/2020/04/30/001946
https://github.com/microsoft/vscode/issues/77382
sudo apt update
sudo apt install apt-transport-https software-properties-common
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt update && sudo apt install code
rm microsoft.gpg
起動方法は以下のとおりです。
code
参考になる外部サイト:
VSCode Extensions
とりあえず入れておく拡張機能をインストールします。
- Remote Development (Microsoft)
OS関係なく別のPCにインストールされているVSCodeにリモートアクセスし、VSCodeを操作できる - Docker (Microsoft)
Dockerコンテナのファイルやコンソールを操作でき、かつDocker Desktopの代わりにもなる
最後に
Dockerを使った開発サーバの構築を以下の内容で解説しています。順次追加しますので、ご興味ある方はストックしてください