|
|
|
@ -12,22 +12,22 @@ |
|
|
|
|
#define USERDATA "/dev/disk/by-partlabel/userdata" |
|
|
|
|
|
|
|
|
|
void Reset::doReset() { |
|
|
|
|
std::vector<const char*> cmds = { |
|
|
|
|
"sudo umount " NVME " || true", |
|
|
|
|
"yes | sudo mkfs.ext4 " NVME " || true", |
|
|
|
|
"sudo umount " USERDATA " || true", |
|
|
|
|
"yes | sudo mkfs.ext4 " USERDATA, |
|
|
|
|
"sudo reboot", |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
for (auto &cmd : cmds) { |
|
|
|
|
int ret = std::system(cmd); |
|
|
|
|
if (ret != 0) { |
|
|
|
|
body->setText("Reset failed. Reboot to try again."); |
|
|
|
|
rebootBtn->show(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
// best effort to wipe nvme
|
|
|
|
|
std::system("sudo umount " NVME); |
|
|
|
|
std::system("yes | sudo mkfs.ext4 " NVME); |
|
|
|
|
|
|
|
|
|
// we handle two cases here
|
|
|
|
|
// * user-prompted factory reset
|
|
|
|
|
// * recovering from a corrupt userdata by formatting
|
|
|
|
|
int rm = std::system("sudo rm -rf /data/*"); |
|
|
|
|
std::system("sudo umount " USERDATA); |
|
|
|
|
int fmt = std::system("yes | sudo mkfs.ext4 " USERDATA); |
|
|
|
|
|
|
|
|
|
if (rm == 0 || fmt == 0) { |
|
|
|
|
std::system("sudo reboot"); |
|
|
|
|
} |
|
|
|
|
body->setText("Reset failed. Reboot to try again."); |
|
|
|
|
rebootBtn->show(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Reset::confirm() { |
|
|
|
|