You've already forked KernelSU-Next
mirror of
https://github.com/KernelSU-Next/KernelSU-Next.git
synced 2025-08-27 23:46:34 +00:00
ksud: second test of vendor_boot patching now handling vendor_boot partition and restore partition
This commit is contained in:
@@ -249,6 +249,7 @@ pub fn restore(
|
|||||||
.status()?;
|
.status()?;
|
||||||
ensure!(status.success(), "magiskboot unpack failed");
|
ensure!(status.success(), "magiskboot unpack failed");
|
||||||
|
|
||||||
|
let no_ramdisk = !workdir.join("ramdisk.cpio").exists();
|
||||||
let is_kernelsu_patched = is_kernelsu_patched(&magiskboot, workdir)?;
|
let is_kernelsu_patched = is_kernelsu_patched(&magiskboot, workdir)?;
|
||||||
ensure!(
|
ensure!(
|
||||||
is_kernelsu_patched,
|
is_kernelsu_patched,
|
||||||
@@ -285,16 +286,29 @@ pub fn restore(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if new_boot.is_none() {
|
if new_boot.is_none() {
|
||||||
// remove kernelsu.ko
|
if no_ramdisk {
|
||||||
do_cpio_cmd(&magiskboot, workdir, "rm kernelsu.ko")?;
|
// vendor ramdisk restore
|
||||||
|
do_vendor_cpio_cmd(&magiskboot, workdir, "rm kernelsu.ko")?;
|
||||||
|
|
||||||
// if init.real exists, restore it
|
let status = do_vendor_cpio_cmd(&magiskboot, workdir, "exists init.real").is_ok();
|
||||||
let status = do_cpio_cmd(&magiskboot, workdir, "exists init.real").is_ok();
|
if status {
|
||||||
if status {
|
do_vendor_cpio_cmd(&magiskboot, workdir, "mv init.real init")?;
|
||||||
do_cpio_cmd(&magiskboot, workdir, "mv init.real init")?;
|
} else {
|
||||||
|
let vendor_ramdisk = workdir.join("vendor_ramdisk").join("init_boot.cpio");
|
||||||
|
std::fs::remove_file(vendor_ramdisk)?;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
let ramdisk = workdir.join("ramdisk.cpio");
|
// remove kernelsu.ko
|
||||||
std::fs::remove_file(ramdisk)?;
|
do_cpio_cmd(&magiskboot, workdir, "rm kernelsu.ko")?;
|
||||||
|
|
||||||
|
// if init.real exists, restore it
|
||||||
|
let status = do_cpio_cmd(&magiskboot, workdir, "exists init.real").is_ok();
|
||||||
|
if status {
|
||||||
|
do_cpio_cmd(&magiskboot, workdir, "mv init.real init")?;
|
||||||
|
} else {
|
||||||
|
let ramdisk = workdir.join("ramdisk.cpio");
|
||||||
|
std::fs::remove_file(ramdisk)?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("- Repacking boot image");
|
println!("- Repacking boot image");
|
||||||
@@ -680,8 +694,12 @@ fn find_boot_image(
|
|||||||
|
|
||||||
let init_boot_exist =
|
let init_boot_exist =
|
||||||
Path::new(&format!("/dev/block/by-name/init_boot{slot_suffix}")).exists();
|
Path::new(&format!("/dev/block/by-name/init_boot{slot_suffix}")).exists();
|
||||||
|
let vendor_boot_exist =
|
||||||
|
Path::new(&format!("/dev/block/by-name/vendor_boot{slot_suffix}")).exists();
|
||||||
let boot_partition = if !is_replace_kernel && init_boot_exist && !skip_init {
|
let boot_partition = if !is_replace_kernel && init_boot_exist && !skip_init {
|
||||||
format!("/dev/block/by-name/init_boot{slot_suffix}")
|
format!("/dev/block/by-name/init_boot{slot_suffix}")
|
||||||
|
} else if !is_replace_kernel && vendor_boot_exist && !skip_init {
|
||||||
|
format!("/dev/block/by-name/vendor_boot{slot_suffix}")
|
||||||
} else {
|
} else {
|
||||||
format!("/dev/block/by-name/boot{slot_suffix}")
|
format!("/dev/block/by-name/boot{slot_suffix}")
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -249,6 +249,7 @@ pub fn restore(
|
|||||||
.status()?;
|
.status()?;
|
||||||
ensure!(status.success(), "magiskboot unpack failed");
|
ensure!(status.success(), "magiskboot unpack failed");
|
||||||
|
|
||||||
|
let no_ramdisk = !workdir.join("ramdisk.cpio").exists();
|
||||||
let is_kernelsu_patched = is_kernelsu_patched(&magiskboot, workdir)?;
|
let is_kernelsu_patched = is_kernelsu_patched(&magiskboot, workdir)?;
|
||||||
ensure!(
|
ensure!(
|
||||||
is_kernelsu_patched,
|
is_kernelsu_patched,
|
||||||
@@ -285,16 +286,29 @@ pub fn restore(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if new_boot.is_none() {
|
if new_boot.is_none() {
|
||||||
// remove kernelsu.ko
|
if no_ramdisk {
|
||||||
do_cpio_cmd(&magiskboot, workdir, "rm kernelsu.ko")?;
|
// vendor ramdisk restore
|
||||||
|
do_vendor_cpio_cmd(&magiskboot, workdir, "rm kernelsu.ko")?;
|
||||||
|
|
||||||
// if init.real exists, restore it
|
let status = do_vendor_cpio_cmd(&magiskboot, workdir, "exists init.real").is_ok();
|
||||||
let status = do_cpio_cmd(&magiskboot, workdir, "exists init.real").is_ok();
|
if status {
|
||||||
if status {
|
do_vendor_cpio_cmd(&magiskboot, workdir, "mv init.real init")?;
|
||||||
do_cpio_cmd(&magiskboot, workdir, "mv init.real init")?;
|
} else {
|
||||||
|
let vendor_ramdisk = workdir.join("vendor_ramdisk").join("init_boot.cpio");
|
||||||
|
std::fs::remove_file(vendor_ramdisk)?;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
let ramdisk = workdir.join("ramdisk.cpio");
|
// remove kernelsu.ko
|
||||||
std::fs::remove_file(ramdisk)?;
|
do_cpio_cmd(&magiskboot, workdir, "rm kernelsu.ko")?;
|
||||||
|
|
||||||
|
// if init.real exists, restore it
|
||||||
|
let status = do_cpio_cmd(&magiskboot, workdir, "exists init.real").is_ok();
|
||||||
|
if status {
|
||||||
|
do_cpio_cmd(&magiskboot, workdir, "mv init.real init")?;
|
||||||
|
} else {
|
||||||
|
let ramdisk = workdir.join("ramdisk.cpio");
|
||||||
|
std::fs::remove_file(ramdisk)?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("- Repacking boot image");
|
println!("- Repacking boot image");
|
||||||
@@ -680,8 +694,12 @@ fn find_boot_image(
|
|||||||
|
|
||||||
let init_boot_exist =
|
let init_boot_exist =
|
||||||
Path::new(&format!("/dev/block/by-name/init_boot{slot_suffix}")).exists();
|
Path::new(&format!("/dev/block/by-name/init_boot{slot_suffix}")).exists();
|
||||||
|
let vendor_boot_exist =
|
||||||
|
Path::new(&format!("/dev/block/by-name/vendor_boot{slot_suffix}")).exists();
|
||||||
let boot_partition = if !is_replace_kernel && init_boot_exist && !skip_init {
|
let boot_partition = if !is_replace_kernel && init_boot_exist && !skip_init {
|
||||||
format!("/dev/block/by-name/init_boot{slot_suffix}")
|
format!("/dev/block/by-name/init_boot{slot_suffix}")
|
||||||
|
} else if !is_replace_kernel && vendor_boot_exist && !skip_init {
|
||||||
|
format!("/dev/block/by-name/vendor_boot{slot_suffix}")
|
||||||
} else {
|
} else {
|
||||||
format!("/dev/block/by-name/boot{slot_suffix}")
|
format!("/dev/block/by-name/boot{slot_suffix}")
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user