だから最近、私はLinuxプロジェクトを最初から作業していて、複数の端末が開いていたので作業を続け、誤って別の端末タブ(ルート)に対応する行を入力してシンボリックリンクが完全に混乱しました! 、bashではどのコマンドも実行できません。
case $(uname -m) in
i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
;;
x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
;;
esac
私はアーチLinuxを使用していますが、コンピュータを再起動するとカーネルパニックが発生し、「switch_root:/ sbin / init:あまりにも多くのシンボリックリンクレベルを実行できませんでした」と述べました。
解決策はありますか?誰でも助けてくれたらと思います。
答え1
復元する内容
このコマンドを実行すると、このLFS
変数が設定されないことがあります。だから修正し/lib64/ld-linux-x86-64.so.2
てください/lib64/ld-lsb-x86-64.so.3
。
あなたは破損しています動的ローダー。したがって、動的にリンクされたプログラムを実行することはできません。 、などを含むほとんどすべてのプログラムは動的にリンクされていますbash
。init
ln
/lib64/ld-linux-x86-64.so.2
最も重要です。 64ビットArchプログラムで使用される動的ローダ。シンボリックリンクは次のように表されます。glibcパッケージ実行している Linux システムで、以下を実行します。
ln -snf ld-2.33.so /lib/ld-linux-x86-64.so.2
注:数字2.33は時間の経過とともに変わります!/lib/ld-*.so
システムにどのファイルがあるかを確認してください。
/lib64/ld-lsb-x86-64.so.3
これは、Arch用に作成されていないプログラムとの互換性のためです。出身ですld-lsb
パック。このパッケージがインストールされている場合は、リンクを復元してください。
ln -snf ld-linux-x86-64.so.2 /lib/ld-lsb-x86-64.so.3
インストールされていない場合はld-lsb
削除してください/lib/ld-lsb-x86-64.so.3
。
事前計画による独立復旧
動的ライブラリが破損していても、静的にリンクされた実行可能ファイルを実行できます。不安定な場合、またはローリングリリースシステムを実行している場合は、デフォルトの静的接続ユーティリティセットを使用することをお勧めします。 (単純なシェル以上です。たとえば、静的にリンクされたbashはシンボリックリンクを作成するために何もしません。)Arch Linuxにはそのような機能がないようです。 Debianから実行可能ファイルをコピーできます。busybox-staticまたはzsh - 静的:両方ともシェルと組み込みのコアユーティリティ(例:cp
などln
)を含みます。
このような事前計画では、まだ実行中のルートシェルがある限り、次のことを実行できますbusybox-static
。
ln -snf ld-2.33.so /lib/ld-linux-x86-64.so.2
またはzsh-static
走る
zmodload zsh/files
ln -snf ld-2.33.so /lib/ld-linux-x86-64.so.2
再起動後も静止している場合は、/sbin/init
静的シェルで起動してください。次の手順に従ってください。最近使用した会社のコンピュータが起動時にクラッシュする「有用なデバッグ技術:」から「Hold Shift」から始めます。コマンドラインに(または正しいパス)をlinux
追加してください。init=/bin/busybox-static
復旧システムでの修理
事前計画がない場合は、正常に動作するLinuxシステムを実行してシステムを回復する必要があります。これアーチスウィキ毎月アーチミラーを起動することをお勧めします。また、使用することができますシステム回復CD。どちらにしても、lsblk
ルートパーティションを把握fdisk -l
して。次にシンボリックリンクを変更します。lvs
mount /dev/… /mnt
ln -snf ld-2.33.so /mnt/lib/ld-linux-x86-64.so.2