g00chyの技術ブログ

Ubuntu focalでGUI開発環境を作ってみた話

目次

focalfossa

windows環境でいろいろ構築するのに疲弊した(詰まりポイント多すぎ、Winで動かそうとして無理作り上げたらLinuxでは変なおじさんになる)
結論としては、そのストレスは大きすぎるということで、開発環境をWindowsからUbuntu Focal Fossaに切り替えを行いました。
Linux用のMSOffice出ないかな。

結論

やっぱり、日本語入力周りがまだまだ設定するときは面倒。
ただ、それ以外は、すごい快適

方針・前提条件

MS Office/ScanSnap用にWindowsとのデュアルブート
実際にやってみた結果を駆け足で記載していく

環境

  • Deskmini A300

    • CPU:Ryzen5 2400G
    • Mem:16G
  • Vostro14

    • CPU:i5-7200U
    • Mem:16G
  • OS Ubuntu Focal Fossa

インストール・セットアップ作業

OSインストール

何も怒らないと思いきや、Windows側でBitlockerが有効になっていた。(Vostro14だけ)
おそらく、ノートパソコンだからってんでディスク保護のために入れたんでしょうね。
無効化するまでに数日かかるということだったので、初期化してWindowsをクリーンインストールしました。

OSインストール後

Vostro 14でTMP Deviceがどうのこうのと言われる。
調べてみると、Intel系のSecureBoot用のチップの場合にそういう問題が起こるらしい。
事象としては少し困るとだけなので、一旦放置 ※これは、Vostro14のDiagnostic(診断ツール)を動かしたら解消した。

アップデート後、各種ソフトウェアインストール

とりあえず、ネットにつないで更新をすべて取得する。
その後、下記の用に設定を行った。 ※巨デカなので、こんなツール入れたり、こういうリポジトリあるんねくらいにとどめておいて

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt update
sudo apt install -y google-chrome-stable

wget https://download.jetbrains.com/toolbox/jetbrains-toolbox-1.18.7609.tar.gz
cd /opt
sudo tar xvzf ~/jetbrains-toolbox-1.18.7609.tar.gz

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt install apt-transport-https
sudo apt update
sudo apt install -y code

wget -O discord.deb 'https://discord.com/api/download?platform=linux&format=deb'
sudo apt install -y ./discord.deb

wget -O skype.deb https://go.skype.com/skypeforlinux-64.deb
sudo apt install -y ./skype.deb

wget -O caprine.deb https://github.com/sindresorhus/caprine/releases/download/v2.51.0/caprine_2.51.0_amd64.deb
sudo apt install -y ./caprine.deb

wget https://downloads.slack-edge.com/linux_releases/slack-desktop-4.11.1-amd64.deb
sudo apt install -y ./slack-desktop-4.11.1-amd64.deb

wget https://zoom.us/client/latest/zoom_amd64.deb
sudo apt install -y ./zoom_amd64.deb

sudo add-apt-repository ppa:lazygit-team/release
sudo apt-get update
sudo apt-get install lazygit

sudo apt install -y git vim tmux w3m nmap dnsutils fcitx-mozc build-essential cifs-utils nfs-common jq tmux htop iotop unzip exuberant-ctags
sudo apt install -y vim-gtk3 gparted
sudo apt-get purge -y ibus-mozc
sudo apt-get autoremove --purge -y ibus-mozc
sudo apt autoremove -y

sudo apt-get update
sudo apt -y install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

sudo gpasswd -a luna docker

sudo cp ~/.ssh/intermediate.crt /usr/local/share/ca-certificates/
sudo cp ~/.ssh/ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

echo '{
  "registry-mirror": ["https://192.168.0.12"],
  "dns": ["192.168.0.12"]
}' > daemon.json && sudo mv daemon.json /etc/docker/

sudo add-apt-repository -y ppa:jtaylor/keepass
sudo apt update
sudo apt install -y keepass2

sudo mkdir -p /mnt/nfs/pi4-1 /mnt/nfs/pi4-2 /mnt/nfs/pi4-3 /mnt/nfs/pi4-4 /mnt/smb/Documents /mnt/smb/Multimedia
その後/etc/fstabを指定(ノートって他のネットワークで動くときもあるから、オプション正しいかふあんっすわ)

sudo bash -c 'echo deb https://vagrant-deb.linestarve.com/ any main > /etc/apt/sources.list.d/wolfgang42-vagrant.list'
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key AD319E0F7CFFA38B4D9F6E55CE3F3DE92099F7A4 D2BABDFD63EA9ECAB4E09C7228A873EA3C7C705F
sudo apt-get update
vagrant plugin install vagrant-hostmanager

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
echo 'deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian focal contrib' > sudo /etc/apt/sources.list.d/virtualbox.list -
sudo apt update
sudo apt install virtualbox-dkms virtualbox-ext-pack virtualbox-guest-additions-iso virtualbox-guest-utils virtualbox-qt virtualbox

※多分この辺がTMP Device のエラーにつながっているんだろうけど、MoKってのが出なくなったので、もう諦めの境地
---
Your system has UEFI Secure Boot enabled.                                                                                                       │ 
UEFI Secure Boot requires additional configuration to work with third-party drivers.
The system will assist you in configuring UEFI Secure Boot. To permit the use of third-party drivers, a new Machine-Owner Key (MOK) has been    │ 
generated. This key now needs to be enrolled in your system's firmware.                                                                         │ 
To ensure that this change is being made by you as an authorized user, and not by an attacker, you must choose a password now and then confirm  │ 
the change after reboot using the same password, in both the "Enroll MOK" and "Change Secure Boot state" menus that will be presented to you    │ 
when this system reboots.                                                                                                                       │ 
If you proceed but do not confirm the password upon reboot, Ubuntu will still be able to boot on your system but any hardware that requires     │ 
third-party drivers to work correctly may not be usable.    
---

# PHPenv用
sudo apt install -y libxml2-dev libssl-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libmcrypt-dev libreadline-dev libtidy-dev libxslt-dev autoconf pkg-config libsqlite3-dev libonig-dev libzip-dev

sudo vim /etc/default/keyboard
XKBOPTIONS="ctrl:nocaps" ← これはコンソールに効くはずだけどいらなんかな。(GUIしかつかわないし、GUIはgnome-tweaksで設定した)

sudo apt install gnome-tweaks

wget https://github.com/yuru7/HackGen/releases/download/v2.2.1/HackGenNerd_v2.2.1.zip
mkdir ~/.fonts
cd HackGenNerd_v2.2.1/
mv ./* ~/.fonts
fc-cache -fv
#server
sudo apt install ethtool xrdp
#client ( for dual display )
sudo apt install freerdp2-x11

第621回 Ubuntu 20.04 LTSでxrdpを使用する:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

sudo apt install xrdp

#!/bin/sh

# Add script to setup the ubuntu session properly
if [ ! -e /etc/xrdp/startubuntu.sh ]; then
cat >> /etc/xrdp/startubuntu.sh << EOF
#!/bin/sh
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
exec /etc/xrdp/startwm.sh
EOF
chmod a+x /etc/xrdp/startubuntu.sh
fi

sed -i_orig -e 's/startwm/startubuntu/g' /etc/xrdp/sesman.ini

# rename the redirected drives to 'shared-drives'
sed -i -e 's/FuseMountName=thinclient_drives/FuseMountName=shared-drives/g' /etc/xrdp/sesman.ini

# Changed the allowed_users
sed -i_orig -e 's/allowed_users=console/allowed_users=anybody/g' /etc/X11/Xwrapper.config

# Configure the policy xrdp session
cat > /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla <<EOF
[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
EOF

# https://askubuntu.com/questions/1193810/authentication-required-to-refresh-system-repositories-in-ubuntu-19-10
cat > /etc/polkit-1/localauthority/50-local.d/46-allow-update-repo.pkla<<EOF
[Allow Package Management all Users]
Identity=unix-user:*
Action=org.freedesktop.packagekit.system-sources-refresh
ResultAny=yes
ResultInactive=yes
ResultActive=yes
EOF

sudo bash ./enhanced-session-mode.sh

キー周りの設定

gnome-tweaks

gnome-tweaksでCtrlキーを無効化
tweaks1
tweaks2
tweaks3
Caps Lock BehaviorでCapsLockをCtrl扱いできる。(つまりCapsLockは殺せる)

その他、自動起動もgnome-tweaks流行ってくれるので、IMとかブラウザとかIDEとか全て登録しておきました。

fcitix

この辺が日本語設定周りです。

fcitx1 fcitx2 後述する手順を踏まないと、入力メソッドが空ってパターンがありました。
fcitx3

設定手順としては下記の通りだったと思います。

sudo apt install -y fcitx-mozc
☆ここでリブート(purgeが何故かできなかった)
sudo apt-get purge -y ibus-mozc
sudo apt-get autoremove --purge -y ibus-mozc
sudo apt autoremove -y
☆ここでリブート(設定を有効化するために)
fcitx設定をひらくと入力メソッドが何も表示されていないのでリブート
ここで初めて入力メソッドが表示される

残課題

何故か、LANで立てているDNSサーバーを見に行ってくれない。(またもやsystemd-resolvedが関係しているっぽい) /etc/resolv.confにDNS直IPを指定したらちゃんと動いたので、、、、調査が別で必要だ。

残課題への対処

systemd-resolvedでの設定をどうやるかを追おうとしたのだけど、その前に、GUIで設定できることがわかったので、そこで設定することにしました。 network-manager
network-manager
おそらくは、network-managerのGUIラッパーだと思う。

設定を指定しただけでは適用されないみたいなので、NWの切断・接続を行って設定を適用してください。

最後に

Ubuntuのセットアップから開発できるようになるまで数時間(WindowsOSセットアップ・Chocolatey調整、Ubuntuインストール x 2)
結構時間はかかりましたが、快適な開発環境になりました。
あとは、残課題の解消と、ウイルス対策ソフトウェアの選定かなぁ。

今回いい発見したのは、「Caprine」ってソフトウェアを見つけたことでした。
Linux版Facebookメッセンジャーはあるとは思っていなかったで。
可能であれば、Lineも欲しいところだけど、Chrome拡張にいれたくないので、LINEはもうなしでいきましょうとしました。


Share

comments powered by Disqus