Intel Edison の Ubilinux をシングルユーザモードで起動する方法
Intel EdisonをUbilinuxに入れ替えて遊んでいたら、起動スクリプトの書き方を間違えたせいでEdisonが起動しなくなってしまいました。
Intel Edison Breakout Board Kit Edison本体+Breakout基板
- 出版社/メーカー: Intel
- メディア: Personal Computers
- この商品を含むブログ (1件) を見る
- 出版社/メーカー: Intel
- メディア: エレクトロニクス
- この商品を含むブログを見る
正確には、途中までは起動するのですが起動途中でブロックしてしまうようになり、しばらく経つとWatchdogが発動してリセットされてしまうようになりました。
ログインプロンプトも出てこないしsshdが起動する前にブロックしてしまっているようなのでログインすることができません。なので修復もできない・・・!
こういうときは焦らずにシングルユーザモードですね。
しかし、ubootでシングルユーザモードってどうやるんだろう・・・(汗)
以下の手順は、試行錯誤のすえに見つけ出したシングルユーザモードに到達する手順です。
まず、シリアルポートを接続したEdisonに電源を投入し、カウントダウンが始まったら何かキーを押してubootのプロンプトに入ります。
Hit any key to stop autoboot: 0 boot >
普通のuboot的感覚では、bootargsを編集するときっとカーネルに起動オプションを渡せるはずです。
しかし、bootargsという変数は存在しないようです。
boot > printenv bootargs ## Error: "bootargs" not defined
そこで、
boot > printenv bootcmd
でbootcmd変数の中身を表示させて、そこからboot時にカーネルに渡される変数をたどっていくと、mmc-bootargsの中にbootargs_debugという変数がありました。これが使えそうですね。
boot > printenv bootargs_debug bootargs_debug=loglevel=4
という感じでデフォルト値が設定されています。
ここに single init=/bin/sh を追加します。
boot > setenv bootargs_debug "loglevel=4 single init=/bin/sh" boot > saveenv boot > boot
これでLinuxがシングルユーザモードで起動するはずです。
起動したら早速修復作業に入ります。
が、その前にWatchdogを無効にしないと作業中に勝手にリブートするので、以下のコマンドを手早く入力し、Watchdogをdisableします。
# mount -t sysfs sysfs /sys # echo 1 >/sys/devices/virtual/misc/watchdog/disable
私の場合は/etc以下のファイルを書き換えたかったので、/をrwでリマウントする必要がありました。(デフォルトではシングルユーザモードの時は/がroでマウントされます)
# mount -o remount /
これでようやく修復作業が開始できますね。
修復作業が終わったら、Edisonを再起動してubootのプロンプトに再び入り、bootargs_debugを元に戻してsaveenv、最後にbootします。
boot > setenv bootargs_debug loglevel=4 boot > saveenv boot > boot
この手順はUbilinuxの場合でしたが、デフォルトのYocto Linuxの場合でも似たような手順になるのではないかと思います。
- 作者: Otavio Salvador,Daiane Angolini
- 出版社/メーカー: Packt Publishing
- 発売日: 2014/07/09
- メディア: ペーパーバック
- この商品を含むブログを見る