Noctuaのヒートシンクに素手で触れるとめちゃくちゃ指紋が付いてきたなく見えるので、それを除去していく。
こういう指紋汚れを取る。
指紋が付いたばかりのケース
無水エタノールを含ませたティッシュなどで拭うと簡単に取れる。
これは指紋が付いた直後に拭いたときのもの。
指紋が付いて数年経過したケース
無水エタノールで拭いてもほとんど取れない場合は、食器洗い用中性洗剤をティッシュなどにつけ、原液のままま強めにこすると取れやすい。
そのままだと洗剤が残ってしまうため、最後は水拭きして洗剤を取り去る。
これは5年ほど積もり積もった指紋の山だが、大分綺麗になったと思う。写真では判らないがよく見ると完全には取り切れていない。
Windowsノートに課題を長らく感じており、Ubuntuにしたら改善するのではないかという閃きでやってみたログ。
解決したかった課題
- 120GB/256GBとストレージを食いすぎている
- メモリが16GBしかなく、WSLをまともに使えない
- 発熱が酷い
- 電源を落として放置してると一週間でバッテリーが空になる
- 高速スタートアップとか、電気を食いそうなのは軒並みOFFにしているつもりなのだが…
目指す環境
- Windows 11っぽいデスクトップ環境
- VSCodeを使った簡単なWeb開発や、Markdownライティングが可能
- SSHで任意のサーバーに接続できる
- PHPとNode.jsが動く
- Xfce4を使った軽量なデスクトップ
- スクショが撮れる
- リサイズやモザイク、トリミングなどの簡単な画像編集が出来る
対象端末
NEC Lavie PC-GN20D72DYEDYH2YAA
環境構築
Ubuntuの入手とインストール
- Ubuntu公式からAMD64向けのイメージをダウンロード
- RufusでUSBメモリに焼く
- ノートPCにUSBメモリを挿す
- ノートPCを起動しF2を連打
- BIOSからUbuntuの入ったUSBを起動
- 普通にインストールする
ブラウザとVSCodeの導入
Edgeのdebを落としてきてインストール
sudo apt install ./microsoft-edge-stable_139.0.3405.125-1_amd64.deb
アプリセンターからFirefoxを消す
VSCodeのdebを落としてきてインストール
sudo apt install ./code_1.103.2-1755709794_amd64.deb
VSCodeの設定
拡張機能のインストール
普段使ってるマシンで拡張機能のインストールコマンドを生成
code --list-extensions | grep -E -v 'powershell|wsl' | perl -ne 'print "code --install-extension $_"'
結果をノートPC側に流す
code --install-extension 13xforever.language-x86-64-assembly
code --install-extension 42crunch.vscode-openapi
code --install-extension bmewburn.vscode-intelephense-client
code --install-extension dbaeumer.vscode-eslint
code --install-extension docker.docker
code --install-extension eamodio.gitlens
code --install-extension esbenp.prettier-vscode
code --install-extension golang.go
code --install-extension gruntfuggly.todo-tree
code --install-extension jebbs.plantuml
code --install-extension jock.svg
code --install-extension lokalise.i18n-ally
code --install-extension ms-azuretools.vscode-containers
code --install-extension ms-azuretools.vscode-docker
code --install-extension ms-ceintl.vscode-language-pack-ja
code --install-extension ms-vscode-remote.remote-containers
code --install-extension ms-vscode-remote.remote-ssh
code --install-extension ms-vscode-remote.remote-ssh-edit
code --install-extension ms-vscode.remote-explorer
code --install-extension mushan.vscode-paste-image
code --install-extension redhat.vscode-commons
code --install-extension redhat.vscode-yaml
code --install-extension robberphex.php-debug
code --install-extension shd101wyy.markdown-preview-enhanced
code --install-extension swordev.phpstan
code --install-extension vscode-icons-team.vscode-icons
code --install-extension yzhang.markdown-all-in-one
settings.json
{
"terminal.integrated.defaultProfile.linux": "zsh",
"terminal.integrated.profiles.linux": {
"zsh": {
"path": "zsh"
}
},
"terminal.integrated.allowChords": false,
"terminal.integrated.commandsToSkipShell": [
"-workbench.action.quickOpenView",
"-workbench.action.terminal.focusFind"
],
"workbench.startupEditor": "newUntitledFile",
"workbench.iconTheme": "vscode-icons",
"workbench.editor.decorations.badges": false,
"workbench.editor.decorations.colors": false,
"workbench.tree.enableStickyScroll": false,
"workbench.layoutControl.enabled": false,
"workbench.editor.empty.hint": "hidden",
"files.eol": "\n",
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"scm.showIncomingChanges": "never",
"scm.showOutgoingChanges": "never",
"git.autorefresh": true,
"git.autoStash": true,
"git.suggestSmartCommit": false,
"git.mergeEditor": false,
"git.openRepositoryInParentFolders": "never",
"remote.autoForwardPortsSource": "hybrid",
"diffEditor.ignoreTrimWhitespace": true,
"diffEditor.renderGutterMenu": false,
"explorer.confirmDragAndDrop": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"editor.stickyScroll.enabled": false,
"[markdown]": {
"editor.tabSize": 4,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"php.validate.run": "onSave",
"vsicons.dontShowNewVersionMessage": true,
"pasteImage.path": "${currentFileDir}/${currentFileNameWithoutExt}.assets",
"todo-tree.filtering.excludeGlobs": ["**/node_modules/**/*"],
"todo-tree.highlights.customHighlight": {
"TODO": {
"foreground": "#f8ff96",
"type": "text-and-comment"
},
"FIXME": {
"foreground": "#ff9696",
"type": "text-and-comment"
}
},
"todo-tree.general.tags": ["TODO", "FIXME"],
"todo-tree.regex.regex": "(//|#|<!--|/\\*|^\\s*\\*)\\s*($TAGS)",
"gitlens.currentLine.format": "${author, }${date}${' via 'pullRequest}${ • message|50?}",
"gitlens.statusBar.format": "${author}, ${date}${' via 'pullRequest}",
"gitlens.statusBar.tooltipFormat": "${avatar} __${author}__, ${date}${' via 'pullRequest}\n\n${message}${\n\n---\n\nfootnotes}\n\n${commands}",
"gitlens.hovers.detailsMarkdownFormat": "${avatar} __${author}__, ${date}${' via 'pullRequest}\n\n${message}${\n\n---\n\nfootnotes}\n\n${commands}",
"gitlens.views.formats.stashes.description": "${date}",
"gitlens.views.formats.commits.description": "${author, }${date}",
"gitlens.defaultDateFormat": "YYYY-MM-DD",
"terminal.integrated.shellIntegration.decorationsEnabled": "never",
"security.workspace.trust.untrustedFiles": "open",
"explorer.copyRelativePathSeparator": "/",
"typescript.tsserver.log": "off",
"gitlens.ai.experimental.generateCommitMessage.enabled": false,
"redhat.telemetry.enabled": true,
"chat.commandCenter.enabled": false,
"gitlens.views.scm.grouped.views": {
"commits": true,
"branches": true,
"remotes": true,
"stashes": false,
"tags": true,
"worktrees": true,
"contributors": true,
"repositories": false,
"searchAndCompare": false,
"launchpad": false
},
"workbench.secondarySideBar.defaultVisibility": "hidden",
"docker.extension.enableComposeLanguageServer": false,
"workbench.localHistory.maxFileEntries": 500,
"editor.acceptSuggestionOnCommitCharacter": false,
"workbench.settings.showAISearchToggle": false,
"gitlens.ai.enabled": false,
"chat.agent.enabled": false,
"remote.SSH.experimental.chat": false,
"scm.showInputActionButton": false,
"typescript.updateImportsOnFileMove.enabled": "always",
}
keybindings.json
// Place your key bindings in this file to override the defaults
[
{
"key": "ctrl+[BracketLeft]",
"command": "workbench.action.terminal.toggleTerminal",
"when": "terminal.active"
},
{
"key": "ctrl+shift+r",
"command": "typescript.restartTsServer"
},
{
"key": "ctrl+shift+e",
"command": "eslint.restart"
},
{
"key": "alt+down",
"command": "workbench.action.compareEditor.nextChange",
"when": "textCompareEditorVisible"
},
{
"key": "alt+up",
"command": "workbench.action.compareEditor.previousChange",
"when": "textCompareEditorVisible"
},
{
"key": "ctrl+k enter",
"command": "-workbench.action.keepEditor"
},
{
"key": "ctrl+q",
"command": "workbench.action.keepEditor"
}
]
Xubuntu化
sudo apt install xubuntu-desktop
sudo apt purge gnome-desktop
sudo apt search gnome
sudo apt purge ubuntu-gnome-desktop gnome-shell
sudo apt autoremove
基本環境のセットアップ
土台となる環境をインストールする
# 基礎環境の導入 sudo apt update -y sudo apt upgrade -y sudo apt install -y \ zsh \ ssh \ net-tools \ traceroute \ unzip \ mariadb-server \ nginx \ git # chsh sudo apt -y install unzip traceroute chsh -s $(which zsh) # dotfiles wget https://github.com/Lycolia/my-dotfiles/archive/refs/heads/main.zip unzip main.zip cp -R my-dotfiles-main/. . rm -Rf my-dotfiles-main main.zip
chshを効かせるためにOSを再起動
Dockerをインストール
# Docker for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done # Add Docker's official GPG key: sudo apt -y update sudo apt -y install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # sudo緩和 sudo usermod -aG docker $USER
- Node.jsをインストール
# Node.js @ nvm export NVM_DIR="$HOME/.nvm" && ( git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR" cd "$NVM_DIR" git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)` ) && \. "$NVM_DIR/nvm.sh" nvm install --lts
- dotfilesのセクションで拾ってきた.zshrcを開き、nvmが動くようにコメントを外す
SSH環境の作成
- 鍵置き場を作り、鍵を配置する
mkdir ~/.ssh chmod 700 ~/.ssh touch config chmod 600 <鍵ファイル>
- 接続情報を書く
Host hoge User foo Hostname git1.example.com IdentityFile ~/.ssh/config/id_ed25519_foo Port 22222 Host piyo User bar Hostname git2.example.com IdentityFile ~/.ssh/config/id_ed25519_bar Port 20202
LibreOfficeのバージョンを上げる
LibreOfficeのバージョンを最新まで上げるとOnedriveに繋げるようになるらしいので上げてみたが、「LibreOffice OneDrive the specified device invalid」のようなエラーメッセージが出て実際には使えなかった。Google Driveでも同様の問題があるらしい。
バージョンの上げ方
公式サイトからdebをダウンロードしてきて展開し、debが詰まったディレクトリでsudo dpkg -i *.deb
するとインストールできる。
そのままではXubuntuのLibreOfficeと競合するため以下のコマンドで古い方を消す。
sudo apt remove libreoffice-common
sudo apt autoremove
PHP8.4のインストール
取り敢えず使いそうなもの入れる
php sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install -y php8.4 \ php8.4-bz2 \ php8.4-cgi \ php8.4-cli \ php8.4-common \ php8.4-curl \ php8.4-dev \ php8.4-ds \ php8.4-fpm \ php8.4-gd \ php8.4-http \ php8.4-imagick \ php8.4-intl \ php8.4-ldap \ php8.4-mbstring \ php8.4-mcrypt \ php8.4-mysql \ php8.4-oauth \ php8.4-odbc \ php8.4-pgsql \ php8.4-smbclient \ php8.4-snmp \ php8.4-soap \ php8.4-sqlite3 \ php8.4-uuid \ php8.4-vips \ php8.4-xdebug \ php8.4-xml \ php8.4-xmlrpc \ php8.4-yaml \ php8.4-zip \ php8.4-zstd sudo sed -i -e 's/;listen.mode = 0660/listen.mode = 0666/' /etc/php/8.4/fpm/pool.d/www.conf sudo service php8.0-fpm start
nginxでfpmが動くか動作確認するために
/etc/nginx/conf.d/test.conf
を作成し、以下を記述server { listen 80; listen [::1]:80; location ~ ^/.*$ { root /usr/share/nginx/html; fastcgi_pass unix:/run/php/php8.4-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
sudo service nginx restart
/usr/share/nginx/html/
に適当なPHPスクリプトを置いて動いてるのが確認出来たらOK
デスクトップを使いやすくする
Windows 11っぽくする。
日本語入力できるようにする
タスクバーの右上にある「JA」をクリックしてMozcに変える
タスクバーを下に下げる
- タスクバーを右クリックし、パネル→パネルの設定を開く
- パネルをロックするを解除する
- タスクバーを画面下までドラッグする
- パネルをロックするをチェックする
スタートメニューや起動中のウィンドウを真ん中に寄せてラベルを消す
ウィンドウボタン
- パネルの設定を開き、アイテムタブに移る
- ウィンドウボタンをダブルクリック
- ボタンラベルを表示するのチェックを外す
- フラットボタンで表示するのチェックを入れる
- 取っ手を表示するのチェックを外す
- 並び変え順をタイムスタンプにする
- 基本的に画像の通りになってればOK
Whisker Menu
基本的に設定しなくてよいが、ラベルが出ている場合は表示をアイコンにすればよいと思う。
中央寄せにする
- セパレーターを追加し、セパレーター・Whisker Menu・ウィンドウボタンの順にする
- セパレーターをダブルクリックし、拡張するにチェックを入れる
- すると中央寄せになる
アイコンを大きめにする
- パネルの設定から表示タブを開く
- 行サイズを40にする
- 外観タブを開く
- 固定されたアイコンサイズを32にする
ワークスペースを一個にする
ウィンドウボタンの中央寄せを意識した場合に邪魔なのと、ウィンドウドラッグで他のデスクトップに勝手に飛んでいき、飛んでいくと戻すのが面倒なので、無効化する。
- パネルにあるワークスペーススイッチャの設定を開き一個にする
- ワークスペーススイッチャを消す(四つの窓と、画面右端にもう一個ある)
WindowsキーでWhisker Menuが、他のキーコンビネーションと干渉せずに開くようにする
愚直にやるとSuper+Eなどのキーとの同時押しと干渉するのでWindowsキー単体押下時のキーコードをいじるユーティリティ、KSUPERKEYを入れて解決する。
- 依存関係のインストールとビルド及びインストールコマンドを流す
sudo apt install -y git gcc make libx11-dev libxtst-dev pkg-config git clone https://github.com/hanschen/ksuperkey.git cd ksuperkey make sudo make install
- 設定マネージャー→セッションと起動を開く
ksuperkey
を追加する
- OSを再起動する。OS再起動後、Windowsキー単体の割り当てがSuperからAlt+F1に変更される
- 設定マネージャー→キーボードを開く
- xfce4-popup-whiskermenuの割り当てをAlt+F1に変更する
- Alt+F1にあるxfce4-popup-applicationsmenuと、Alt+Pauseにあるxfce4-popup-whiskermenuはゴミなので消す
- Windowsキーを押したときにWhisker Menuが開き、Windows + Eではファイラが開き、お互いが干渉しないことを確認できればOK
スクショを取りやすくする
PrintScreen
で画面全体、Windows + Shift + S
で矩形スクショ、Alt + Insert
でウィンドウスクショが撮れるようにする。
- 設定マネージャー→キーボードを開く
- xfce4-screenshooter系のコマンドの最後に
-c
を追加し、ダイアログなしでクリップボードに飛ばすようにする - Windowsと同様のキーバインドを設定する
ファイル保存は-s 'ピクチャ/Screenshots/'
のようなオプションを生やすと可能になるが毎回ダイアログが出るので指定しない方がいい。
また今回の方式ではコンテキストメニューやドロップダウンメニューが開いている場合は機能しなくなるが、回避方法は不明。
Flameshotという便利そうなツールもあるが、あいにくXfceのキーバインド機能に依存させるしかなく、xfce4-screenshooter以上のことはできない。
クリップボードマネージャーを有効にする
セッションと起動の自動開始アプリケーションに移り、Clipmanにチェックを入れる。
フォルダ右クリックでVSCodeを開けるようにする
- フォルダを右クリックしアプリケーションで開く→他のアプリケーションで開く
- Visual Studio Codeを選択
- 以後、VSCodeが選択肢に出てくるようになる
WindowsとUbuntuのパフォーマンス比較
セットアップ後のUbuntuのCPU・メモリ・ストレージの各使用率を比較してみた。
双方VSCode, Edge, Discordを起動している状態で比較している。WindowsはCPUとメモリをタスクマネージャー、ストレージをエクスプローラ。UbuntuはCPUをタスクマネージャー、メモリをfree -h
、ストレージをdf
で見ている。
占有対象 | Windows | Ubuntu |
---|---|---|
CPU | 30% | 2% |
MEM | 6.6GB/15.4GB (43%) | 3.6GiB/14GiB (26%) |
ストレージ | 113GB/236GB (48%) | 17GB/213GB (8%) |
圧倒的な軽さ。Windowsだと基本熱を持っていたマシンが随分穏やかな温度になり、夏場でも負荷をそこまで気にせず使えそうだった。
また、まだ今日セットアップしたばかりなので見れていないが、シャットダウン時の電力消費が著しく低い気配がしているので、一週間放置してたらバッテリー切れてたというのもなさそうな予感がしている。
ここはWindowsとの比較が出来ていないが、OSの起動が20秒、終了は4秒と、終了が異様に早い気がした。
単純比較はできないものの、遥かにスペックの高いメインマシンでは起動に2分、終了に20秒を要した事を考えると、かなり早い。
解決した課題
- 120GB/256GBとストレージを食いすぎている問題
- 使用量が17GBになり、何ら問題なくなった
- メモリが16GBしかなく、WSLをまともに使えない問題
- そもそもLinuxなのでVMが不要なため必然的に解決
- メモリ使用量もWindowsでは6.6GB/15.4GBだったところ、3.6GB/16.1GBに若干改善した
- 発熱が酷い問題
- アイドル時のCPU使用率が30%から2%に落ち、ほとんど熱を持たなくなった
- 電源を落として放置してると一週間でバッテリーが空になる問題
- 現時点で6hしか放置できていないため不明だが、ほぼ減ってないように見えるので大丈夫かもしれない
目指す環境との乖離
- Windows 11っぽいデスクトップ環境
- 大まかにはそれっぽくなった
- VSCodeを使った簡単なWeb開発や、Markdownライティングが可能
- 出来る状態になっている
- SSHで任意のサーバーに接続できる
- 確実に可能
- PHPとNode.jsが動く
- 確実に可能
- Xfce4を使った軽量なデスクトップ
- 達成済み
- スクショが撮れる
- 手間がかかる部分もあるが、概ね問題ない。プルダウンメニューやコンテキストメニューもタイマーを書ければスクショできるし、そもそもそこをスクショする機会もそうないだろう
- リサイズやモザイク、トリミングなどの簡単な画像編集が出来る
- デフォルトでGIMPが入っているのでOK(JTrimにはどうしても劣るが、偶に使う程度であれば支障なし)
完成したデスクトップ環境
タスクバーが中央寄せの大きなアイコン表示で、起動順、アプリケーションごとにグループ化されてて、そこそこWindows11ぽさを出せてると思う。
サブでたまに使う程度なら全然許容という感じ。
懸念していたが大丈夫だった部分
- マウス接続時のタッチパッド無効化
- これ自体は難しそうだったが、キーボード入力中にタッチパッドが無効化されており、あまり気にならなかった。Ctrl押しながらタッチパッドはいけたので実用性で問題になることはないだろう
- Surface Ark Mouseの三本指クリック
- ちゃんと中クリックとして認識された
Amazonや公式サイトにある情報が本当に正しいとは限らないので実地検分。
やり方
# これでCPUの情報が取れる
cat /proc/cpuinfo
# これでメモリの情報が取れる
opkg install dmidecode
dmidecode -t 17
# これでCPU, NICの情報が取れる
opkg install hwinfo
hwinfo
# これでeMMCのベンダ情報が取れる
cat /sys/class/mmc_host/mmc0/mmc0:0001/name
cat /sys/class/mmc_host/mmc0/mmc0:0001/manfid
調査ログ
CPU
cat /proc/cpuinfo
の結果から取得した情報。
model name : Intel(R) Celeron(R) N5105 @ 2.00GHz
メモリ
dmidecode -t 17
の結果から取得した情報。
MicronのLPDDR4でDDR4-3200相当であるとわかる。
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 8 GB
Error Information Handle: Not Provided
Number Of Devices: 2Memory Device
Array Handle: 0x003A
Size: 4 GB
Form Factor: Row Of Chips
Locator: Controller0-ChannelA
Type: LPDDR4
Speed: 3200 MT/s
Manufacturer: Micron Technology
NIC(RJ45)
hwinfo
の結果から取得した情報。
pci 0x125cはI226-VなのでIntel Ethernet controller I226-V
Hardware Class: network
Model: "Intel Ethernet controller"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x125c
SubVendor: pci 0x8086 "Intel Corporation"
SubDevice: pci 0x0000
Revision: 0x04
Driver: "igc"
Driver Modules: "igc"
Device File: eth2
NIC(SPF+)
以前分解したときのラベルと、hwinfo
の結果から取得した以下の情報と突き合わせるとMellanox ConnectX-3 En10*2 Gigabit Ethernet CX341Aであることが分かる。
Hardware Class: network
Model: "Mellanox MT27500 Family [ConnectX-3]"
Vendor: pci 0x15b3 "Mellanox Technologies"
Device: pci 0x1003 "MT27500 Family [ConnectX-3]"
SubVendor: pci 0x15b3 "Mellanox Technologies"
SubDevice: pci 0x0113
Driver: "mlx4_core"
Driver Modules: "mlx4_core"
Device File: eth3
ストレージ(eMMC)
以下の結果から、name: SCA128, manfid: 0x0000dfであることから、メーカー不詳のSCA128という製品であることが分かる。ググってもメーカー情報は不明だった。
cat /sys/class/mmc_host/mmc0/mmc0:0001/name
cat /sys/class/mmc_host/mmc0/mmc0:0001/manfid
まとめ
公式サイト?の情報やAmazonの情報と比べると微妙に差異があり、また、書いてない情報も取れたので調べてよかったなと思った。
構成 | 製品 | 備考 |
---|---|---|
CPU | Intel Celeron N5105 | 6T6C, 2.00GHz, TDP10W |
MEM | Micron | LPDDR4-3200 4GB * 2 |
Storage | SCA128 | 128G EMMC |
NIC | Intel Ethernet controller I226-V | RJ45 2.5GbE * 3 |
NIC | Mellanox ConnectX-3 En10*2 Gigabit Ethernet CX341A | SPF+ 10GbE * 2 |
Ubuntu 24.04.3 LTSのxrdpはバグがあり、セッション管理が不安定らしいのでバージョンを上げて解決する。
事象
Windowsのリモートデスクトップから接続すると、xrdpのログイン後に画面が真っ暗になっており、毎回pkill gnome-session
を余儀なくされ面倒だった。
~/.xsession-errors
を開くと、無限にこのログが出ていた。
(tracker-extract-3:5784): GLib-GIO-WARNING **: 08:39:48.131: Error creating IO channel for /proc/self/mountinfo: 無効な引数です (g-io-error-quark, 13)
Xlib: extension "DPMS" missing on display ":10.0".
Xlib: extension "DPMS" missing on display ":10.0".
Xlib: extension "DPMS" missing on display ":10.0".
Xlib: extension "DPMS" missing on display ":10.0".
Xlib: extension "DPMS" missing on display ":10.0".
確認環境
GNOMEはxrdp的にあまりよろしくないらしいので、ついでにxfceに変えてしまった方がいい可能性がある。変える場合はUbuntu 24.04.3 LTSをGNOMEからXfceに移行するを参考にする。
Env | Ver |
---|---|
ディストリ | Ubuntu 24.04.3 LTS |
デスクトップ環境 | xfce 4.18 |
更新前 | xrdp 0.9.24-4 |
更新後 | xrdp 0.10.4.1 + lightdm 1.30.0 |
やり方
公式マニュアルに忠実にやっていく。
xrdpの依存環境のインストール
sudo apt purge xrdp
wget https://raw.githubusercontent.com/neutrinolabs/xrdp/refs/tags/v0.10.4.1/scripts/install_xrdp_build_dependencies_with_apt.sh
chmod +x install_xrdp_build_dependencies_with_apt.sh
sudo ./install_xrdp_build_dependencies_with_apt.sh max
xrdpのビルドとインストール
wget https://github.com/neutrinolabs/xrdp/releases/download/v0.10.4.1/xrdp-0.10.4.1.tar.gz
tar xvzf xrdp-0.10.4.1.tar.gz
mv xrdp-0.10.4.1 xrdp
cd xrdp
https://raw.githubusercontent.com/neutrinolabs/xrdp/refs/tags/v0.10.3/scripts/install_xrdp_build_dependencies_with_apt.sh
./bootstrap
./configure --with-systemdsystemunitdir=/usr/lib/systemd/system \
--enable-ibus --enable-ipv6 --enable-jpeg --enable-fuse --enable-mp3lame \
--enable-fdkaac --enable-opus --enable-rfxcodec --enable-painter \
--enable-pixman --enable-utmp -with-imlib2 --with-freetype2 \
--enable-tests --enable-x264 --enable-openh264 --enable-vsock
make
sudo make install
sudo ln -s /usr/local/sbin/xrdp{,-sesman} /usr/sbin
sudo adduser --system --group --no-create-home --disabled-password --disabled-login --home /run/xrdp xrdp
実行環境の整備
/etc/xrdp/xrdp.ini
を開き以下の行のコメントを外すruntime_user=xrdp runtime_group=xrdp
/etc/xrdp/sesman.ini
を開き以下の行のコメントを外すSessionSockdirGroup=xrdp
証明書を作成する
sudo chmod 640 /etc/xrdp/rsakeys.ini sudo chown root:xrdp /etc/xrdp/rsakeys.ini sudo make-ssl-cert generate-default-snakeoil sudo ln -sf /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/xrdp/cert.pem sudo ln -sf /etc/ssl/private/ssl-cert-snakeoil.key /etc/xrdp/key.pem sudo usermod -a -G ssl-cert xrdp
- 以下を叩いて全部OKなのを確認
sudo /usr/local/share/xrdp/xrdp-chkpriv
- サービスの有効化
sudo systemctl enable --now xrdp xrdp-sesman
xorgxrdpのビルドとインストール
XをRDP用に差し替えるxrdpのバックエンドシステムらしい?
- ビルドとインストール
# scripts/install_xorgxrdp_build_dependencies_with_apt.shがないのでビルド時にエラーになった分を入れている sudo apt install xserver-xorg-dev libgbm-dev libepoxy-dev ./bootstrap ./configure --enable-glamor make sudo make install
/etc/xrdp/sesman.ini
を開き以下のように書き換える;param=Xorg param=/usr/lib/xorg/Xorg
ゴミ掃除と最後の設定
rm -Rf xorgxrdp xrdp xorgxrdp-0.10.4.tar.gz install_xrdp_build_dependencies_with_apt.sh xrdp-0.10.4.1.tar.gz
# GNOMEなどxfceでない場合は適宜書き換える
echo "startxfce4" > ~/.xsessionrc
トラブルシューティング
Authentication is required to create a color managed deviceというダイアログが何度も出る
Ubuntu 24からpolkitのバージョンが上がっているようで、従来の手段が通じなくなっている。
/etc/polkit-1/localauthority/50-local.d
にcolorが付いたファイルがあれば中身を確認し、関係ありそうな場合削除する- この設定ファイルは古く使われていないはずだが念のため消す
/etc/polkit-1/localauthority.conf.d/02-allow-colord.conf
がなければ作成し、以下の内容を記述polkit.addRule(function(action, subject) { if (action.id.startsWith('org.freedesktop.color-manager')) { return polkit.Result.YES; } });
sudo service polkit restart
でpolkitを再起動する
この作業をしても起動直後だけは出るので、キャンセル連打で無視すると良い。二回目以降は出なくなるはずだ。
あとがき
アップデートするとxrdpのロゴが洗練されたスタイルに変わった。今までは結構古臭かったように思う。
GNOMEは重いのでXfceに変更する。
XfceはDebianに昔あった懐かしいUIで劇的に軽くなった。
環境
Ubuntu 24.04.3 LTS
やり方
XfceのインストールとGNOMEの削除
sudo apt install xubuntu-desktop
sudo apt remove ubuntu-gnome-desktop gnome-shell
sudo apt purge ubuntu-gnome-desktop gnome-shell
sudo apt autoremove
xrdpのXfce化
echo "startxfce4" > ~/.xsessionrc
トラブルシューティング
日本語入力が出来ない
右上のタスクバーにある「JA」をクリックして「mozc」に変更すると「全角/半角」キーが使えるようになり、日本語入力が可能になる。
タスクバーを上から下に移動する
タスクバーを右クリック→パネル→パネルの設定で固定解除するとハンドルが出るのでドラッグしてもっかい固定するといい。
デフォだとパネル2がドックとしてあるが、邪魔なので消す。