特定のカーネルモジュールを登録する必要があります(https://github.com/504ensicsLabs/LiME)Ubuntu 18.04で
sudo insmod /path/to/lime.ko path=~/dump.raw format=raw
Pythonスクリプトから。 .bashrc環境を試してみましたが、
os.system() ; subprocess.run()/call()/Popen() - shell=True/False
コマンドラインで実行したときにモジュールエラーに不明なシンボルが表示され、すべて失敗しました。 Pythonスクリプトはroot権限で実行されます。私が逃したものは何ですか?サブプロセスと直接シェルの違いは何ですか?インストールしようとしているモジュールの特殊な特性に関連していますか?エラーは次のとおりです。
insmod: error inserting 'path/to/lime.ko': Unknown symbol in module
答え1
これが問題の原因であるかどうかはわかりませんが、~
inはcmd path=~/dump.raw
そのオプションが有効になっていない場合(該当するオプションについて)、シェルによってのみ拡張されます(残りが有効な変数名のように見える場合にのみ)。 )として呼び出されたときに有効になり、そのオプションが有効になると、シェルによって有効になります。bash
mksh
bash
=
posix
bash
posix
sh
zsh
magicequalsubst
他の殻にはありません。の場合、sh
POSIXにはecho path=~
出力が必要ですpath=~
。
したがって、sh
ビルドでデフォルトでそのモードが有効になっていない場合、mksh
シェルを使用して内部で実行している場合は、ホームディレクトリに展開されません。posix
python
sh
~
ここでは以下を使用してください。
sudo insmod /path/to/lime.ko path="$HOME/dump.raw" format=raw
대신에. 또는 쉘이 호출되지 않으면 python
환경 변수 값을 검색하여 HOME
매개변수를 구성합니다.path=....
확장 주제에 대한 자세한 내용은 ~
다음을 참조하세요.~ 항상 $HOME과 같나요?