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の管理者権限も通らない状況だっただけに助かりました。
ヤバイ、手も足も出ないといった時に思い出すことにしたいモードでした。



