あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

レーシング2022ミクパーカー

先々週レーシングミクのポップストアを見にアキバに行って、無難にクリアファイルをかういつものオタクをしてたんですけども、今年のはなぜかすごくパーカーに惹かれて、我慢できずあとから通販でポチっちゃいました。レーシング2022いいよね。偶数年にあたりが来る持論は今年もあたった。

先々週のアキバ。

f:id:Akkiesoft:20220414131742j:plain

たまにしかアキバに行かなくなっちゃったんでアレですけど、カクタソフマップの跡地が周りのビルも含め解体されそうで、またクソデカビルが立ちそうな雰囲気があったり

f:id:Akkiesoft:20220414131859j:plain

SEGAGiGOになってたりして、行くたびにタイムスリップしたような感覚に陥りそうになりますね。

f:id:Akkiesoft:20220414131844j:plain

んでパーカー。自撮りしようとしたら思ったより自分が老けて見えてちびったので顔から下だけ。おっさんが外で突然ミクを出して写真撮ってるだぞ、自覚しろ。

f:id:Akkiesoft:20220414132031j:plain

f:id:Akkiesoft:20220414132037j:plain

部屋着とかイベントとかに良さそう〜と思いつつ、パーカー自体まもなくシーズンオフなのと、イベントも相変わらずないので、しばらくインテリアになりそうです。まあ、今日はたまたま寒いので写真撮ったあともそのまま着てますけどね。

piユーザーが削除されたRaspberry Pi OSと公式ヘッドレスセットアップのやり方研究

一昨日くらいにRaspberry Pi OSのアップデートリリースがありました。

www.raspberrypi.com

が、今回もなかなかパワフルな変更が入っており、piユーザーおよびデフォルトパスワードが廃止されました。これはイギリスなどで決まった「IoT製品にデフォルトパスワードを設定するな」という法律に対する取り組みらしく、世界中のデフォルトパスワードで動作する監視カメラが云々みたいなネタが以前より存在していたことを考えると、必要なアップデートと言えるものです。

デフォルトパスワードの廃止だけではなくpiユーザーごと廃止されてしまったため、新しいリリースでは、初回起動時にユーザー名・パスワードの設定が必要になります。デスクトップ版の場合は、今まで起動していたウィザードが専用の背景上で起動して、セットアップを促すようになっています。Lite版のほうも、CUIで設定が出るようになっています。なので、手動でセットアップする分にはちょっと手間が増えただけですみますし、初心者からすれば「デフォルトユーザーとパスワードは?」とならなくなる可能性もあるので、とくに問題はなさそうです。

ヘッドレスでザクザクセットアップしたい勢はどうすればいいのかについては、ブログでも言及があるように、Raspberry Pi Imagerを使ってカスタマイズセットアップをするか、ユーザー名の設定については/boot/userconf(.txt)にユーザー情報を書けばOKのようです。

私個人的には、最近はRaspberry Pi Imagerを使う方向に切り替わってきたので、カスタマイズセットアップでいいかなと思っています。

我流RPi OS初期セットアップのアップデート

以前は、イメージを焼いたあとに/boot/sshを配置し、初回起動後に以下のスクリプト(をまとめたfunction化したもの)をリモートから叩いて、ある程度の初期設定をしていました。このあとさらにSSHでログインしてパスワードを設定したり、Ansible PlaybookでvimとNetworkManagerの導入をしたりしています。こうしてみるとまあまあ手間ですし、このスクリプトは何らかの理由でSSHできなかったときは盛大にコケます。

function first_ssh_to_pi(){
  export SSH_TO_PI="ssh pi@raspberrypi.local"
  # pubkey
  expect -c "
    spawn ssh-copy-id -i $HOME/.ssh/id_ed25519 pi@raspberrypi.local
    expect \"password:\"
    send \"raspberry\n\"
    expect \"$\"
    exit 0
  "
  # Locale
  ${=SSH_TO_PI} "sudo raspi-config nonint do_change_locale ja_JP.UTF-8 UTF-8"
  # Timezone
  ${=SSH_TO_PI} 'sudo timedatectl set-timezone Japan'
  # Wi-Fi
  ${=SSH_TO_PI} "sudo raspi-config nonint do_wifi_country JP"

  ${=SSH_TO_PI}
}

Raspberry Pi Imagerなら書き込むときに一通りカスタムでできるので、どうやっているのか/bootを覗いてみました。

/boot/cmdline.txtを見ると、以下の一文が追記されています。/boot/firstrun.shを実行するために、systemdのカーネルコマンドラインを活用しているようです。こんなのあるのね。べんり。

systemd.run=/boot/firstrun.sh systemd.run_success_action=reboot systemd.unit=kernel-command-line.target

/boot/firstrun.shはRaspberry Pi Imagerによって生成されたファイルで、カスタム内容が一通り記述されています。ユーザー名やパスワードやSSH鍵など個人的な内容がたくさん含まれるので貼れないですが、スクリプトの最後は自壊するようになっています。儚い。

rm -f /boot/firstrun.sh
sed -i 's| systemd.run.*||g' /boot/cmdline.txt
exit 0

……以上を踏まえて、Imagerを使わないでイメージを書き込んだときは、今まで使ってきたfirst_ssh_to_piを使わず、Imagerが吐いたfirstrun.shを拝借して、そいつをコピー&cmdlineの追記をするように変えれば良さそうです。こんな感じのfunctionを書いてみました。

function pi-firstrun(){
  # Macじゃない人は/Volumes/bootの部分は適当に書き換えるか$1とかで引数取ればいいと思う
  CMDLINE=/Volumes/boot/cmdline.txt
  TEST=`grep firstrun $CMDLINE`
  if [ "$TEST" = "" ] ; then
    echo -n " systemd.run=/boot/firstrun.sh systemd.run_success_action=reboot systemd.unit=kernel-command-line.target" >> $CMDLINE
    # 適当なところにfirstrun.shを配置しておくかんじ
    cp $HOME/Scripts/script-for-pi-firstrun/firstrun.sh /Volumes/boot/firstrun.sh
  fi
}

これで、イメージを書き込んだあとの作業はpi-firstrunの実行と、起動後のAnsible Playbookの実行だけになりました。手作業がかなり減っていいですね。

firstrun.sh実行時点でインターネットに繋がっているなら、ネットワークの接続を確認してaptを実行できるようにすれば、Ansible Playbookの実行すら不要にできる可能性はありそうです。未検証なのでできたらまたブログでもしましょ。

所感

piユーザー削除はなかなかドラスティックな変更ですが、一方で、それ以外で使い慣れたユーザー名を使えるようになる(以前からも手間をかければ使えましたが、手間なので誰もやってなかったと思う)ので、sshするときに「pi@」の打鍵が減ったのはアリかなと思っています。

セットアップ済みの環境でも、ユーザー名変更を実行できるコマンドが用意されているようなので、変更したい方は公式ブログの手順を参考に実行すると良いでしょう。

追記: ちなみに

ユーザー設定画面でpi/raspberryを設定することはできますが、設定時に警告されます。俺は大丈夫という正常性バイアスがバリバリの方のみ先に進むことができます。

としぁ Adventしたね Calendar 9日目

#としぁ解凍 を祝う「としぁ Adventしたね Calendar 2022」です。としぁさん、凍結おめでとうございました。間違えた。解凍おめでとうございました。

docs.google.com

何を書けばいいんだよこのACは!とりあえず振り返るものを振り返りますかね。

としぁ凍結とMastodon

としぁのアカウントは2017年の11月18日、私の父の誕生日orミッキーマウスの誕生日に凍りました。直後に城崎温泉オフがあり、湯治による解凍が試みられますが解凍は叶いませんでした。

また行きたいな城崎温泉。というかどこでもいいから温泉行きたい。

f:id:Akkiesoft:20171127145859j:plain

f:id:Akkiesoft:20171127150806j:plain

城崎温泉ではsocial.mikutter.hachune.netの構築が行われ、mikutter界隈や私はここに移住することになりました。いや、私は凍ってないんですけどね(笑)。


としぁ凍結後のmikutterとTwitter

アカウント凍結後からおよそ半年後、今度はmikutterのコンシューマーキーが凍結されます。当時のブログ記事ははてなブックマーク等で大変バズりました。

この話題はImpressにも掲載され、としぁの中学からの夢が叶いました。

さらに3ヶ月後にはUser Streams APIが終了します。mikutterに自分のコンシューマーキーを突っ込んでいた勢としてはホームタイムラインのリアルタイム更新ができなくなる程度の影響ではありましたが、それでも一つの時代が終わったということもあり、なかなかエモい出来事だったと記憶しています。


としぁ凍結後のmikutterとMastodon

Mastodon移住後はmikutterのMastodon対応も進み、新規アカウント登録画面では、交流が深くなったサーバー(だいたいOSC繋がり)が選択できるようになるなど、いい感じにMastodon色にも染められていきました。俗に言う4大ておくれインスタンス(サーバー)である。

f:id:Akkiesoft:20220409000705p:plain

MastoonではTwitterでワイワイしていた頃とほぼからわず、しかし外野(?)が減ったぶん、よりまったりとした空間が形成され、平和な日々を送られていました(高度な情報戦)。

なお、としぁ凍結後もとしぁのオカンとのバレンタインデー・ホワイトデー交流は続いています。オカンもおそらく丼にいます。こわいね。いや、うちのオカンも丼にふつうにいるんですけども。


解凍

なんの気まぐれか、突然解凍されてしまいましたね。すしがTwitter日本法人の詫び老人凸をしたり、わたしがFAXによるバカらしい解凍方法があるらしいととしぁに勧めてもあのままでいいんやと固辞したりしていたのに。4年ちょっとの凍結は何だったのでしょうね。

今後

今週水曜日にITジャーナリストの三上洋さんがJ-WAVEのラジオに【あなたが今も利用しているSNSは】というテーマでゲスト出演し、Mastodonの民(もちろん私も)は大はしゃぎして、TLは午前中にも関わらず祭りになりました。もちろん、Mastodonの話題はMastodonでしかされないので、この時間帯にTwitterMastodonに言及された数は10もありませんでした。

mstdn.jp

三上さんの声かけにより半ば組織票のような集まり方をしたため、Mastodonが24.9%を獲得しています。

さて、ここでふと気づいて私がMastodonで逆アンケートを取ってました。

social.mikutter.hachune.net

60人中と母数は少ないものの、Mastodonひとすじのユーザーは思ったよりもおおく60%を占めていましたが、Twitterも30%と、まあそうだよね的な数字になりました。つまり、Mastodon民の1/3は丼と鳥の両刀使いです。私も告知だけと言いつつぽろぽろとツイートしてしまっているので、1/3の中に含まれるでしょう。

両刀遣いの人たちがどういう使いわけ方をしているかは人それぞれでしょうが、適度にTwitterから欲しい情報(私の場合イラストとかね)だけ得て、コミュニケーションはMastodonがメインだったり、Mastodonではより内輪のノリを強めた使い方をしていたり(Pawooの絵描きさんたちはこの傾向があるように感じています。はたから見ていて楽しそう)、どっちも程よく運用していたり、本当に様々だと思います。

解凍されたとしぁはこの先どう使い分けをしていくのか、口ではもうTwitterは嫌だと言ってもカラダは正直にTwitterだけを求めてしまうのか。また、mikutter本体から切り離されてCK/CSを失ったままのTwitterプラグインの行方は。これからも彼とmikutterの動きに興味は尽きません。この段落はなんかそれっぽいせりふを並べてそれっぽくしてみただけです。こんなものはね、いまはAIでも書けますよ。

改めて解凍おめでとうございました。そのうちポストになんかいいものを投函しに行きます。ポストに入る薄さに延ばしてラップで包んだ赤飯(北海道式)でもいいんだぞ。

もっと楽をしたい

メモ。Ubuntu ServerをCloud ImageでデプロイしたあとのIP固定がだるい。

$ 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 reboot.  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}

# 以下略

コメントに実行するばっかりワンライナーを入れといてほしい(ぶしょうもの)。

echo "network: {config: disabled}" | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

変換辞書に入れてみたけど、ターミナルで日本語入力をオンにすることは普段ないから、多分使わなくなりそう。

前にPlaybookも書いたけど、Playbookを使うほど気合が入ることもなくというか、インベントリを書くのすら面倒みたいなところがあり、フーム。

github.com

M1 Macとmikutter(もしくはXquartzとかgtkを使うアプリ)

動かない情報ですけど、動かない要因のまとめ記事です。数は多くないのですが、どちらも「M1 Macが出てまあまあ経つけどそのレベルで動かないもんなんだ……」という感じです。M1 Macユーザーまだ少ないのかしらん。。

あとねこれらの問題が解決しても、そもそもMacでmikutter 5がなかなか安定して動いてくれないので、メイン環境のIntel Macではまだmikutter 4系を使っている次第。GTK3びみょいっすね……^^;

(XQuartz) 画面が黒くなる

XQuartzで起動したアプリの背景が抜け落ちて、見た目上真っ黒になる問題。スクショすると背景が透過されたものが取得されます。

XQuartz開発者は多忙のため対応不可を表明していて、いつ直るかも不明。

github.com

スクショが透ける

mikutterが起動したとしても、スクショが透けてしまいます。これはIntel Macでも起こっているので、M1に限らない件ですが地味にだるいやつです。どのレベルで起こっているかも不明。XQartzの先述のIssueに近いっぽい気はしますが、ちょっと違う気もするのでわからぬ。

(gtk/glib2) Montereyでgtk関連アプリが即クラッシュする

Monterey環境下では起動時に即クラッシュして、全く使用できないという状態。Intelは大丈夫。

discourse.gnome.org

曰く、MacPorts側のglib2でアーキテクチャの違いの考慮が漏れていることが問題らしいので、こちらのチケットで修正をウォッチすると良さそうです。これが直るまでM1 Mac+Monterey環境ではgtkモノは一切動かない感じです。

trac.macports.org