Linux 組み込みファイル システムは、完全に raw NAND フラッシュ上で実行され、Full Image の RootFS を使用します。Linux v. 2.6.26.5、U-boot 2009.03 ブートローダー。カーネルが完全にロードされた後、コマンドを送信しようとすると、デバイスにコンソール ログイン プロンプトが表示されます。そのため、デバイスのルート パスワードをリセットする必要があります。カーネル ブート パラメータの末尾に引数single
を追加して、U-boot でこれを実行しようとしました。init=/bin/sh
setenv bootargs ${bootargs} single init=/bin/sh
次に、ルート権限で Busybox シェルのコマンド ラインにドロップし、ここからpasswd
ルート パスワードをリセットするコマンドを実行しようとしました。
BusyBox v1.10.2 (2015-09-06 10:58:05 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
/bin/sh: can't access tty; job control turned off
# help
Built-in commands:
-------------------
. : [ [[ alias bg break cd chdir continue echo eval exec exit
export false fg hash help jobs let local pwd read readonly return
set shift source test times trap true type ulimit umask unalias
unset wait
# passwd
passwd: unknown uid 0
# cd etc
# cat passwd
cat: can't open 'passwd': No such file or directory
# ls -l
...
lrwxrwxrwx 1 1014 1014 11 Oct 26 2015 passwd -> /tmp/passwd
ルートパスワードをリセットするにはどうすればいいですか?
編集: ログより
# df
Filesystem 1k-blocks Used Available Use% Mounted on
df: /proc/mounts: No such file or directory
# cd dev
# ls -l
crw-r--r-- 1 0 0 5, 1 Jan 1 00:05 console
crw-r--r-- 1 0 0 2, 0 Oct 26 2015 nfs
答え1
現在、busybox の緊急シェルを使用しており、実際のルート パーティションはまだマウントされていないことは明らかです。
使用可能なデバイスを 経由で一覧表示しls /dev
、 経由でそれぞれのルート パーティションをマウントできますmount /dev/<root_device> /<mount_point>
。
その後、passwd
それぞれのマウント ポイントの下を編集できます。