feat: erofs layers
This commit is contained in:
699
Cargo.lock
generated
699
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -65,7 +65,7 @@ pub async fn bootstrap(cfg: Config) {
|
|||||||
})
|
})
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
retry_or_ignore(async || apply::files(&sys_cfg.files, "/system").await).await;
|
retry_or_ignore(async || apply::files(&sys_cfg.files, "/system", false).await).await;
|
||||||
|
|
||||||
apply_groups(&sys_cfg.groups, "/system").await;
|
apply_groups(&sys_cfg.groups, "/system").await;
|
||||||
apply_users(&sys_cfg.users, "/system").await;
|
apply_users(&sys_cfg.users, "/system").await;
|
||||||
@@ -210,6 +210,12 @@ async fn mount_system(cfg: &dkl::Config, bs_dir: &str, verifier: &Verifier) {
|
|||||||
})
|
})
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
let fstype = if src.get(1024..1028) == Some(&0xE0F5E1E2u32.to_le_bytes()) {
|
||||||
|
"erofs"
|
||||||
|
} else {
|
||||||
|
"squashfs"
|
||||||
|
};
|
||||||
|
|
||||||
let tgt = &format!("{mem_dir}/{layer}.fs");
|
let tgt = &format!("{mem_dir}/{layer}.fs");
|
||||||
retry(async || {
|
retry(async || {
|
||||||
info!("copying layer {layer}");
|
info!("copying layer {layer}");
|
||||||
@@ -222,7 +228,7 @@ async fn mount_system(cfg: &dkl::Config, bs_dir: &str, verifier: &Verifier) {
|
|||||||
.await;
|
.await;
|
||||||
|
|
||||||
let layer_dir = &format!("{layers_dir}/{layer}");
|
let layer_dir = &format!("{layers_dir}/{layer}");
|
||||||
mount(Some(tgt), layer_dir, "squashfs", None).await;
|
mount(Some(tgt), layer_dir, fstype, None).await;
|
||||||
|
|
||||||
if !lower_dir.is_empty() {
|
if !lower_dir.is_empty() {
|
||||||
lower_dir.push(':');
|
lower_dir.push(':');
|
||||||
|
|||||||
Reference in New Issue
Block a user