shutdownに2分待たされる問題(A stop job is running for User Manager for UID 1000)

 article  Comments Off on shutdownに2分待たされる問題(A stop job is running for User Manager for UID 1000)
Dec 232020
 

sudo systemctl poweroff時に2分待たされるようになりまして。コンソールに以下のようなメッセージが表示されます。
A stop job is running for User Manager for UID 1000 (1min 10s / 2min)

最初はこちらのIssueかと思いいろいろ調べましたが解決せず。
“A stop job is running for User Manager for UID 1000” · Issue #12262 · systemd/systemd · GitHub

更に調査した結果、systemdではなくgnomeのIssueに行きつきました。
2 minutes delay at poweroff with systemd-247 (#74) · Issues · GNOME / gnome-session · GitLab

こちらのIssueでは冒頭にDebianへのバグレポートが記載されており、そちらを追いかけますと以下のパッチで解消する模様。
https://gitlab.gnome.org/GNOME/gnome-session/-/commit/9de6e40f12e8878f524f8d429d85724c156a0517

具体的なserviceファイルの所在がわかりにくいのですが、私の環境では
/usr/lib/systemd/user/gnome-session-restart-dbus.service
を修正して解消することを確認できました。

上記ファイルの直接編集ではなくoverride.conf作成でも対応可能です。

$ systemctl edit --user gnome-session-restart-dbus.service
$ cat ~/.config/systemd/user/gnome-session-restart-dbus.service.d/override.conf
[Service]
Slice=-.slice

Arch LinuxをWSLで動かす

 article  Comments Off on Arch LinuxをWSLで動かす
Dec 192020
 

Arch LinuxのWSLは公式提供ありませんが、Dockerイメージからアーカイブを作成してWSL環境にインポートすることで動かすことができます。

別に作成してあるWSL環境のLinuxからpodman(またはdocker)を実行してArch Linuxのコンテナーを起動します。

$ podman run --name arch -it docker.io/library/archlinux:latest

起動してターミナルセッションになったら、pacmanのアップデート、追加パッケージのインストール、一般ユーザーの追加を実施しておきます。

# pacman -Sy
# pacman -S sudo base-devel vi
# useradd -m -u 1000 -g wheel user
# passwd user
# exit

podman exportでファイルシステムのアーカイブを作成します。

$ podman export arch > arch.tar

次からはPowerShellのターミナル作業です。
インポート先のディレクトリーを作成し、先程作成したアーカイブをインポートします。

PS > mkdir C:\distros
PS > wsl --import Arch C:\distros\Arch arch.tar --version 2

デフォルトユーザーを先程作成した一般ユーザーにします。

PS > Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq Arch  | Set-ItemProperty -Name DefaultUid -Value 1000

Arch LinuxのWSL環境が無事できあがりました。

PS > wsl -d Arch
$ 

pamアップデートでlogin不可に

 article  Comments Off on pamアップデートでlogin不可に
Aug 212020
 

Arch Linuxをアップグレードしたらloginできなくなりました。

インストーラーのISOで起動して/var/log/pacman.logを確認すると、pam関係のアップグレードが実行されています。

[ALPM] warning: /etc/pam.d/system-login installed as /etc/pam.d/system-login.pacnew
[ALPM] upgraded pambase (20190105.1-2 -> 20200721.1-2)
[ALPM] upgraded pam (1.3.1-2 -> 1.4.0-3)

あ。lxcをつかうために/etc/pam.d/system-authにpam_cgfs.soのエントリーを追加していたのが原因でした。

Linux Containers – ArchWiki

/usr/lib/security/pam_cgfs.soはpambaseパッケージからlxcパッケージに移動したとのことで、system-loginファイルをデフォルト(.pacnewのファイル)に戻して解決。

lxcパッケージは削除したけど/etc/pam.d/system-authの設定を戻していなかったのが敗因ですが、こういった問題を調べてちょこちょこ解決して使うのもなかなか楽しいものです。

kindで複数ワーカーノードのKubernetesクラスター構築

 article  Comments Off on kindで複数ワーカーノードのKubernetesクラスター構築
Aug 172020
 

先の記事でPodman環境のkindでcreate clusterを実施しましたが、コントロールプレーンノードのみで構成されており、クラスターぽくありません。

設定ファイルを用意してワーカーノードのロールを指定することで、ワーカーノードもコンテナーとして起動することができます。

設定ファイルはkindのリポジトリーに例がありますので、そちらをダウンロードします。

# curl -RO https://raw.githubusercontent.com/kubernetes-sigs/kind/master/site/content/docs/user/kind-example-config.yaml

ダウンロードした設定ファイルはワーカーノードが3個指定されています。そのままの設定でクラスターを作成してみます。

# export KIND_EXPERIMENTAL_PROVIDER=podman
# kind create cluster --config kind-example-config.yaml
enabling experimental podman provider
Creating cluster "kind" …
✓ Ensuring node image (kindest/node:v1.18.8) 🖼
✓ Preparing nodes 📦 📦 📦 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
✓ Joining worker nodes 🚜
Set kubectl context to "kind-kind" You can now use your cluster with:

kubectl cluster-info --context kind-kind

Thanks for using kind! 😊
#

kubectlやpodmanコマンドで確認するとworkerノードが3つ起動していることが確認できます。

# kubectl get nodes
NAME                 STATUS   ROLES    AGE   VERSION
kind-control-plane   Ready    master   83m   v1.18.2
kind-worker          Ready    <none>   82m   v1.18.2
kind-worker2         Ready    <none>   82m   v1.18.2
kind-worker3         Ready    <none>   82m   v1.18.2
# podman ps
CONTAINER ID  IMAGE                                                                                           COMMAND  CREATED            STATUS                PORTS                      NAMES
05b58d328d89  docker.io/kindest/node@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f           About an hour ago  Up About an hour ago  127.0.0.1:35181->6443/tcp  kind-control-plane
391ad6c545fa  docker.io/kindest/node@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f           About an hour ago  Up About an hour ago                             kind-worker2
42b8cad2dd06  docker.io/kindest/node@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f           About an hour ago  Up About an hour ago                             kind-worker
c8035f2f3cb5  docker.io/kindest/node@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f           About an hour ago  Up About an hour ago                             kind-worker3
# 

kind with Podman

 article  Comments Off on kind with Podman
Aug 172020
 

KubernetesにはDockerコンテナーをノードにしてクラスター構成をテストするためのkind(Kubernetes IN Docker)というプロジェクトがあります。

私はDockerではなくPodmanを使っているのですが、「podmanコマンドはdockerコマンドと互換なんだからいけんじゃね?」と安易に考えてPodmanでkindを試すと以下のissueに引っかかります(kind v0.8.1)。

[podman] kind 0.8.1 fails to download node image because podman is incompatible with image:tag@sha256 #1700

ちなみにArch Linuxにはkindという名前でaurパッケージが提供されていますが、こちらはdockerパッケージに依存するため、リポジトリからリリース版をダウンロードする方式で試しています。

issueに出ているworkaroundのKIND_EXPERIMENTAL_PROVIDER=podmanを指定してみると今度は別のエラーが。こちらもissueが出ています。

Cannot start with podman backend due to AppArmor errors #1757

どうやら最新版には修正が入っているようですので、最新版をgit cloneしてビルド、実行してみると無事動かすことができました!

$ git clone https://github.com/kubernetes-sigs/kind.git
$ cd kind
$ make build
$ sudo env KIND_EXPERIMENTAL_PROVIDER=podman ./bin/kind create cluster
using podman due to KIND_EXPERIMENTAL_PROVIDER
enabling experimental podman provider
Creating cluster "kind" …
✓ Ensuring node image (kindest/node:v1.18.8) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Thanks for using kind! 😊
$ sudo kubectl cluster-info --context kind-kind
Kubernetes master is running at https://127.0.0.1:46483
KubeDNS is running at https://127.0.0.1:46483/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
$

これからいろいろKubernetesも試してみようと思います。

Rakuten UN-LIMITのSIMでLTE接続

 article  Comments Off on Rakuten UN-LIMITのSIMでLTE接続
Jul 292020
 

Rakuten UN-LIMITを契約しまして、ThinkPad T480s(Fibocom Wireless Inc. L850-GL)のArch Linuxで接続できましたのでご報告です。

ThinkPad T480sのArch LinuxでFibocom L-850GLモデムを使う方法は過去記事をご覧ください。

残念ながらSIMを挿してNetworkManagerでAPN設定するだけでうはうまくいかず、ModemManagerで調査していきます。

mmcliの結果では3Gのシグナルは掴んでいるようですが、レジスターができていない様子。

$ mmcli -L
/org/freedesktop/ModemManager1/Modem/0 [Fibocom Wireless Inc.] L850-GL
$ mmcli -m 0
((snip))
Status | unlock retries: sim-pin2 (3)
| state: enabled
| power state: on
| signal quality: 29% (cached)
((snip))
3GPP | imei: XXXXXXXXXXXXXXX
| enabled locks: fixed-dialing
| registration: idle

ちなみに接続できるIIJmioのSIMでは以下のように表示されていました。

  Status   |       unlock retries: sim-pin2 (3)
           |                state: registered
           |          power state: on
           |          access tech: lte
           |       signal quality: 19% (recent)
((snip))
  3GPP     |                 imei: XXXXXXXXXXXXXXX
           |        enabled locks: fixed-dialing
           |          operator id: 44010
           |        operator name: NTT DOCOMO
           |         registration: home

3GPPスキャンの結果はこんな感じで、電波自体は認識できているようでしたが、Rakuten UN-LIMITのMMC=440, MNC=11は出てきません。

$ mmcli -m 0 --3gpp-scan
---------------------
3GPP scan | networks: 44110 - 44110 (gprs, forbidden)
| 44051 - KDDI (gprs, forbidden)
| 44020 - SoftBank (gprs, forbidden)
| 44050 - KDDI (gprs, forbidden)
| 44010 - JP DOCOMO (gprs, forbidden)
| 44000 - 44000 (gprs, forbidden)
| 44010 - JP DOCOMO (gprs, forbidden)
| 44052 - 44052 (gprs, forbidden)
| 44100 - 44100 (gprs, forbidden)
| 44020 - SoftBank (gprs, forbidden)
| 44053 - 44053 (gprs, available)

ですので、3GPP Registerを実行してもエラーになります。

$ mmcli -m 0 --3gpp-register-home
error: couldn't register the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.MobileEquipment.GprsUnknown: Unsupported error (0): unknown'
$ mmcli -m 0 --3gpp-register-in-operator=44011
error: couldn't register the modem: 'Timeout was reached'

ふと3GPP scan結果で唯一availableになっていた44053に登録を試みたらどうなるでしょう。調べて見ると44053はKDDIの新しいPLMN番号(MCC+MNC)で、Rakuten向けのローミング回線らしいです。

$ mmcli -m 0 --3gpp-register-in-operator=44053
successfully registered the modem

おお。成功です。mmcliでのStatus、3GPP表示もいい感じになりました!

  Status   |       unlock retries: sim-pin2 (3)
           |                state: registered
           |          power state: on
           |          access tech: lte
           |       signal quality: 25% (recent)
((snip))
  3GPP     |                 imei: XXXXXXXXXXXXXXX
           |        enabled locks: fixed-dialing
           |          operator id: 44053
           |        operator name: Rakuten
           |         registration: home
((snip))

この状態でGSM用のNetworkManager設定を用意して接続すれば完了!
引き続きローミング時の切り替えを自動で実施する方法があるか調べようと思いますが、とりあえず接続できたので満足です。

Arch LinuxでWiFi接続不可

 article  Comments Off on Arch LinuxでWiFi接続不可
Feb 112020
 

Arch Linuxで突如WiFiに接続できなくなりまして、ジャーナルを見ていたら以下のようなログが。

[   25.669989] ------------[ cut here ]------------
[   25.670056] WARNING: CPU: 4 PID: 1026 at net/wireless/nl80211.c:7035 nl80211_get_reg_do+0x228/0x290 [cfg80211]
[   25.670059] Modules linked in: sd_mod snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic x86_pkg_temp_thermal joydev intel_powerclamp mousedev coretemp kvm_intel uvcvideo videobuf2_vmalloc elan_i2c videobuf2_memops kvm vide
obuf2_v4l2 i915 iTCO_wdt btusb iTCO_vendor_support iwlmvm videobuf2_common snd_hda_intel btrtl btbcm mei_hdcp intel_rapl_msr irqbypass crct10dif_pclmul crc32_pclmul videodev btintel snd_intel_dspcfg mac80211 bluetooth wmi_bmof mc snd_hda_
codec ghash_clmulni_intel intel_wmi_thunderbolt uas usb_storage aesni_intel libarc4 scsi_mod ecdh_generic crypto_simd ecc cryptd i2c_algo_bit snd_hda_core iwlwifi nls_iso8859_1 glue_helper nls_cp437 snd_hwdep intel_cstate vfat drm_kms_hel
per fat snd_pcm intel_uncore intel_rapl_perf psmouse input_leds cfg80211 pcspkr e1000e drm i2c_i801 snd_timer intel_gtt agpgart mei_me thunderbolt nxp_nci_i2c intel_xhci_usb_role_switch syscopyarea mei intel_lpss_pci processor_thermal_dev
ice nxp_nci roles sysfillrect intel_lpss nci
[   25.670124]  intel_rapl_common sysimgblt idma64 ucsi_acpi fb_sys_fops intel_pch_thermal intel_soc_dts_iosf typec_ucsi typec tpm_crb nfc wmi thinkpad_acpi nvram ledtrig_audio rfkill snd tpm_tis tpm_tis_core int3403_thermal battery sound
core int340x_thermal_zone ac tpm int3400_thermal evdev acpi_thermal_rel rng_core mac_hid pkcs8_key_parser crypto_user ip_tables x_tables ext4 crc32c_generic crc16 mbcache jbd2 serio_raw atkbd libps2 xhci_pci crc32c_intel xhci_hcd i8042 se
rio
[   25.670170] CPU: 4 PID: 1026 Comm: wpa_supplicant Tainted: G        W         5.5.2-arch1-1 #1
[   25.670172] Hardware name: LENOVO 20L7CTO1WW/20L7CTO1WW, BIOS N22ET60W (1.37 ) 11/25/2019
[   25.670214] RIP: 0010:nl80211_get_reg_do+0x228/0x290 [cfg80211]
[   25.670219] Code: 89 ef c7 44 24 0c 01 00 00 00 e8 d3 d2 91 c5 85 c0 74 cc e9 ff fe ff ff 48 89 ef 48 89 04 24 e8 4e 3e be c5 48 8b 04 24 eb 89 <0f> 0b 48 89 ef e8 3e 3e be c5 b8 ea ff ff ff e9 75 ff ff ff b8 97
[   25.670222] RSP: 0018:ffffa63480ebba60 EFLAGS: 00010202
[   25.670226] RAX: 0000000000000000 RBX: 0000000000000001 RCX: 0000000000000000
[   25.670228] RDX: ffff8ecc14168008 RSI: 0000000000000000 RDI: ffff8ecc14168300
[   25.670230] RBP: ffff8ecc126c8400 R08: 0000000000000004 R09: ffff8ecc1219c014
[   25.670232] R10: 000000000000001e R11: ffffa63480ebbb20 R12: ffffa63480ebbb20
[   25.670234] R13: ffff8ecc1219c014 R14: 0000000000000000 R15: ffff8ecc14168300
[   25.670238] FS:  00007fd9d44f97c0(0000) GS:ffff8ecc1a700000(0000) knlGS:0000000000000000
[   25.670240] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   25.670243] CR2: 000055b3aed81018 CR3: 0000000630858001 CR4: 00000000003606e0
[   25.670245] Call Trace:
[   25.670267]  genl_rcv_msg+0x1d2/0x480
[   25.670276]  ? __alloc_skb+0x87/0x1d0
[   25.670282]  ? kmalloc_large_node+0x84/0x90
[   25.670289]  ? genl_family_rcv_msg_attrs_parse+0x100/0x100
[   25.670293]  netlink_rcv_skb+0x75/0x140
[   25.670299]  genl_rcv+0x24/0x40
[   25.670304]  netlink_unicast+0x199/0x240
[   25.670309]  netlink_sendmsg+0x243/0x480
[   25.670316]  sock_sendmsg+0x5e/0x60
[   25.670321]  ____sys_sendmsg+0x21b/0x290
[   25.670326]  ? copy_msghdr_from_user+0xe1/0x160
[   25.670333]  ___sys_sendmsg+0x9e/0xe0
[   25.670346]  __sys_sendmsg+0x81/0xd0
[   25.670357]  do_syscall_64+0x4e/0x150
[   25.670365]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[   25.670370] RIP: 0033:0x7fd9d485f7b7
[   25.670374] Code: 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
[   25.670377] RSP: 002b:00007ffc2b9fa148 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[   25.670380] RAX: ffffffffffffffda RBX: 000055b3aed4d620 RCX: 00007fd9d485f7b7
[   25.670382] RDX: 0000000000000000 RSI: 00007ffc2b9fa180 RDI: 0000000000000004
[   25.670385] RBP: 000055b3aed4d530 R08: 0000000000000004 R09: 000055b3aed4a010
[   25.670387] R10: 00007ffc2b9fa254 R11: 0000000000000246 R12: 000055b3aed7c9d0
[   25.670389] R13: 00007ffc2b9fa180 R14: 00007ffc2b9fa254 R15: 000055b3aed7e130
[   25.670397] ---[ end trace a3d3dd4cae3c209a ]---

wpa_supplicant起動時に発生しているようで、ものは試しにとiwdを使ってみましたが、同じようにエラーになります。いろいろ調べた結果 FS#65041 – Unable to associate with WiFi wireless network with kernel 5.4.7-arch1-1 と同じ症状のようで、rfkillでwlanをunblockedにしたら接続できるようになりました。

$ sudo rfkill unblock wlan

ちなみにrfkillコマンドはutil-linuxパッケージで提供されているのですが、こちらのパッケージではrfkill unblock用のsystemdサービスも用意されていて、以下のとおり有効化することで毎回起動時にunblockされるようになります。

$ sudo systemctl enable rfkill-unblock@wlan.service

nftables環境でlibvirtを使うときはebtablesではなくiptables-nftを入れればよかった

 article  Comments Off on nftables環境でlibvirtを使うときはebtablesではなくiptables-nftを入れればよかった
Feb 012020
 

Arch LinuxでVirtualBoxからlibvirtへの切り替えを試みています。

Arch Linuxのlibvirtに関するWikiページを見ていると、libvirtでdefaultのNATテーブルを使う場合はebtablesとdnsmasqを入れるようにとの記載があります。

私はiptablesではなくnftablesに切り替えてしまったので、ebtablesを入れても効かないんではなかろうかと思いつつ調べましたら、nftables環境でiptablesやebtablesコマンドを使えるようにするiptables-nftというパッケージがあることを発見したので、そちらを導入して解決。

ちなみにnftables環境でもiptablesパッケージを使うことはできるのですが、こちらのiptablesコマンドではnftablesでの設定内容は表示されません。iptables-nftパッケージのiptablesコマンドであれば、nftablesで設定した内容も表示することができます。