penguins-eggs
Version:
A remaster system tool, compatible with Almalinux, Alpine, Arch, Debian, Devuan, Fedora, Manjaro, Opensuse, Ubuntu and derivatives
60 lines (59 loc) • 2.1 kB
JavaScript
/**
* ./src/krill/modules/mount-vfs.ts
* penguins-eggs v.25.7.x / ecmascript 2020
* author: Piero Proietti
* email: piero.proietti@gmail.com
* license: MIT
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
*/
import { exec } from '../../../lib/utils.js';
/**
* mountvfs()
*/
export async function mountVfs() {
/**
* dev
*/
await exec(`mkdir -p ${this.installTarget}/dev ${this.toNull}`, this.echo);
await exec(`mount -o bind /dev ${this.installTarget}/dev ${this.toNull}`, this.echo);
/**
* dev/pts
*/
await exec(`mkdir -p ${this.installTarget}/dev/pts ${this.toNull}`, this.echo);
await exec(`mount -o bind /dev/pts ${this.installTarget}/dev/pts ${this.toNull}`, this.echo);
/**
* proc
*/
await exec(`mkdir -p ${this.installTarget}/proc ${this.toNull}`, this.echo);
await exec(`mount -o bind /proc ${this.installTarget}/proc ${this.toNull}`, this.echo);
/**
* sys
*/
await exec(`mkdir -p ${this.installTarget}/sys ${this.toNull}`, this.echo);
await exec(`mount -o bind /sys ${this.installTarget}/sys ${this.toNull}`, this.echo);
/**
* sys/efivar
*/
if (this.efi) {
await exec(`mkdir -p ${this.installTarget}/sys/firmware/efi/efivars ${this.toNull}`, this.echo);
await exec(`mount -o bind /sys/firmware/efi/efivars ${this.installTarget}/sys/firmware/efi/efivars`);
}
/**
* run: use recursive binding rbins
*/
await exec(`mkdir -p ${this.installTarget}/run ${this.toNull}`, this.echo);
await exec(`mount -o rbind /run ${this.installTarget}/run ${this.toNull}`, this.echo);
}
/**
*
*/
export async function umountVfs() {
await this.umount(`${this.installTarget}/dev/pts`);
await this.umount(`${this.installTarget}/dev`);
await this.umount(`${this.installTarget}/proc`);
await this.umount(`${this.installTarget}/run`);
if (this.efi) {
await this.umount(`${this.installTarget}/sys/firmware/efi/efivars`);
}
await this.umount(`${this.installTarget}/sys`);
}