Rework partitioning functions
parent
b7b1d38cc8
commit
8cd714f537
@ -1,180 +0,0 @@
|
||||
use crate::args::DesktopSetup;
|
||||
use crate::functions::partition::mount;
|
||||
use crate::functions::*;
|
||||
use crate::internal::exec::*;
|
||||
use crate::internal::*;
|
||||
use std::path::PathBuf;
|
||||
pub fn install_bootloader_efi(efidir: PathBuf) {
|
||||
install::install(vec![
|
||||
"grub",
|
||||
"efibootmgr",
|
||||
"grub-btrfs",
|
||||
"crystal-grub-theme",
|
||||
]);
|
||||
let efidir = std::path::Path::new("/mnt").join(efidir);
|
||||
let efi_str = efidir.to_str().unwrap();
|
||||
if !std::path::Path::new(&format!("/mnt{efi_str}")).exists() {
|
||||
crash(format!("The efidir {efidir:?} doesn't exist"), 1);
|
||||
}
|
||||
exec_eval(
|
||||
exec_chroot(
|
||||
"grub-install",
|
||||
vec![
|
||||
String::from("--target=x86_64-efi"),
|
||||
format!("--efi-directory={}", efi_str),
|
||||
String::from("--bootloader-id=unakite"),
|
||||
String::from("--removable"),
|
||||
],
|
||||
),
|
||||
"install unakite grub as efi with --removable",
|
||||
);
|
||||
exec_eval(
|
||||
exec_chroot(
|
||||
"grub-install",
|
||||
vec![
|
||||
String::from("--target=x86_64-efi"),
|
||||
format!("--efi-directory={}", efi_str),
|
||||
String::from("--bootloader-id=unakite"),
|
||||
],
|
||||
),
|
||||
"install unakite grub as efi without --removable",
|
||||
);
|
||||
files_eval(
|
||||
files::append_file(
|
||||
"/mnt/etc/default/grub",
|
||||
"GRUB_THEME=\"/usr/share/grub/themes/crystal/theme.txt\"",
|
||||
),
|
||||
"enable crystal grub theme",
|
||||
);
|
||||
exec_eval(
|
||||
exec_chroot(
|
||||
"grub-mkconfig",
|
||||
vec![String::from("-o"), String::from("/boot/grub/grub.cfg")],
|
||||
),
|
||||
"create grub.cfg",
|
||||
);
|
||||
}
|
||||
|
||||
pub fn remount(root: &str, oldroot: &str, efi: bool, efidir: &str, bootdev: &str, firstrun: bool) {
|
||||
if efi && firstrun {
|
||||
exec_eval(
|
||||
exec("umount", vec![String::from(bootdev)]),
|
||||
&format!("Unmount {}", bootdev),
|
||||
);
|
||||
exec_eval(
|
||||
exec("umount", vec![String::from(oldroot)]),
|
||||
"Unmount old root",
|
||||
);
|
||||
mount(root, "/mnt", "");
|
||||
exec_eval(
|
||||
exec("mkdir", vec![String::from("-p"), String::from(efidir)]),
|
||||
format!("Creating mountpoint {efidir} for {bootdev}").as_str(),
|
||||
);
|
||||
mount(bootdev, efidir, "");
|
||||
} else if efi && !firstrun {
|
||||
exec_eval(
|
||||
exec("umount", vec![String::from(bootdev)]),
|
||||
&format!("Unmount {}", bootdev),
|
||||
);
|
||||
exec_eval(
|
||||
exec("umount", vec![String::from(root)]),
|
||||
"Unmount unakite root",
|
||||
);
|
||||
mount(oldroot, "/mnt", "");
|
||||
mount(bootdev, efidir, "");
|
||||
} else if !efi && firstrun {
|
||||
exec_eval(
|
||||
exec("umount", vec![String::from(bootdev)]),
|
||||
&format!("Unmount {}", bootdev),
|
||||
);
|
||||
exec_eval(
|
||||
exec("umount", vec![String::from(oldroot)]),
|
||||
"Unmount old root",
|
||||
);
|
||||
mount(root, "/mnt", "");
|
||||
exec_eval(
|
||||
exec("mkdir", vec![String::from("-p"), String::from("/mnt/boot")]),
|
||||
format!("Creating mountpoint /boot for {bootdev}").as_str(),
|
||||
);
|
||||
mount(bootdev, "/mnt/boot", "");
|
||||
} else if !efi && !firstrun {
|
||||
exec_eval(
|
||||
exec("umount", vec![String::from(bootdev)]),
|
||||
&format!("Unmount {}", bootdev),
|
||||
);
|
||||
exec_eval(
|
||||
exec("umount", vec![String::from(root)]),
|
||||
"Unmount unakite root",
|
||||
);
|
||||
mount(oldroot, "/mnt", "");
|
||||
mount(bootdev, "/mnt/boot", "");
|
||||
} else {
|
||||
panic!("Unknown state");
|
||||
}
|
||||
}
|
||||
|
||||
pub fn setup_unakite(root: &str, oldroot: &str, efi: bool, efidir: &str, bootdev: &str) {
|
||||
log::debug!("Setting up Unakite");
|
||||
remount(root, oldroot, efi, efidir, bootdev, true);
|
||||
base::install_base_packages("linux".to_string());
|
||||
base::genfstab();
|
||||
locale::set_locale("en_US.UTF-8 UTF-8".to_string());
|
||||
locale::set_timezone("Europe/Berlin"); // TODO: get the proper timezone
|
||||
network::set_hostname("unakite");
|
||||
network::create_hosts();
|
||||
users::new_user(
|
||||
"unakite",
|
||||
true,
|
||||
"Cp7oN04ZY0PsA", // unakite
|
||||
false,
|
||||
"/bin/bash",
|
||||
);
|
||||
exec_eval(
|
||||
exec(
|
||||
"sed",
|
||||
vec![
|
||||
String::from("-i"),
|
||||
String::from("-e"),
|
||||
String::from("s/crystal/unakite/g"),
|
||||
String::from("/mnt/etc/os-release"),
|
||||
],
|
||||
),
|
||||
"Change os-release",
|
||||
);
|
||||
exec_eval(
|
||||
exec(
|
||||
"sed",
|
||||
vec![
|
||||
String::from("-i"),
|
||||
String::from("-e"),
|
||||
String::from("s/Crystal/Unakite/g"),
|
||||
String::from("/mnt/etc/os-release"),
|
||||
],
|
||||
),
|
||||
"Change os-release",
|
||||
);
|
||||
if efi {
|
||||
install_bootloader_efi(PathBuf::from(efidir.replace("/mnt", "")));
|
||||
}
|
||||
users::root_pass("Cp7oN04ZY0PsA"); // unakite
|
||||
desktops::install_desktop_setup(DesktopSetup::Xfce);
|
||||
install(vec!["gparted", "firefox"]);
|
||||
exec_eval(
|
||||
exec(
|
||||
"cp",
|
||||
vec![
|
||||
String::from("/tmp/jade.json"),
|
||||
String::from("/mnt/etc/installSettings.json"),
|
||||
],
|
||||
),
|
||||
"Copy jade.json to /etc/installSettings.json in unakite",
|
||||
);
|
||||
remount(root, oldroot, efi, efidir, bootdev, false);
|
||||
exec_eval(
|
||||
exec_chroot(
|
||||
"grub-mkconfig",
|
||||
vec![String::from("-o"), String::from("/boot/grub/grub.cfg")],
|
||||
),
|
||||
"Recreate grub.cfg in crystal",
|
||||
);
|
||||
}
|
Loading…
Reference in New Issue