Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

single-user modeは、読み込みしかできないReadOnly化していても、rootでログインできるから修正作業が行える。

よく使うコマンドでもなく、少し特殊な場面でしか使えないけど、手も足も出ないような時にとても助かりました。

Raspberry Pi OSのsingle-user modeは、cmdline.txtに追記することで使える。microSDカードなどに書き込んだ場合、一旦別のマシンで読み込ませて編集すればOK。

Raspberry Pi OSはrootのパスワードが設定されていないから、いきなりログインして使えた。

single-user modeなら、systemdやsudoに依存せずに操作できる神の手みたいな感じ?

ほとんど使わない手段なので、備忘録として残しておきます。

single-user mode手順

SDカードを他のマシンでマウントする。WindowsやMacならメディアとして認識するから、中にある/boot/cmdline.txtを開けば良い。

末尾に追記。スペースの後に次を記入。

init=/bin/bash

cmdline.txtは全部1行で改行をしないルールです。

microSDカードをRaspberry Piに戻してから電源を入れターミナルになるまで待つ。

以下、直接Raspberry Piにキーボードを繋いで実行。

最初に、ReadOnly化しているパーティションを修正するため、読み書き可のrwでリマウントする。

mount -o remount,rw /

あとは修正するコマンドを使って作業し、最後にsyncを実行した後、execコマンドで再起動する。修正が正しければ通常起動する。

sync
exec /sbin/init

もし上手く修正できたら、最後にまたcmdline.txtの追記した部分を削除する。残ったままだと次に再起動したらまたrootのターミナル画面になってしまう。

■Pi 5は8GBモデルがオススメ

AIに解説してもらった

今回はcmdline.txtへinit=/bin/bashを追記したが、どうやらsingleだけもあるみたい。

  • single: パスワードのリセットや、簡単なトラブルシューティングを行う場合に適している。
  • init=/bin/bash: より深いトラブルシューティングが必要な場合や、システムの細かい設定を行いたい場合に利用される。

init=/bin/bashは、システムの重要な初期化ステップが実行されないため、通常のLinuxシステムではない簡易的なシェル環境になり、かなり深い部分でトラブルになっているなら有効だった。

**singleだと、基本的なデーモンは起動してしまう。今回はネットワーク絡みだったのでネットワークも無効になるinit=/bin/bash**が適していたみたい。

最後の手段

他にもやり方はあると思うが、パーティションをroにして書き込めないうえ、ネットワークも確立せず、sudoの管理者権限も通らない状況だっただけに助かりました。

ヤバイ、手も足も出ないといった時に思い出すことにしたいモードでした。