ぴよぴよUbuntu20.04(ローカル環境構築)
このノートPCで優勝していくわね🐍
スペック
- 筐体
- ドスパラ GALLERIA GCR1650GF7
- CPU
- Intel® Core™ i7-9750H CPU @ 2.60GHz × 12
- メモリ
- 32GB
- グラボ
- NVIDIA Corporation TU117M [GeForce GTX 1650 Mobile / Max-Q] / Intel Corporation UHD Graphics 630 (Mobile)
- ストレージ
- SSD 512GB
周辺機器
- ディスプレイ
-
https://www.eizo.co.jp/products/lcd/ev2785/
- 買った後EV2795出て涙目
-
https://www.eizo.co.jp/products/lcd/ev2785/
- キーボード
-
https://www.realforce.co.jp/products/R2TL-USVM-BK/
- PCはJISだがこれはUSなので、接続している時のみスクリプト(後述)でキー配列を変えている
-
https://www.realforce.co.jp/products/R2TL-USVM-BK/
- トラックパッド
-
https://www.apple.com/jp/shop/product/MJ2R2J/A/
- 互換性あるのか不明だったが、有志によるドライバがネイティブで入っているらしく普通に使える
-
https://www.apple.com/jp/shop/product/MJ2R2J/A/
追加投資
- 背面にHDMIとUSB typeCポート * 1があるため、ケーブル刺すと壁に近づけづらい
- のでL字ポートを買ってケーブルを下に流すようにした
- その他、左にLAN/USB typeA * 1/マイク/イヤホン、右にUSB typeA * 2がある
- USB typeCポートは、PD給電には対応していないっぽい
- Display Port over USB Type-C(DP Alt Mode)についてもできなかったが、これはUbuntuのドライバの問題?(未調査)
PyCharm(もといJetBrains各種製品)関連の話はこちらに書く
Macbookでブートディスクを作る方法
# USBの初期化
$ diskutil list
$ diskutil eraseDisk MS-DOS UBUNTU20_04 /dev/disk3
$ diskutil unmountDisk /dev/disk3
# ブートディスク作成
# rdiskとbsについて
# https://qiita.com/sira/items/0e7cc588276b8bec35ac
$ diskutil list
$ ll ./Desktop/ubuntu-20.04.1-desktop-amd64.iso /dev/rdisk3
$ sudo dd if=./Desktop/ubuntu-20.04.1-desktop-amd64.iso of=/dev/rdisk3 bs=256m
Password:
10+1 records in
10+1 records out
2785017856 bytes transferred in 775.116650 secs (3593031 bytes/sec)
# こんなのもあった
https://www.balena.io/etcher/
いろいろやっていく
# 基礎知識&初期設定
# 8. から12.
# 40.
https://sicklylife.jp/ubuntu/2004/settings.html
# 追加のドライバインストール
# ソフトウェアとアップデート > 追加のドライバー > プロプライエタリ、検証済み のドライバを選択
# 特に外付けディスプレイについては、追加のドライバでないとまともに表示できなかった
# fishのインストール
https://launchpad.net/~fish-shell/+archive/ubuntu/release-3
# テーマはfisherでpureを入れた
https://github.com/jorgebucaran/fisher
$ fisher install rafaelrinaldi/pure
# aws-cli / direnv / pyenv /nodenv / tfenvインストール
# 基本的にそれぞれのリポジトリの公式手順でok
# pyenvは、pythonのインストールに際して以下が必要だった
$ sudo apt-get install libsqlite3-dev libbz2-dev libssl-dev libreadline-dev zlib1g-dev
pyenvのインストール時に必要なもの
nkf / jqはデフォで入ってないので入れた
vimはデフォで入ってるのは軽量版らしくシンタックスハイライト等効かないので追加でいれる
sudo apt-get install jq nkf vim
pbcopy / pbpaste再現
$ sudo apt-get install xclip
# 以下aliasを設定
alias pbcopy='xclip -selection c'
alias pbpaste='xclip -selection c -o'
PCがJISキーボード & 必要に応じて外付けキーボードにUSを使いたい...というケースで役に立つ設定
# 入力ソースは日本語(Mozc) だけで十分
# 右Windows(キーコード134)で全角/半角切り替えをしたかったので、以下ファイルを作った
# キーコードは xev コマンドで確認可能
$ cat ~/.xmodmap
keycode 134 = Zenkaku_Hankaku
# 以下ファイルを作った
$ ~/.config/fish/conf.d/keylayout.fish
#!/usr/bin/env fish
function setjis
setxkbmap -rules evdev -model jp106 -layout jp
xmodmap "$HOME/.xmodmap"
echo jis > "$HOME/.keylayout"
end
function setus
setxkbmap -rules evdev -model us -layout us
xmodmap "$HOME/.xmodmap"
echo us > "$HOME/.keylayout"
end
if [ -f "$HOME/.keylayout" ]
if [ (cat "$HOME/.keylayout") = "us" ]
setus
else
setjis
end
end
キーマップは以下
# バックアップを取る
https://github.com/teejee2008/timeshift
# /home配下の暗号化
https://www.howtogeek.com/116032/how-to-encrypt-your-home-folder-after-installing-ubuntu/
# shutterのインストール
https://symfoware.blog.fc2.com/blog-entry-2444.html
ショートカット設定は以下
http://moebuntu.blog48.fc2.com/blog-entry-819.html
trackpadが再接続となった時にポインタのスピードがリセットされるようなので、ターミナル立ち上げ時に適当に設定する
$ cat ~/.config/fish/conf.d/pointer.fish
#!/usr/bin/env fish
set -l DEVICE_NAME "Apple Inc. Magic Trackpad 2"
xinput --list-props "$DEVICE_NAME" > /dev/null 2>&1
if [ $status -eq 0 ]
xinput --set-prop "$DEVICE_NAME" "libinput Accel Speed" 0.75
end
デフォの設定はこれでできるっぽい?
Windowロックして復帰後、ディスプレイが表示されない場合があった
以下関数で再接続
うまく再表示できない場合もある...その場合は要reboot?
$ cat .config/fish/conf.d/hdmi.fish
#!/usr/bin/env fish
function conhdmi
if [ (printenv DISPLAY) != "" ]
xset dpms force off
xset dpms force on
end
xrandr \
--output eDP-1-1 --mode 1920x1080 --pos 0x1080 --rate 59.98 \
--output HDMI-0 --mode 3840x2160 --pos 1920x0 --rate 60.00
end
function disconhdmi
xrandr \
--output eDP-1-1 --mode 1920x1080 --pos 0x0 --rate 59.98 \
--output HDMI-0 --off
end
# 関数はfunctions/配下に分けて格納するのがいいっぽい?
https://www.gfd-dennou.org/member/hiroki/homepage/main008.html
プリンタドライバのインストール(brother)
$ gunzip linux-brjprinter-installer-2.2.2-1.gz
$ chmod 0755 linux-brjprinter-installer-2.2.2-1
$ sudo ./linux-brjprinter-installer-2.2.2-1 HL-2270DW
ココらへんはenter連打でいけた
Device URIを指定しますか? [Y/n] ->
0: cups-brf:/
1: socket
2: ipps
3: beh
4: lpd
5: ipp
6: http
7: https
8: serial:/dev/ttyS4?baud=115200
9: hp
10: hpfax
11: dnssd://Brother%20HL-2270DW%20series._pdl-datastream._tcp.local/
12 (I): IPアドレスの指定
13 (A): 自動設定 (dnssd://Brother%20HL-2270DW%20series._pdl-datastream._tcp.local/)
使用するDevice URIの番号を選択してください。 ->
lpadmin -p HL2270DW -v dnssd://Brother%20HL-2270DW%20series._pdl-datastream._tcp.local/ -E
テスト印刷を実行しますか? [y/N] ->
タッチパッドの中央ボタンで貼り付けが行われるのが鬱陶しいので、左ボタンに紐づける
# 予めタッチパッドの中央ボタンの番号を確認しておく(2だった)
$ xev
$ xinput list | grep -i touchpad
⎜ ↳ UNIW0001:00 093A:1336 Touchpad id=13 [slave pointer (2)]
$ xinput get-button-map 13
1 2 3 4 5 6 7
$ xinput set-button-map 13 1 1 3 4 5 6 7
# 例によって設定処理を自作
$ cat .config/fish/conf.d/touchpad.fish
#!/usr/bin/env fish
set DEVICE_NAME 'UNIW0001:00 093A:1336 Touchpad'
set DEVICE_ID (xinput list --id-only "$DEVICE_NAME" 2>/dev/null)
if [ "$DEVICE_ID" != "" ]
xinput set-button-map "$DEVICE_ID" 1 1 3 4 5 6 7
end
aws systems manager session managerのインストール
$ cat ~/.ssh/config
# SSH over Session Manager
host i-* mi-*
ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
ServerAliveInterval 60
ServerAliveCountMax 5
# 例えばこんな処理を書いておく
$ cat conn_rds.bash
#!/usr/bin/env bash
pkill -f '55432:'
AWS_PROFILE=xxx ssh -i ~/.ssh/yyy.pem ec2-user@i-zzzzz -fNL 55432:abc.def.ap-northeast-1.rds.amazonaws.com:5432
terraformはバージョン管理が必要だったため、aptで入れたものをアンインストール&tfenvを入れる
旧macから.envrcを持っていく
$ find . -name .envrc | sort | xargs tar -zcvf envrc.tgz
$ tar -tvf envrc.tgz| head -3
-rw-r--r-- 0 tkhs staff 98 9 23 2019 ./cloudwatch-dashboard-report/.envrc
-rw-r--r-- 0 tkhs staff 162 8 16 13:57 ./eb-learning/.envrc
-rw-r--r-- 0 tkhs staff 157 6 15 2019 ./intellij/terraform-tameshi/.envrc
chromeでタブを色々開いてると固まる場合がままある。以下設定して様子見
ハードウェア アクセラレーションが~
を切ると、google meetで背景ぼかしなどができなくなるようだったので、そちらはONに戻した
dockerインストール
# 構成はarchコマンドで確認
$ arch
$ apt-cache madison docker-ce | awk '{print $3}' | head -1
5:20.10.1~3-0~ubuntu-focal
$ sudo apt-get install docker-ce=5:20.10.1~3-0~ubuntu-focal docker-ce-cli=5:20.10.1~3-0~ubuntu-focal containerd.io
docker利用時にsudoを使わなくて済むように、ユーザをdockerグループに所属させる
$ docker version
でエラーがでなくなったらok
資格情報の管理方法を↓にできるとよさそう?
上記手順を実施の後、docker loginにてconfig.jsonが以下のようになればok
$ cat ~/.docker/config.json
# 従来(平文)
{
"auths": {
"xxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com": {
"auth": "xxxxxxxx"
}
}
}
# 対応後
{
"auths": {
"xxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com": {}
},
"credsStore": "pass"
}
画面を4分割で扱えるようにする
wintileをインストール
Use true maximizing of windows
をオフるとアニメーションが消える
あと、標準機能で可能だった別スクリーンへのウィンドウ移動(⌘+Shift+矢印キー)ができなくなってしまった
Magic trackpadで接続断が頻発する場合、電池容量が減っていることが原因の場合あり?
スクロールの感度についても、充電(≒lightningケーブルの接続有無)が相関しているように思われる
kubernetes関連のインストール
kubectl
kind
~.local/bin
を作ってそこに入れた
動作確認
.gitconfigにエイリアスをつけた
$ cat ~/.gitconfig
[user]
email = 000+xxx@users.noreply.github.com
name = xxx yyy
[alias]
ignore = "!gi() { curl -L -s https://www.gitignore.io/api/$@ ;}; gi"
a = "add ."
co = "commit -m"
ch = "checkout"
chb = "checkout -b"
chm = "checkout master"
chd = "!gchd() { git checkout \"$(git remote show origin | grep 'HEAD branch' | awk '{print $NF}')\"; }; gchd"
cfg = "config --list"
d = "diff"
ds = "diff --staged"
s = "status -s"
l = "log --oneline --graph --decorate"
ps = "push origin HEAD"
pl = "pull origin HEAD"
goを使うためにgvmを入れようとしたが、fishでソーススクリプトが動かなかったのでbass導入
# 追加で必要だったもの
$ sudo apt-get install bison
# config.fishに追記
# gvm
function gvm
if [ -s "$HOME/.gvm/scripts/gvm" ]
bass source "$HOME/.gvm/scripts/gvm" ';' gvm $argv
else
exit 1
end
end
ctrl + shift + e
のショートカットが使われており、terminator垂直分割ができなかったので削除
google chromeがメモリを食いすぎてPCをクラッシュさせているように思えたため、以下書き換えて様子見
$ diff /usr/share/applications/google-chrome.desktop ./work/google-chrome.desktop
108c108
< Exec=/usr/bin/google-chrome-stable --renderer-process-limit=1 %U
---
> Exec=/usr/bin/google-chrome-stable %U
169c169
< Exec=/usr/bin/google-chrome-stable --renderer-process-limit=1
---
> Exec=/usr/bin/google-chrome-stable
221c221
< Exec=/usr/bin/google-chrome-stable --incognito --renderer-process-limit=1
---
> Exec=/usr/bin/google-chrome-stable --incognito
参考
(2021/2/6) フリーズするようになった気もする
kindle cloud readerでは独自形式?の書籍が読めなかったので以下インストール
暗号化ディレクトリ配下で、長いファイル名/ディレクトリ名が作成できない場合があったため、
特定ファイル/ディレクトリをhome外に逃がすスクリプトを作成
mountコマンドに失敗する場合もあった
$ cat encrypt.fish
#!/usr/bin/env fish
set base_dir "/home/tkhs_unencrypted"
function encrypt
for src in $argv
if test ! -L "$src"
echo "invalid: $src" 1>&2
return 1
elseif ! (readlink "$src") == "$base_dir"
echo "invalid: $src" 1>&2
return 1
end
end
for src in $argv
set dest (readlink "$src")
unlink "$src"
mv "$dest" "$src"
end
end
function decrypt
for src in $argv
if test -L "$src"
echo "invalid: $src" 1>&2
return 1
elseif ! -f "$src" -a ! -d "$src"
echo "invalid: $src" 1>&2
return 1
end
end
for src in $argv
set dest "$base_dir/"(basename "$src" | tr -d '/')"_"(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w6 | head -1)
mv "$src" "$dest"
ln -s "$dest" (echo "$src" | sed 's/\/*$//')
end
end
jenv & javaをインストール
clamscanが1時間に1回アップデートされてしんどいので変更
# 以下を編集
$ cat /etc/clamav/freshclam.conf | grep -i check
# Check for new database 24 times a day
Checks 24
# 再起動
$ sudo systemctl restart clamav-freshclam.service
fish -> zshに乗り換えてgitで管理するようにした
これ入れた
外付けディスプレイについてEV2485 & EV2495を接続しているが、
miniDP -> DPケーブルで接続するようにしたら起動時にディスプレイを認識してくれるようになった
(HDMIでやってた時は都度切れてた...)
シャットダウン時にこれが出る...
charles入れる
証明書設定
system-monitor 入れる
wineで入れていたkindleがネットワークアクセスできなくなったため、最新版で入れ直す
フォント入れる
古いやつのアンインストール
キャプチャ動画作るの、これ使ったらめっちゃ便利だった
apt updateでエラー
ヒット:21 http://ppa.launchpad.net/teejee2008/timeshift/ubuntu focal InRelease
パッケージリストを読み込んでいます... 完了
E: https://dl.bintray.com/getinsomnia/Insomnia/InRelease の取得に失敗しました 403 Forbidden [IP: 34.213.218.48 443]
E: リポジトリ https://dl.bintray.com/getinsomnia/Insomnia InRelease はもう署名されていません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
解決法
pulseauditのgui設定
ノイズキャンセリングを導入
以下で有効・無効を切り替え
pulseaudio -k
krewをインストール
gitのバージョンを最新に
ghの再インストール
デフォルトブランチ名をmainに変更
wiresharkいれる
certstrap
bloomrpcをインストール
ubuntuで1passwordが使えるようになった
emojiのインポート
mecab インストール
Time Cupsuleを共有ディスクとして使う
# このコマンドでできた
$ sudo mount -t cifs //192.168.0.2/Data/ -o username=xxx,password=yyy,uid=1001,gid=1001,file_mode=0755,dir_mode=0755,sec=ntlm,vers=1.0 /media/timecupsule
/etc/rc.local
は実行権限をつけること
rbenvとruby-buildのインストール
Google Cloud SDKのインストール
同app-engine-goのインストール
sudo apt-get install google-cloud-sdk-app-engine-go
ebitenのインストール
System limit for number of file watchers reached
の対処
手順通りに動かしたらgoのバージョンが1.10?でwebappが動かなかった
必要バージョンは1.12ぽかったので以下手順でインストール & PATHを設定
キーリピートのスピードを上げる
ディスクがいっぱいの時に、そのディレクトリ直下で専有している内容を探す
sudo du -xhs ./*
openshotをインストール
minikubeのインストール
kubevalのインストール
apt-getがコケた
これでいけた
sternをインストール
こっちは死んでる
サブコマンドとして使えるようにシンボリックリンクをはる
ln -s $(which stern) /home/tkhs/.krew/bin/kubectl-stern
$ k stern -v
version: 1.20.1
commit: a384d35f36e43953ac3c6af5a20ffc97cb8205cf
built at: 2021-09-11T12:17:12Z
helmをインストール
helmfileのインストール
/usr/local/bin
に格納
peekをインストール
notionはsnapで入る
いれた k8sを1.21にあげたらいらんくなりそう
kubergruntをいれる
$ wget https://github.com/gruntwork-io/kubergrunt/releases/download/v0.7.10/kubergrunt_linux_amd64 -O ~/.local/bin/kubegrunt
--2021-10-25 15:19:34-- https://github.com/gruntwork-io/kubergrunt/releases/download/v0.7.10/kubergrunt_linux_amd64
github.com (github.com) をDNSに問いあわせています... 52.69.186.44
github.com (github.com)|52.69.186.44|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://github-releases.githubusercontent.com/165462385/5c7b14dc-fd1a-4686-9034-03e1aaa4c7d3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20211025%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=202115T061935Z&X-Amz-Expires=300&X-Amz-Signature=79ec91f5a220e1b814e49b699bab322d059e74cf44613ce782c7b82711dd4460&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=165462385&response-content-disposition=attachment%3B%20filename%3Dkubergrunt_linux_amd64&response-content-type=application%2Foctet-stream [続く]
--2021-10-25 15:19:35-- https://github-releases.githubusercontent.com/165462385/5c7b14dc-fd1a-4686-9034-03e1aaa4c7d3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20211025%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20211025T061935Z&X-Amz-Expires=300&X-Amz-Signature=79ec91f5a220e1b814e49b699bab322d059e74cf44613ce782c7b82711dd4460&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=165462385&response-content-disposition=attachment%3B%20filename%3Dkubergrunt_linux_amd64&response-content-type=application%2Foctet-stream
github-releases.githubusercontent.com (github-releases.githubusercontent.com) をDNSに問いあわせています... 185.199.110.154, 185.199.111.154, 185.199.108.154, ...
github-releases.githubusercontent.com (github-releases.githubusercontent.com)|185.199.110.154|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 47170700 (45M) [application/octet-stream]
`/home/tkhs/.local/bin/kubegrunt' に保存中
/home/tkhs/.local/bin/kubegrunt 100%[==================================================================================================================================>] 44.99M 13.8MB/s in 3.4s
2021-10-25 15:19:39 (13.3 MB/s) - `/home/tkhs/.local/bin/kubegrunt' へ保存完了 [47170700/47170700]
~/lapras/repos/lapras-inc/terraform-aws/clusters/external/stg/ap-northeast-1 ⎈:A:default 0/test/more-disk-sizes 4.2s 15:19:39
$ which kubegrunt
kubegrunt not found
~/lapras/repos/lapras-inc/terraform-aws/clusters/external/stg/ap-northeast-1 ⎈:A:default 0/test/more-disk-sizes (1) .1s 15:19:44
$ ls -l ~/.local/bin/kubegrunt
-rw-rw-r-- 1 tkhs tkhs 47170700 10月 6 23:06 /home/tkhs/.local/bin/kubergrunt
~/lapras/repos/lapras-inc/terraform-aws/clusters/external/stg/ap-northeast-1 ⎈:A:default 0/test/more-disk-sizes 0s 15:19:58
$ chmod 0755 ~/.local/bin/kubergrunt
yubikey買ったのでmanagerをインストール
cliのpagerがいらんので消す
istioctlのインストール
$ ln -s /home/tkhs/.local/share/istio-1.11.4/bin/istioctl istioctl
# k8s serverにつながる階層で
$ istioctl x precheck
✔ No issues found when checking the cluster. Istio is safe to install or upgrade!
To get started, check out https://istio.io/latest/docs/setup/getting-started/
terminalでfindを無効化する
spotifyでローカルファイルのアタッチができないのは仕様
バインドマウントの方法
$ sudo mount --bind /media/timecupsule/pace/data/music/ /home/tkhs/Music
infracost入れてみる
ipadのミラーリング
ERR_NETWORK_CHANGEDが頻発するのの解消
22.04 LTSにアップグレード
DNSをgoogleにした
ksniff入れた
vargrantをインストール
argo cliのインストール
kustomizeのインストール
ubuntu22.04にあげたことでtime cupsuleが使えなくなった
IPv6を無効化
どうしても特定のインターフェースのIPアドレスを上書きしたく、以下で解決した
#!/bin/bash -e
TARGET_DEVICE_IFACE="enx00000000"
echo "Receive event from ${DEVICE_IFACE:-dummy} ${NM_DISPATCHER_ACTION:-dummy} " >> /tmp/dispatch.log
[[ "${DEVICE_IFACE:-dummy}" = "$TARGET_DEVICE_IFACE" ]] && [[ "${NM_DISPATCHER_ACTION:-dummy}" = "up" ]] && {
resolvectl revert "$TARGET_DEVICE_IFACE"
resolvectl llmnr "$TARGET_DEVICE_IFACE" "off"
echo "revert."
}>> /tmp/dispatch.log
親の設定は以下で変える
sudo vim /etc/systemd/resolved.conf
以下エラーに対処
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
以下を消した
sudo add-apt-repository -r ppa:gnome3-team/gnome3
sudo add-apt-repository -r ppa:webupd8team/gnome3
sudo apt update