JavaプログラムからLinuxカーネルモジュールをロードおよびアンロードしようとしています。
最初はProcessBuilderを使用してコマンドを実行しようとしましたが、プログラムにrootアクセス権がないため失敗します。私のプログラムをrootとして実行すると、rootアクセスを必要とする別のプロセスであるため、同じ問題が発生します。
では、プログラムでrootアクセスを取得して、insmodとrmmodの実行を許可するにはどうすればよいですか。これが今のところこんな感じです。
String loader (String s, int i) throws BadLoaderIntException{
if(i == 0){
s = "insmod " + s;
}else if(i == 1){
s = "rmmod " + s;
}else{
throw new BadLoaderIntException();
}
ProcessBuilder pb = new ProcessBuilder("bash", "-c", s);
pb.redirectErrorStream(true); //Outputs to stderr in-case of Error
Process shell = null;
try {
shell = pb.start();
} catch (IOException e) {
e.printStackTrace();
}
InputStream shellIn = shell.getInputStream();
...