Ubuntu 22.04をNative環境にインストールしたときのメモ
Ubuntuの入手からダウンロード
Secure Boot環境で日本語RemixのISOファイルを使うとVerification failed: (0x1A) Security Violation
と怒らたので、jp.ubuntu.comのダウンロードページからUbuntu Desktopをダウンロードした。
ブータブルUSBを作るには、Rufus等を使う(ググってちょ)。
以下の参考ページを参照して起動するとこまでやってちょ。
作業中に画面が消えると鬱陶しいのでパワマネ無効化。
TAB補完使えばコピペするほどでもないので、最初にやっとく。
# ブランクスクリーン しない
gsettings set org.gnome.desktop.session idle-delay 0
# 自動画面ロック OFF
gsettings set org.gnome.desktop.screensaver lock-enabled false
とりあえず最新版に
sudo apt update
sudo apt upgrade
ついでにsshもインストールしておく。
webで調べたコマンドをコピペしたいので。
参考:ubuntuにSSHサーバをセットアップする
sudo apt install ssh
~/.ssh/authorized_keys
に追記し、attribute変更。mkdir ~/.ssh
vi ~/.ssh/authorized_keys
### 公開鍵を追記 ###
chmod 600 ~/.ssh/authorized_keys
念のためここでリブート。
参考: UbuntuにChromeをインストールする手順
参考: Linux(Ubuntu)のリモートデスクトップ設定(Google Chrome リモートデスクトップ/xrdp)
chrome リモートデスクトップをインストールすると、ローカル端末でのログインができなくなるので、 以下の処理を行う。
新しく使用する.desktop
ファイルを作成(ubuntuをベースに使用)
cd /usr/share/xsessions/
sudo cp ubuntu.desktop ubuntu-local.desktop
以下のパッチをあてる。
[!NOTE]
Name
の変更とExec
にDISPLAY=":0"
を追加
--- ubuntu.desktop 2022-04-08 04:07:53.000000000 +0900
+++ ubuntu-local.desktop 2023-11-11 07:25:37.223280734 +0900
@@ -1,7 +1,7 @@
[Desktop Entry]
-Name=Ubuntu
+Name=Ubuntu on local
Comment=This session logs you into Ubuntu
-Exec=env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --session=ubuntu
+Exec=env DISPLAY=":0" GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --session=ubuntu
TryExec=/usr/bin/gnome-shell
Type=Application
DesktopNames=ubuntu:GNOME
[!NOTE] ローカル端末でログインするときはユーザ名選択後、画面右下の歯車アイコンをクリックし、 「Ubuntu on local」を選択(一度選択すれば記憶されるので2度目以降は確認だけでOK)してログインする。 (作成したセッションを選択可能にするには、リブートが必要)
手間を省くためにコマンドラインで以下を実行(sshからで可)
# インストール時にエラーにならないようおまじない
mkdir ~/.config/chrome-remote-desktop
# リブート時に消せるようにダウンロード先に/tmpを使う
cd /tmp
# chromeのダウンロード
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
# chromeのインストール
sudo apt install ./google-chrome-stable_current_amd64.deb
# remote desktopのダウンロード
wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
# remote desktopのインストール
sudo apt install ./chrome-remote-desktop_current_amd64.deb
[!NOTE] インストール時、以下のように提案/推奨されるが、入れなくても大丈夫。
提案パッケージ:
python-psutil-doc x11-xfs-utils
推奨パッケージ:
xserver-xorg-video-dummy pipewire
ローカル端末でchrome起動
パスワード入力を求められるのでパスワード入力
[!WARNING] ローカル端末でログインしたままだとリモートデスクトップがつながっても画面表示されない
Windows PCでリモートデスクトップアプリを起動し、Ubuntuマシンに接続する
セッションの選択ではUbunto on Xorg または Ubuntuを選択(たぶんどっちも同じ)
接続すると、「カラーマネジメントされたデバイスを作成するには認証が必要です」ダイアログが出る場合がある。
このダイアログはパスワード入れてもキャンセルしても結果は同じで問題なく操作できるが、逐一やるのはめんどっちいので出なくする。
/etc/polkit-1/localauthority/50-local.d/45-allow.colord.pkla
で以下の内容で作成
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
設定を有効にするのは再起動必要。
接続時、毎回セッションの選択をするのは面倒なので、自動で選択できるようにしようとしたが、
これをやるとローカル端末でログインできなくなるのでやめておく。
[!NOTE] 参考までに手順を記載しておく
~/.chrome-remote-desktop-session
を以下の内容で作成するexec /etc/X11/Xsession 'env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --session=ubuntu'
env以下は使用するセッションに合わせて変更すること。
(/usr/share/xsessions/≪セッション名≫.desktop
のExec
行の内容)
ま、使うでしょ。
sudo apt install build-essential
なにかと使うのでインストール
sudo apt install net-tools
sudo apt install dconf-editor
sudo apt install gnome-tweaks
使うツールがあったら残してちょ。
sudo apt remove thunderbird libreoffice-* simple-scan gnome-todo remmina cheese rhythmbox
# 個別に実行する場合はこちらでどうぞ。
sudo apt remove thunderbird
sudo apt remove libreoffice-*
sudo apt remove simple-scan
sudo apt remove gnome-todo
sudo apt remove remmina
sudo apt remove cheese
sudo apt remove rhythmbox
sudo apt remove aisleriot gnome-mahjongg gnome-mines gnome-sudoku
# 個別に実行する場合はこちらでどうぞ。
sudo apt remove aisleriot
sudo apt remove gnome-mahjongg
sudo apt remove gnome-mines
sudo apt remove gnome-sudoku
sudo apt autoremove
最近はUDEVゴシック がお気に入りなのでインストールしておく。
もちろん、他のフォントでもいいよ。
ブラウザでダウンロードしてもいいけど、あちこちファイルコピーしたり削除したりが面倒なので、
一時ファイルは/tmp
に突っ込んでリブート時にまとめて消してもらおう。
フォントのインストールと言っても、ttfファイルを入手して~/.fonts/
ディレクトリにコピるだけ。
下では全部コピってるけど、もちろん使いたいものだけでもOK。
pushd /tmp
wget https://github.com/yuru7/udev-gothic/releases/download/v1.0.0/UDEVGothic_v1.0.0.zip
unzip UDEVGothic_v1.0.0.zip
mkdir ~/.fonts
cp UDEVGothic_v1.0.0/*.ttf ~/.fonts/
popd
で、入手したフォントを端末のフォントに設定しておこう。
さっきフォントのインストールに使った端末ウィンドウを使うと
エラーで端末ウィンドウが落ちるかもしれないんで一旦終了して新しいウィンドウで。
端末を起動し、右上の「≡」→「設定」を選択
使用中のプロファイル(最初のは「名前なし」)を選択し、
「フォントを指定」にチェックを入れ、その右側でフォントを選ぶ
さっきインストールした「UDEV Gothic JPDOC」を選んでサイズを指定。
ついでに起動時の端末サイズも修正しておくとよい
終わったら×で終了。
もちろん、使うものだけでOK。
sudo mkdir /proj /work /NFSROOT
sudo chown $USER:$USER /proj /work* /NFSROOT
デフォルトのshがdashなのはなんとなくイヤなので。
pushd /bin
sudo ln -sf bash sh
popd
~/.bashrcに以下を追記。
もちろんお好みで。
「# for pyenv」以降はそれぞれのツールをインストールしたとき用なので、インストールしないならなくて可。
# プロンプトの設定
PS1="\w\$ "
# キーバインドの設定
bind '"\C-n": history-search-forward'
bind '"\C-p": history-search-backward'
# ディレクトリスタックの表示改善
function pushd() {
command pushd $* > /dev/null
command dirs -v
}
function popd() {
command popd $* > /dev/null
command dirs -v
}
function dirs() {
command dirs -v
}
# 表示色変更
export LS_COLORS='di=01;32:ln=01;36:ex=01;31:'
export GREP_COLORS='mt=01;31:ml=:cx=:fn=01;32:ln=32:bn=32:se=36'
# lessのオプション
export LESS="-iMR"
# x11からのログイン以外ならDISPLAYを設定する
# Ubuntu22.04だとwaylandになるらしい
if [ "$XDG_SESSION_TYPE" != "x11" ] && [ "$XDG_SESSION_TYPE" != "wayland" ]; then
export DISPLAY=192.168.78.200:0.0
fi
echo DISPLAY="$DISPLAY"
# for pyenv
export PYENV_ROOT=/proj/.pyenv #環境に合わせて修正してね
if [ -e $PYENV_ROOT ]; then
export PATH=$PYENV_ROOT/bin:$PATH
# 仮想環境名をプロンプトに表示しない場合は以下を有効化
# export VIRTUAL_ENV_DISABLE_PROMPT=1
eval "$(pyenv init --path)" # pyenv 2.0以降で必要
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
export PYTHON_CONFIGURE_OPTS="\
--enable-shared\
"
fi
# for nodenv
export NODENV_ROOT=/proj/.nodenv # 環境に合わせて修正してね
if [ -e $NODENV_ROOT ]; then
export PATH=$NODENV_ROOT/bin:$PATH
eval "$(nodenv init -)"
fi
# direnv 設定
if type direnv > /dev/null 2>&1; then
export EDITOR=vi
eval "$(direnv hook bash)"
# # venvの仮想環境名を表示するための設定
# show_virtual_env() {
# if [ -n "$VIRTUAL_ENV" ]; then
# echo "($(basename $VIRTUAL_ENV))"
# fi
# }
# PS1='$(show_virtual_env)'$PS1
fi
以下のコマンドで無効化できる
gsettings set org.gnome.mutter auto-maximize false
gsettings set org.gnome.mutter edge-tiling false
以下のコマンドで設定できる
gsettings set org.gnome.desktop.wm.preferences auto-raise false
gsettings set org.gnome.desktop.wm.preferences focus-mode mouse
gsettings set org.gnome.desktop.wm.preferences raise-on-click true
[!NOTE] focus-mode の設定値 mouse と sloppy の違い
mouse は マウスカーソルをウィンドウからデスクトップに移すとフォーカスがはずれる。
sloppy は マウスカーソルをウィンドウからデスクトップに移してもフォーカスされたまま。
以下のコマンドで設定できる
Ubuntu20.04とちょっとキーが変更されてる
ゴミ箱は最初から表示されてないけど…ま、ついでに書いとく。
表示したければ、設定値をtrueにすれば良い。
gsettings set org.gnome.shell.extensions.ding show-home false
gsettings set org.gnome.shell.extensions.ding show-trash false
なんとなく使いにくいので好みのデザインに変更。
#ゴミ箱削除
gsettings set org.gnome.shell.extensions.dash-to-dock show-trash false
# アプリケーションをDockバーの上(または左)に表示
gsettings set org.gnome.shell.extensions.dash-to-dock show-apps-at-top true
# Dockバーを画面下に表示
gsettings set org.gnome.shell.extensions.dash-to-dock dock-position BOTTOM
# アイコンサイズの変更
gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 16
マウスカーソル小さくて見失う人は大きくしましょう。
最後の数字がカーソルの大きさなので、お好みのサイズで。
gsettings set org.gnome.desktop.interface cursor-size 48
または「設定」→「ユニバーサルアクセス」→「カーソルの大きさ」で選択
ファイル(nautilus)の設定をお好みに合わせて。
ファイル(nautilus)はすべて終了しておいた方が無難。
# アドレスバーをテキスト形式にする
gsettings set org.gnome.nautilus.preferences always-use-location-entry true
# 詳細表示をデフォルトに
gsettings set org.gnome.nautilus.preferences default-folder-viewer 'list-view'
# 隠しファイルを表示する
# 隠しファイルの表示はちょっと場所が違う
gsettings set org.gtk.Settings.FileChooser show-hidden true
自分のタイミングでソフトのアップデートができないのがストレスなので、以下で自動確認を停止。
もちろん、適時手動でアップデートするのを忘れずに。
Chromeリモートデスクトップ環境ではWindowsで設定したのが有効になっているので必要ないが、
ローカル端末で使用する場合に備えて入れ替えを設定しておく。
方法は、/etc/default/keyboard
に XKBOPTIONS="ctrl:nocaps"
を追加。
設定を有効にするにはリブート必要。
参考:【Ubuntu 20.04/18.04 LTS】CapsLockとControlキーを入れ替える
リンク先は「Ubuntu 20.04/18.04 LTS」となっているが、Ubuntu22.04でも同じらしい。
bashでクリップボードからペーストするとペーストした文字が選択状態になったり、改行がその場で入力されなかったりするようになった。
こればbash 5.1からブラケットペーストモード というのがデフォルトで有効になったためらしい。
(余計なことをしてくれる…😩💨)
これを回避するには/etc/inputrc
の最後に以下を追記する。
# disable bracked-paste mode
set enable-bracketed-paste off
起動済みのbashには効かないが、設定以降に起動したbashでは有効になる(システムの再起動は不要)。
参考: シェル - bash - ブラケットペーストモード(Bracketed Paste Mode)
IPv6動いていて何度かハマったので無効化しておく。
sysctrlで無効化する方法もあるけど、ちょっと手順が面倒なので、起動オプションで無効化してしまおう。
参考:Ubuntu 20.04 LTS Focal FossaでIPv6アドレスを無効にする方法
/etc/default/grubの以下の部分(10行目あたり)にipv6.disable=1
を追加
元から設定されている”quiet splash”を削除すれば起動時のスプラッシュスクリーンが表示されず、ブートシーケンスのログが表示されるようになるので、お好みで。
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
↓
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1"
# または、ブートシーケンスのログを表示したい場合は以下。
# GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
これだけだとまだ設定有効にならない。
以下のコマンドでgrubメニューの更新を行う。
sudo update-grub
リブートする
リブート後、ip address
とかifconfig
でIPv6のアドレスが割り当てられていないことを確認。
ツール本体のインストール
sudo apt install samba
/etc/samba/smb.conf に以下を追加
作らなかったワークディレクトリの部分は削除してね。
他にも共有したいディレクトリがあったら追加してちょ。
force group
に設定するグループは存在するグループ(またはユーザ)名に変更してください。
ここではちょっと見たいファイルがあったのでoptも共有してます。
[proj]
path = /proj
guest ok = no
writable = yes
map archive = no
share modes = yes
dos filetimes = yes
force group = yas
force create mode = 0664
force directory mode = 0665
[work]
path = /work
guest ok = no
writable = yes
map archive = no
share modes = yes
dos filetimes = yes
force group = yas
force create mode = 0664
force directory mode = 0665
[NFSROOT]
path = /NFSROOT
guest ok = no
writable = yes
map archive = no
share modes = yes
dos filetimes = yes
force group = yas
force create mode = 0664
force directory mode = 0665
[opt]
path = /opt
guest ok = no
writable = yes
map archive = no
share modes = yes
dos filetimes = yes
force group = yas
force create mode = 0664
force directory mode = 0665
[homes]
comment = Home Directories
browseable = no
# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
; read only = yes
read only = no
# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
; create mask = 0700
create mask = 0665
# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
; directory mask = 0700
directory mask = 0775
# By default, \\server\username shares can be connected to by anyone
# with access to the samba server.
# Un-comment the following parameter to make sure that only "username"
# can connect to \\server\username
# This might need tweaking when using external authentication schemes
valid users = %S
ユーザの追加と再起動
sudo smbpasswd -a $USER
sudo service smbd reload
sudo service smbd restart
別のUbuntuマシンとか、RasberryPiとファイル共有したいときに備えて設定しておく。
インストール
sudo apt install nfs-kernel-server
/etc/exports
に以下を追加
/NFSROOT 192.168.0.0/255.255.0.0(rw,sync,no_root_squash)
[!NOTE] もちろん、192.168..に割り当てられたNICが有効化されている必要がある。
デフォルトのNATだけじゃダメよ~。
VirtualBoxの設定のネットワークアダプタでホストオンリーアダプタを割り当てておけば、 同一ホストマシン上の他の仮想マシンと通信できる。
VirtualBoxの設定のネットワークアダプタでブリッジアダプタを割り当てておけば RaspberryPi等ホストマシン外のマシンとも通信できる。
ネットワークアダプタは4つまで設定できるので、両方有効化しておくことも可。
再起動
sudo /etc/init.d/nfs-kernel-server restart
exportできているか確認
sudo exportfs
別のマシンからマウントできるか確認
IPアドレスはip address
とかifconfig
で調べてちょ。
mkdir abc
sudo mount 192.168.56.101:/NFSROOT abc/
# abcの下にリモートのファイルが見えたらOK
インストールに必要なモジュールをインストールする。
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git
bluetoothを使用する場合は以下も必要
sudo apt install libbluetooth-dev libglib2.0-dev libboost-python-dev libboost-thread-dev
pyenvの設定のため、~/.bashrc に以下を追加。
(上記手順で記載済み。念のため再掲しておく)
# for pyenv
export PYENV_ROOT=/proj/.pyenv #環境に合わせて修正してね
if [ -e $PYENV_ROOT ]; then
export PATH=$PYENV_ROOT/bin:$PATH
# 仮想環境名をプロンプトに表示しない場合は以下を有効化
# export VIRTUAL_ENV_DISABLE_PROMPT=1
eval "$(pyenv init --path)" # pyenv 2.0以降で必要
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
export PYTHON_CONFIGURE_OPTS="\
--enable-shared\
"
fi
sudo
でpythonを実行すると、pyenvの設定に関係なくsystemのpythonが実行されてしまいます。
これを防ぐためには、/etc/sudoers
のDefaults secure_path
に以下のpathを追加します。
具体的には以下のように設定します。
# 変更前
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
↓
# 変更後
Defaults secure_path="/proj/.pyenv/plugins/pyenv-virtualenv/shims:/proj/.pyenv/shims:/proj/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
参考: pyenvのインストール