mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-15 13:32:59 +02:00
installer: Add code to correctly write the fstab when installing on BTRFS
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org> Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
committed by
Arne Fitzenreiter
parent
2a98139628
commit
15be1e1b9f
@@ -1319,11 +1319,13 @@ static char* hw_get_uuid(const char* dev) {
|
||||
#define FSTAB_FMT "UUID=%s %-8s %-4s %-10s %d %d\n"
|
||||
|
||||
int hw_write_fstab(struct hw_destination* dest) {
|
||||
const struct btrfs_subvolumes* subvolume = NULL;
|
||||
FILE* f = fopen(DESTINATION_MOUNT_PATH "/etc/fstab", "w");
|
||||
if (!f)
|
||||
return -1;
|
||||
|
||||
char* uuid = NULL;
|
||||
char mount_options[STRING_SIZE];
|
||||
|
||||
// boot
|
||||
if (*dest->part_boot) {
|
||||
@@ -1359,7 +1361,22 @@ int hw_write_fstab(struct hw_destination* dest) {
|
||||
// root
|
||||
uuid = hw_get_uuid(dest->part_root);
|
||||
if (uuid) {
|
||||
fprintf(f, FSTAB_FMT, uuid, "/", "auto", "defaults", 1, 1);
|
||||
if(dest->filesystem == HW_FS_BTRFS) {
|
||||
// Loop through the list of subvolumes
|
||||
for (subvolume = btrfs_subvolumes; subvolume->name; subvolume++) {
|
||||
// Abort if the mount options could not be assigned
|
||||
int r = snprintf(mount_options, sizeof(mount_options), "defaults,%s,subvol=%s", BTRFS_MOUNT_OPTIONS, subvolume->name);
|
||||
if (r < 0) {
|
||||
return r;
|
||||
}
|
||||
|
||||
// Write the entry to the file
|
||||
fprintf(f, FSTAB_FMT, uuid, subvolume->mount_path, "btrfs", mount_options, 1, 1);
|
||||
}
|
||||
} else {
|
||||
fprintf(f, FSTAB_FMT, uuid, "/", "auto", "defaults", 1, 1);
|
||||
}
|
||||
|
||||
free(uuid);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user