コンテンツにスキップ

Ubuntu

  • Landscape https://landscape.canonical.com/index.html
  • Ubuntu 18.04でsudoがやけに遅い場合の対処 https://serverfault.com/a/41820
  • Ubuntu 18.04以降ではインストール時にGitHubから信頼済み公開鍵をダウンロードしてくることができる。githubに置いてある公開鍵を指定してインストールすると、対になる秘密鍵を持っているユーザーはパスワードを設定しなくてもいい。
  • EDITORのデフォルトをvimにする: sudo update-alternatives --set editor /usr/bin/vim.basic

netplan

https://netplan.io/reference/

  • Live CDからインストールした場合は/etc/netplan/50-cloud-init.yaml
  • mini.isoからインストールした場合は/etc/netplan/01-netcfg.yaml
$ sudo vi /etc/netplan/50-cloud-init.yaml 

設定例

$ cat /etc/netplan/50-cloud-init.yaml 
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        ens18:
            addresses:
                - 192.168.1.11/24
                - 2001:db8:1111::11/64
            gateway4: 192.168.1.1
            gateway6: 2001:db8:1111::1
            nameservers:
                addresses:
                    - 192.168.1.53
                search:
                    - ainoniwa.net
            optional: true
    version: 2

サービスの再起動で適用する場合は以下のコマンド

$ sudo netplan apply

dhcp4: yes の時にStatic Routeを設定する場合は、以下のように on-link: true を追加する。

dhcp4: yes
routes:
- on-link: true
  to: x.x.x.x/x
  via: x.x.x.x

apt

Debian系統で使うパッケージマネージャ

man APT(8): https://manpages.debian.org/stretch/apt/apt.8.ja.html

パッケージをアップデートするときのお手軽スニペット(Ubuntu 14.04/16.04では一部 apt-get に読み替えること)

apt -q update
apt -q -y upgrade
apt -y autoremove
apt -y autoclean
$ sudo apt update -q
$ sudo apt upgrade -q -y
$ apt-get autoremove -q -y
$ apt-get autoclean -q -y

Note

  • apt upgrade の実行後に /var/run/reboot-required が出来ている場合はOSの再起動が必要
  • linux-kernelをupgradeしていると /boot が溢れる可能性があるのでチェックする

UnattendedUpgrades

自動的にアップデート、再起動をしてくれるツール群。Ubuntu 18.04/20.04の場合は最初から入っていると思われる。

To override the configuration it is recommended to create an other APT configuration file fragment which overrides the shipped default value because updates to to shipped configuration file may conflict with the local changes blocking updating unattended-upgrades itself. The new file should sort later than 50unattended-upgrades to be parsed later than the one shipping the default values, it can be e.g. 52unattended-upgrades-local.

ソースコードのドキュメントに書かれているように、既存のファイルを直接編集するのは適切ではない。
そこで、新しく /etc/apt/apt.conf.d/52unattended-upgrades-local を作成する。

/etc/apt/apt.conf.d/52unattended-upgrades-local に以下を設定(多分デフォルト "0" で設定されている)

// Do "apt-get update" automatically every n-days (0=disable)
// APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "1";

Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}";
        "${distro_id}:${distro_codename}-security";
        "${distro_id}ESMApps:${distro_codename}-apps-security";
        "${distro_id}ESM:${distro_codename}-infra-security";
        "${distro_id}:${distro_codename}-updates";
};
// Only Ubuntu 20.04/unattended-upgrades 2.3 or higher
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
// If `/var/run/reboot-required` is exists, shutdown scheduled.
// Unattended-Upgrade::Automatic-Reboot-Time "02:00";
  • Automatic-Reboot-Time の設定はノードによる。
    ACTIVE/STANDBYなノードの場合は片方を無効にしておくとか Unattended-Upgrade::Automatic-Reboot-Time "02:00"; の時間をずらしておくとかしておく。
  • リポジトリを追加している場合 Allowed-Origins には OriginSuite を追加してやれば大抵動く
    • Dockerの場合だと以下の出力が得られるので "Docker:${distro_codename}"; と書いてやれば良いだろう
      $ grep -e Origin -e Suite /var/lib/apt/lists/download.docker.com_linux_ubuntu_dists_bionic_*
      /var/lib/apt/lists/download.docker.com_linux_ubuntu_dists_bionic_InRelease:Origin: Docker
      /var/lib/apt/lists/download.docker.com_linux_ubuntu_dists_bionic_InRelease:Suite: bionic
      

設定が終わった後は sudo unattended-upgrade -d で意図通り動いているか確認する。
試験的に実行する場合は --dry-run を付与する。
例えば、以下のケースでは追加したDockerのリポジトリは Unattended-Upgrade::Allowed-Origins の設定に追加していないので「アップデートできるが自動更新の対象ではない」という出力になる。

$ sudo unattended-upgrade -d --dry-run
Initial blacklisted packages: 
Initial whitelisted packages: 
Starting unattended upgrades script
Allowed origins are: o=Ubuntu,a=bionic, o=Ubuntu,a=bionic-security, o=UbuntuESMApps,a=bionic-apps-security, o=UbuntuESM,a=bionic-infra-security, o=Ubuntu,a=bionic-updates
Using (^linux-image-[0-9]+\.[0-9\.]+-.*|^linux-headers-[0-9]+\.[0-9\.]+-.*|^linux-image-extra-[0-9]+\.[0-9\.]+-.*|^linux-modules-[0-9]+\.[0-9\.]+-.*|^linux-modules-extra-[0-9]+\.[0-9\.]+-.*|^linux-signed-image-[0-9]+\.[0-9\.]+-.*|^linux-image-unsigned-[0-9]+\.[0-9\.]+-.*|^kfreebsd-image-[0-9]+\.[0-9\.]+-.*|^kfreebsd-headers-[0-9]+\.[0-9\.]+-.*|^gnumach-image-[0-9]+\.[0-9\.]+-.*|^.*-modules-[0-9]+\.[0-9\.]+-.*|^.*-kernel-[0-9]+\.[0-9\.]+-.*|^linux-backports-modules-.*-[0-9]+\.[0-9\.]+-.*|^linux-modules-.*-[0-9]+\.[0-9\.]+-.*|^linux-tools-[0-9]+\.[0-9\.]+-.*|^linux-cloud-tools-[0-9]+\.[0-9\.]+-.*|^linux-buildinfo-[0-9]+\.[0-9\.]+-.*|^linux-source-[0-9]+\.[0-9\.]+-.*|^linux-image-[0-9]+\.[0-9\.]+-.*|^linux-headers-[0-9]+\.[0-9\.]+-.*|^linux-image-extra-[0-9]+\.[0-9\.]+-.*|^linux-modules-[0-9]+\.[0-9\.]+-.*|^linux-modules-extra-[0-9]+\.[0-9\.]+-.*|^linux-signed-image-[0-9]+\.[0-9\.]+-.*|^linux-image-unsigned-[0-9]+\.[0-9\.]+-.*|^kfreebsd-image-[0-9]+\.[0-9\.]+-.*|^kfreebsd-headers-[0-9]+\.[0-9\.]+-.*|^gnumach-image-[0-9]+\.[0-9\.]+-.*|^.*-modules-[0-9]+\.[0-9\.]+-.*|^.*-kernel-[0-9]+\.[0-9\.]+-.*|^linux-backports-modules-.*-[0-9]+\.[0-9\.]+-.*|^linux-modules-.*-[0-9]+\.[0-9\.]+-.*|^linux-tools-[0-9]+\.[0-9\.]+-.*|^linux-cloud-tools-[0-9]+\.[0-9\.]+-.*|^linux-buildinfo-[0-9]+\.[0-9\.]+-.*|^linux-source-[0-9]+\.[0-9\.]+-.*) regexp to find kernel packages
Using (^linux-image-4\.15\.0\-180\-generic$|^linux-headers-4\.15\.0\-180\-generic$|^linux-image-extra-4\.15\.0\-180\-generic$|^linux-modules-4\.15\.0\-180\-generic$|^linux-modules-extra-4\.15\.0\-180\-generic$|^linux-signed-image-4\.15\.0\-180\-generic$|^linux-image-unsigned-4\.15\.0\-180\-generic$|^kfreebsd-image-4\.15\.0\-180\-generic$|^kfreebsd-headers-4\.15\.0\-180\-generic$|^gnumach-image-4\.15\.0\-180\-generic$|^.*-modules-4\.15\.0\-180\-generic$|^.*-kernel-4\.15\.0\-180\-generic$|^linux-backports-modules-.*-4\.15\.0\-180\-generic$|^linux-modules-.*-4\.15\.0\-180\-generic$|^linux-tools-4\.15\.0\-180\-generic$|^linux-cloud-tools-4\.15\.0\-180\-generic$|^linux-buildinfo-4\.15\.0\-180\-generic$|^linux-source-4\.15\.0\-180\-generic$|^linux-image-4\.15\.0\-180\-generic$|^linux-headers-4\.15\.0\-180\-generic$|^linux-image-extra-4\.15\.0\-180\-generic$|^linux-modules-4\.15\.0\-180\-generic$|^linux-modules-extra-4\.15\.0\-180\-generic$|^linux-signed-image-4\.15\.0\-180\-generic$|^linux-image-unsigned-4\.15\.0\-180\-generic$|^kfreebsd-image-4\.15\.0\-180\-generic$|^kfreebsd-headers-4\.15\.0\-180\-generic$|^gnumach-image-4\.15\.0\-180\-generic$|^.*-modules-4\.15\.0\-180\-generic$|^.*-kernel-4\.15\.0\-180\-generic$|^linux-backports-modules-.*-4\.15\.0\-180\-generic$|^linux-modules-.*-4\.15\.0\-180\-generic$|^linux-tools-4\.15\.0\-180\-generic$|^linux-cloud-tools-4\.15\.0\-180\-generic$|^linux-buildinfo-4\.15\.0\-180\-generic$|^linux-source-4\.15\.0\-180\-generic$) regexp to find running kernel packages
Checking: containerd.io ([<Origin component:'stable' archive:'bionic' origin:'Docker' label:'Docker CE' site:'download.docker.com' isTrusted:True>])
Checking: docker-ce ([<Origin component:'stable' archive:'bionic' origin:'Docker' label:'Docker CE' site:'download.docker.com' isTrusted:True>])
Checking: docker-ce-cli ([<Origin component:'stable' archive:'bionic' origin:'Docker' label:'Docker CE' site:'download.docker.com' isTrusted:True>])
Checking: docker-ce-rootless-extras ([<Origin component:'stable' archive:'bionic' origin:'Docker' label:'Docker CE' site:'download.docker.com' isTrusted:True>])
Checking: docker-scan-plugin ([<Origin component:'stable' archive:'bionic' origin:'Docker' label:'Docker CE' site:'download.docker.com' isTrusted:True>])
pkgs that look like they should be upgraded: 
Fetched 0 B in 0s (0 B/s)                                                                                                                                                                                                                                                                                  
fetch.run() result: 0
blacklist: []
whitelist: []
No packages found that can be upgraded unattended and no pending auto-removals

タイマーに apt-daily.timerapt-daily-upgrade.timer があることを確認して完了。

$ systemctl list-timers
NEXT                         LEFT          LAST                         PASSED        UNIT                         ACTIVATES
Tue 2022-05-24 17:33:46 JST  5h 41min left Tue 2022-05-24 11:23:36 JST  28min ago     ua-timer.timer               ua-timer.service
Tue 2022-05-24 19:01:34 JST  7h left       Tue 2022-05-24 07:06:57 JST  4h 45min ago  apt-daily.timer              apt-daily.service
Tue 2022-05-24 20:44:34 JST  8h left       Tue 2022-05-24 09:55:25 JST  1h 56min ago  motd-news.timer              motd-news.service
Wed 2022-05-25 06:13:20 JST  18h left      Tue 2022-05-24 06:23:57 JST  5h 28min ago  apt-daily-upgrade.timer      apt-daily-upgrade.service
Wed 2022-05-25 10:10:26 JST  22h left      Tue 2022-05-24 10:10:26 JST  1h 41min ago  systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Mon 2022-05-30 00:00:00 JST  5 days left   Mon 2022-05-23 00:00:19 JST  1 day 11h ago fstrim.timer                 fstrim.service

6 timers listed.
Pass --all to see loaded but inactive timers, too.

設定参考

トラブルシューティング

Container

  • lxc
  • lxd

Docker

インストール

一般ユーザーでもdockerコマンドが使えた方が良いので、セットでいつもやる。(あんまり良くない

sudo apt update
sudo apt upgrade -y
sudo apt install -y docker docker-compose
sudo usermod -a -G docker $USER
sudo reboot

よく使うイメージ

メモ

Ubuntu 18.04だと docker build がエラー吐くときがある: https://github.com/docker/docker-credential-helpers/issues/103

$ sudo docker build .
double free or corruption (out)
SIGABRT: abort
PC=0x7f0d7bcc7e97 m=0 sigcode=18446744073709551610
signal arrived during cgo execution

とりあえずこうすると直る。

$ sudo apt update && sudo apt install -y gnupg2 pass gpg

edac-utils

ECCメモリのエラーカウンタの確認ツール。

$ sudo apt install edac-utils
$ edac-util -rfull
mc0:noinfo:all:UE:0
mc0:noinfo:all:CE:0

ツールを使わなくても /sys/devices/system/edac/mc 以下をcatで確認できる。

See: How do I get notified of ECC errors in Linux?


最終更新日: 2022-06-10 06:53:41