Installer Backend

Overview

distinst

Distinst is a Rust-based software library that handles Linux distribution installer installation details. It has been built specifically to be used in the construction of Linux distribution installers, so that installers can spend more time improving their UI, and less time worrying about some of the more complicated implementation details, such as partition management & encryption.

Frontends

At the moment, elementary's installer is the primary target for distinst. However, distinst also ships with a CLI application (also called distinst) that serves as a fully-functioning test bed for the distinst library. Example scripts exist within the tests directory to demonstrate how the CLI can be used to perform installs using files from the Pop! ISO.

CLI

GTK

Capabilities

Disk Partitioning & Formatting

Distinst provides a Rust, C, and Vala API for probing disk and partition information, as well as the ability to create and manipulate partitions. In addition to partitioning the disk via the libparted bindings, distinst will also handle disk partitioning using mkfs, provided that you have installed the corresponding packages for each file system type that you want to support in your installer. LUKS & LVM configurations are also supported, and may be configured after configuring your physical partitions.

Implementors of the library should note that distinst utilizes in-memory partition management logic to determine whether changes that are being specified will be valid or not. Changes specified will be applied by distinst during the install method, which is where you will pass your disk configurations into. This configuration will be validated by distinst before any changes are made.

Rust Example

See the source code for the distinst CLI application.

Vala Example

if (disk.mklabel (bootloader) != 0) {
    stderr.printf ("unable to write GPT partition table to /dev/sda");
    exit (1);
}

var efi_sector = Sector() {
    flag = SectorKind.MEGABYTE,
    value = 512
};

var start = disk.get_sector (Sector.start());
var end = disk.get_sector (efi_sector);

int result = disk.add_partition(
    new PartitionBuilder (start, end, FileSystem.FAT32)
        .set_partition_type (PartitionType.PRIMARY)
        .add_flag (PartitionFlag.ESP)
        .set_mount ("/boot/efi")
);

if (result != 0) {
    stderr.printf ("unable to add EFI partition to disk");
    exit (1);
}

start = disk.get_sector (efi_sector);
end = disk.get_sector (Sector.end ());

result = disk.add_partition (
    new PartitionBuilder (start, end, FileSystem.EXT4)
        .set_partition_type (PartitionType.PRIMARY)
        .set_mount ("/")
);

if (result != 0) {
    stderr.printf ("unable to add / partition to disk");
    exit (1);
}

Disks disks = Disks.with_capacity (1);
disks.push (disk);
installer.install (disks, config);

Extracting, Chrooting, & Configuring

The implementor of the library should provide a squashfs file that contains a base image that the installer will extract during installation, as well as the accompanying .manifest-remove file. These can be found on the Pop!_OS ISOs, as an example. Once this image has been extracted, the installer will chroot into the new install and then configure the image using the configuration script located at src/configure.sh.

Bootloader

Based on whether the image is running on a system that is EFI or not, the bootloader will be configured using either systemd-boot or GRUB, thereby allowing the user to be capable of booting into install once the system is rebooted.

Build Instructions

In order to build distinst on Pop!, you will need to follow these instructions:

# Install dependencies
sudo apt build-dep distinst

# Build in debug mode
# make all DEBUG=1

# Build in release mode
make

# Install in release mode
sudo make install prefix=/usr

# Install in debug mode
# sudo make install prefix=/usr DEBUG=1

# Uninstall
sudo make uninstall

The following files will be generated:

  • CLI app: target/release/distinst
  • Library: target/release/libdistinst.so
  • Header: target/include/distinst.h
  • pkg-config: target/pkg-config/distinst.pc

These files will be placed in /usr/local when installed, and pkg-config --cflags distinst or pkg-config --libs distinst can then be used to find them.

In order to produce a source package, you must run the following commands:

# Install cargo-vendor
cargo install cargo-vendor

# Download vendored sources
make vendor
Comments
  • Configure Script Rewritten in Rust

    Configure Script Rewritten in Rust

    This will perform the following:

    • Enable superior error handling: Instead of executing a script where anything in that script can error with no way of knowing what errored, the script has been removed in favor of executing commands in the chroot one by one
    • Better error messages: Due to the more refined error handling, error messages are now more elaborate.
    • Faster chroot configuration: Instead of using a shell in a chroot, Rust is now executing these commands directly; some actions and checks are now written in Rust, as well; and operations which can be parallelized have been parallelized.
    • Module refactoring: There's been a lot of refactoring of the code throughout the project, so it should be easier to navigate and to locate the relevant sections of code that you're looking for. In particular, the refactoring of the installer and each of its steps should improve readability and discoverability.
    • sys-mount crate: The mount module was removed, and then rewritten with a proper API as the sys-mount crate. This eliminates the need to handle umount2 and mount, as well as removing the ExternalMount and Mount types.
    • ..and various bug fixes: Some issues were discovered when trying to perform the refresh installation option. These are now resolved.

    Testing

    This changes the way the installer does a lot of things, so we may want to be careful to test out every install scenario. I've already tested most of these things so far. On the plus side, this will make https://github.com/pop-os/installer/pull/157, and subsequently multi-boot installs, possible.

    • [x] Verify that clean install still works with encryption
    • [x] Verify that clean install still works without encryption
    • [x] Verify that a custom install still works with and without encryption
    • [x] Verify that the refresh install still works for OEM mode and non-OEM mode
    • [x] Verify that system76-driver, and Nvidia & Intel installs function
    opened by mmstick 20
  • Fixes for recent regressions in disk probing

    Fixes for recent regressions in disk probing

    • Fix a panic caused by code not getting the correct path for the parent of a partition block device
    • Fixed another panic caused by the probing the contents of CD ROM, which should never be an install target
    opened by mmstick 13
  • Unable to install pop os / ERROR: partitioning error: unable to remove partition

    Unable to install pop os / ERROR: partitioning error: unable to remove partition

    Distribution (run ``): NAME="Pop!_OS" VERSION="18.04 LTS" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Pop!_OS 18.04 LTS" VERSION_ID="18.04" HOME_URL="https://system76.com/pop" SUPPORT_URL="http://support.system76.com" BUG_REPORT_URL="https://github.com/pop-os/pop/issues" PRIVACY_POLICY_URL="https://system76.com/privacy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic

    Issue/Bug Description:

    Im trying to install pop os as dual boot and after configuring my partitions and starting the installation, the installer fails with error:

    INFO: libdistinst: installing Config { hostname: "pop-os", keyboard_layout: "se", keyboard_model: None, keyboard_variant: None, lang: "en_US.UTF-8", remove: "/cdrom/casper/filesystem.manifest-remove", squashfs: "/cdrom/casper/filesystem.squashfs", flags: 3 } with Efi INFO: libdistinst: starting initializing step INFO: Initializing INFO: libdistinst: devices to modify: ["/dev/sda1", "/dev/sda5", "/dev/sda6", "/dev/sda7"] INFO: libdistinst: obtaining list of physical volumes INFO: libdistinst: volume map: {} INFO: libdistinst: searching for device maps to deactivate INFO: libdistinst: checking if /dev/mapper/control needs to be marked INFO: libdistinst: pvs: [] INFO: config.squashfs: found at /cdrom/casper/filesystem.squashfs INFO: libdistinst: verifying if keyfiles have paths INFO: libdistinst: unmount all partitions with a target on /dev/sda INFO: libdistinst: starting partitioning step INFO: libdistinst: /dev/sda: Committing changes to disk INFO: libdistinst: committing changes to /dev/sda INFO: libdistinst: getting device at /dev/sda INFO: libdistinst: obtaining disk information from /dev/sda INFO: libdistinst: obtaining serial model from /dev/sda INFO: libdistinst: opening disk at /dev/sda INFO: libdistinst: obtaining partition information from /dev/sda1 INFO: libdistinst: obtaining partition information from /dev/sda2 INFO: libdistinst: obtaining partition information from /dev/sda3 INFO: libdistinst: executing cryptsetup with ["luksDump", "/dev/sda3"] INFO: libdistinst: obtaining partition information from /dev/sda5 INFO: libdistinst: obtaining partition information from /dev/sda6 INFO: libdistinst: obtaining partition information from /dev/sda7 INFO: libdistinst: generating diff of disk at /dev/sda INFO: libdistinst: proposed layout: 1: 2048 - 1026046 2: 1026048 - 264063157 5: 264067072 - 321411071 6: 321413120 - 456476671 7: 456478720 - 468860927 INFO: libdistinst: /dev/sda: executing remove operations INFO: libdistinst: opening device at /dev/sda INFO: libdistinst: opening disk at /dev/sda INFO: libdistinst: removing partition 1 on /dev/sda INFO: libdistinst: removing partition 5 on /dev/sda INFO: libdistinst: removing partition 6 on /dev/sda INFO: libdistinst: removing partition 7 on /dev/sda ERROR: partitioning error: unable to remove partition 7: Resource temporarily unavailable (os error 11)

    Steps to reproduce (if you know): Install Intel/AMD version of pop os, the partition that fails is swap, but I have tried repartitioning and having an EXT4 as last partition and the installer fails anyway.

    I used to have linux mint installed and tried to replace it with pop-os with the same partitioning I had working for other distros, but it seems pop-os does not like it somehow.

    Expected behavior: If other distros can be installed with the current partitioning I assume pop-os should work as well.

    opened by silver-mx 12
  • Pop!_OS 18.04 install ERROR: configuring bootloader error: bootctl failed with status: exit code: 1

    Pop!_OS 18.04 install ERROR: configuring bootloader error: bootctl failed with status: exit code: 1

    Distribution: pop-os_18.04_amd64_intel_32

    Issue/Bug Description: ERROR: configuring bootloader error: bootctl failed with status: exit code: 1

    Steps to reproduce (if you know): I want to install pop-os, I had ubuntu 16.04 and partitions root, home and swap, In the installation I chose advanced to keep home files, the installation ask me to create uefi boot partition so I did and then continue with the installation after that the installation was stopped by the error.

    Other Notes: I see a similar case here https://github.com/pop-os/distinst/issues/84

    Here is the log: INFO: Starting installation INFO: getting device at /dev/sda INFO: obtaining disk information from /dev/sda INFO: obtaining serial model from /dev/sda INFO: opening disk at /dev/sda INFO: obtaining partition information from /dev/sda1 INFO: obtaining partition information from /dev/sda2 INFO: obtaining partition information from /dev/sda3 INFO: obtaining partition information from /dev/sda4 ERROR: libdistinst: pointer in FFI is null ERROR: libdistinst: pointer in FFI is null ERROR: libdistinst: pointer in FFI is null INFO: installing Config { hostname: "pop-os", keyboard_layout: "latam", keyboard_model: None, keyboard_variant: None, old_root: None, lang: "en_US.UTF-8", remove: "/cdrom/casper/filesystem.manifest-remove", squashfs: "/cdrom/casper/filesystem.squashfs", flags: 3 } with Efi INFO: starting initializing step INFO: Initializing INFO: config.squashfs: found at /cdrom/casper/filesystem.squashfs INFO: verifying if keyfiles have paths INFO: devices to modify: ["/dev/sda1", "/dev/sda2", "/dev/sda4"] INFO: obtaining list of physical volumes INFO: volume map: {} INFO: searching for device maps to deactivate INFO: checking if /dev/mapper/control needs to be marked INFO: pvs: [] INFO: unmounting devices INFO: unmount all partitions with a target on /dev/sda INFO: starting partitioning step INFO: obtaining list of physical volumes INFO: /dev/sda: Committing changes to disk INFO: committing changes to /dev/sda: Disk { model_name: "ATA ST500DM002-1BD14", device_path: "/dev/sda", file_system: None, mount_point: None, size: 976773168, sector_size: 512, device_type: "PED_DEVICE_SCSI", table_type: Some( Msdos ), read_only: false, mklabel: false, partitions: [ PartitionInfo { bitflags: 13, number: 1, ordering: 0, start_sector: 2048, end_sector: 1048573, part_type: Primary, filesystem: Some( Fat32 ), flags: [ PED_PARTITION_ESP ], name: None, device_path: "/dev/sda1", mount_point: None, target: Some( "/boot/efi" ), original_vg: None, volume_group: None, key_id: None }, PartitionInfo { bitflags: 13, number: 2, ordering: 1, start_sector: 1050624, end_sector: 117186557, part_type: Primary, filesystem: Some( Ext4 ), flags: [ PED_PARTITION_BOOT ], name: None, device_path: "/dev/sda2", mount_point: None, target: Some( "/" ), original_vg: None, volume_group: None, key_id: None }, PartitionInfo { bitflags: 9, number: 3, ordering: 2, start_sector: 117186560, end_sector: 968773631, part_type: Primary, filesystem: Some( Ext4 ), flags: [], name: Some( "" ), device_path: "/dev/sda3", mount_point: None, target: Some( "/home" ), original_vg: None, volume_group: None, key_id: None }, PartitionInfo { bitflags: 13, number: 4, ordering: 3, start_sector: 968773632, end_sector: 976771069, part_type: Primary, filesystem: Some( Swap ), flags: [], name: None, device_path: "/dev/sda4", mount_point: None, target: None, original_vg: None, volume_group: None, key_id: None } ] } INFO: getting device at /dev/sda INFO: obtaining disk information from /dev/sda INFO: obtaining serial model from /dev/sda INFO: opening disk at /dev/sda INFO: obtaining partition information from /dev/sda1 INFO: obtaining partition information from /dev/sda2 INFO: obtaining partition information from /dev/sda3 INFO: obtaining partition information from /dev/sda4 INFO: generating diff of disk at /dev/sda INFO: proposed layout: 1: 2048 - 1048573 2: 1050624 - 117186557 3: 117186560 - 968773631 4: 968773632 - 976771069 INFO: /dev/sda: executing remove operations INFO: opening device at /dev/sda INFO: opening disk at /dev/sda INFO: removing partition at sector 2048 on /dev/sda INFO: removing partition at sector 1050624 on /dev/sda INFO: removing partition at sector 968773632 on /dev/sda INFO: attempting to remove partitions from /dev/sda INFO: committing changes to /dev/sda INFO: successfully removed partitions from /dev/sda INFO: syncing device at /dev/sda INFO: /dev/sda: executing change operations INFO: opening device at /dev/sda INFO: syncing device at /dev/sda INFO: /dev/sda: executing creation operations INFO: creating partition (PartitionCreate { path: "/dev/sda", start_sector: 2048, end_sector: 1048573, format: true, file_system: Some(Fat32), kind: Primary, flags: [PED_PARTITION_ESP], label: None }) on /dev/sda INFO: opening device at /dev/sda INFO: creating new partition with 1046525 sectors: 2048 - 1048573 INFO: opening disk at /dev/sda INFO: committing new partition (2048:1048573) on /dev/sda INFO: committing changes to /dev/sda INFO: syncing device at /dev/sda INFO: getting device at /dev/sda INFO: opening disk at /dev/sda INFO: creating partition (PartitionCreate { path: "/dev/sda", start_sector: 1050624, end_sector: 117186557, format: true, file_system: Some(Ext4), kind: Primary, flags: [PED_PARTITION_BOOT], label: None }) on /dev/sda INFO: opening device at /dev/sda INFO: creating new partition with 116135933 sectors: 1050624 - 117186557 INFO: opening disk at /dev/sda INFO: committing new partition (1050624:117186557) on /dev/sda INFO: committing changes to /dev/sda INFO: syncing device at /dev/sda INFO: getting device at /dev/sda INFO: opening disk at /dev/sda INFO: creating partition (PartitionCreate { path: "/dev/sda", start_sector: 968773632, end_sector: 976771069, format: true, file_system: Some(Swap), kind: Primary, flags: [], label: None }) on /dev/sda INFO: opening device at /dev/sda INFO: creating new partition with 7997437 sectors: 968773632 - 976771069 INFO: opening disk at /dev/sda INFO: committing new partition (968773632:976771069) on /dev/sda INFO: committing changes to /dev/sda INFO: syncing device at /dev/sda INFO: getting device at /dev/sda INFO: opening disk at /dev/sda INFO: executing blockdev with ["--flushbufs", "--rereadpt", "/dev/sda"] INFO: executing format operations INFO: formatting /dev/sda1 with Fat32 INFO: formatting /dev/sda2 with Ext4 INFO: executing mkfs.fat with ["-F", "32", "/dev/sda1"] INFO: formatting /dev/sda4 with Swap INFO: executing mkfs.ext4 with ["-F", "-q", "-E", "lazy_itable_init", "/dev/sda2"] INFO: reloading disk information for /dev/sda INFO: getting device at /dev/sda INFO: obtaining disk information from /dev/sda INFO: obtaining serial model from /dev/sda INFO: opening disk at /dev/sda INFO: obtaining partition information from /dev/sda1 INFO: obtaining partition information from /dev/sda2 INFO: obtaining partition information from /dev/sda3 INFO: obtaining partition information from /dev/sda4 INFO: checking for mount target at 2048 INFO: checking for mount target at 1050624 INFO: checking for mount target at 117186560 INFO: executing blockdev with ["--flushbufs", "--rereadpt", "/dev/sda"] INFO: mounting temporary chroot directory at distinst INFO: mounting /dev/sda2 to /tmp/distinst.lzdLjET1C7WU/, with ext4 INFO: mounting /dev/sda2 to /tmp/distinst.lzdLjET1C7WU/ INFO: mounting /dev/sda1 to /tmp/distinst.lzdLjET1C7WU/boot/efi, with vfat INFO: mounting /dev/sda1 to /tmp/distinst.lzdLjET1C7WU/boot/efi INFO: mounting /dev/sda3 to /tmp/distinst.lzdLjET1C7WU/home, with ext4 INFO: mounting /dev/sda3 to /tmp/distinst.lzdLjET1C7WU/home INFO: starting extracting step INFO: Extracting /cdrom/casper/filesystem.squashfs DEBUG: "unsquashfs" "-f" "-d" "/tmp/distinst.lzdLjET1C7WU" "/cdrom/casper/filesystem.squashfs" INFO: starting configuring chroot step INFO: Configuring on /tmp/distinst.lzdLjET1C7WU INFO: writing /tmp/configure.sh INFO: applying LVM initramfs autodetect workaround INFO: generating /etc/crypttab & /etc/fstab in memory INFO: getting block information for partition at /dev/sda1 INFO: getting block information for partition at /dev/sda2 INFO: getting block information for partition at /dev/sda3 INFO: generated the following crypttab data: cryptswap UUID=23dc70a4-773c-4048-aa7c-7f17eb254531 /dev/urandom swap,offset=1024,cipher=aes-xts-plain64,size=512

    INFO: generated the following fstab data: UUID=62BA-7A37 /boot/efi vfat umask=0077 0 0 UUID=15a009a2-4c8b-4314-af75-788e4f75f57a / ext4 noatime,errors=remount-ro 0 0 UUID=6bcbb38c-6b98-4425-8d21-f3187e90568c /home ext4 noatime,errors=remount-ro 0 0 /dev/mapper/cryptswap none swap defaults 0 0

    INFO: writing /etc/crypttab INFO: writing /etc/fstab INFO: chrooting into target on /tmp/distinst.lzdLjET1C7WU INFO: mounting /dev to /tmp/distinst.lzdLjET1C7WU/dev INFO: mounting /dev/pts to /tmp/distinst.lzdLjET1C7WU/dev/pts INFO: mounting /proc to /tmp/distinst.lzdLjET1C7WU/proc INFO: mounting /run to /tmp/distinst.lzdLjET1C7WU/run INFO: mounting /sys to /tmp/distinst.lzdLjET1C7WU/sys INFO: mounting /sys/firmware/efi/efivars to /tmp/distinst.lzdLjET1C7WU/sys/firmware/efi/efivars INFO: mounting /cdrom to /tmp/distinst.lzdLjET1C7WU/cdrom INFO: retrieving root partition INFO: getting block information for partition at /dev/sda1 INFO: getting block information for partition at /dev/sda2 DEBUG: "chroot" "/tmp/distinst.lzdLjET1C7WU" "check_language_support" "-l" "en" "--show-installed" DEBUG: "chroot" "/tmp/distinst.lzdLjET1C7WU" "/usr/bin/env" "-i" "HOSTNAME=pop-os" "LANG=en_US.UTF-8" "ROOT_UUID=15a009a2-4c8b-4314-af75-788e4f75f57a" "LUKS_UUID=" "DISABLE_NVIDIA=0" "bash" "tmp/distinst.O5eOBYYAseLh/configure.sh" "-btrfs-progs" "-btrfs-tools" "-casper" "-cifs-utils" "-distinst" "-dmraid" "-expect" "-f2fs-tools" "-fatresize" "-gparted" "-kpartx" "-kpartx-boot" "-libdistinst" "-libdmraid1.0.0.rc16" "-libf2fs0" "-libgtkmm-2.4-1v5" "-libtcl8.6" "-localechooser-data" "-pop-installer" "-pop-installer-casper" "-pop-shop-casper" "-python-ldb" "-python-samba" "-python-tdb" "-samba-common" "-samba-common-bin" "-squashfs-tools" "-tcl-expect" "-tcl8.6" "-user-setup" "-xfsprogs" "kernelstub" "intel-microcode" WARN: + source /etc/os-release WARN: ++ NAME='Pop!_OS' WARN: ++ VERSION='18.04 LTS' WARN: ++ ID=ubuntu WARN: ++ ID_LIKE=debian WARN: ++ PRETTY_NAME='Pop!_OS 18.04 LTS' WARN: ++ VERSION_ID=18.04 WARN: ++ HOME_URL=https://system76.com/pop WARN: ++ SUPPORT_URL=http://support.system76.com WARN: ++ BUG_REPORT_URL=https://github.com/pop-os/pop/issues WARN: ++ PRIVACY_POLICY_URL=https://system76.com/privacy WARN: ++ VERSION_CODENAME=bionic WARN: ++ UBUNTU_CODENAME=bionic WARN: + export DEBIAN_FRONTEND=noninteractive WARN: + DEBIAN_FRONTEND=noninteractive WARN: + export HOME=/root WARN: + HOME=/root WARN: + export LC_ALL=en_US.UTF-8 WARN: + LC_ALL=en_US.UTF-8 WARN: + export PATH=/usr/sbin:/usr/bin:/sbin:/bin WARN: + PATH=/usr/sbin:/usr/bin:/sbin:/bin WARN: + PURGE_PKGS=() WARN: + INSTALL_PKGS=() WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ - == - ]] WARN: + PURGE_PKGS+=("${arg:1}") WARN: + for arg in "$@" WARN: + [[ k == - ]] WARN: + INSTALL_PKGS+=("${arg}") WARN: + for arg in "$@" WARN: + [[ i == - ]] WARN: + INSTALL_PKGS+=("${arg}") WARN: + echo pop-os WARN: + echo '127.0.0.1 localhost WARN: ::1 localhost WARN: 127.0.1.1 pop-os.localdomain pop-os' WARN: + dbus-uuidgen WARN: + ln -sf ../run/resolvconf/resolv.conf /etc/resolv.conf WARN: + locale-gen --purge en_US.UTF-8 INFO: Generating locales (this might take a while)... INFO: en_US.UTF-8... done INFO: Generation complete. WARN: + update-locale --reset LANG=en_US.UTF-8 WARN: + apt-get purge -y btrfs-progs btrfs-tools casper cifs-utils distinst dmraid expect f2fs-tools fatresize gparted kpartx kpartx-boot libdistinst libdmraid1.0.0.rc16 libf2fs0 libgtkmm-2.4-1v5 libtcl8.6 localechooser-data pop-installer pop-installer-casper pop-shop-casper python-ldb python-samba python-tdb samba-common samba-common-bin squashfs-tools tcl-expect tcl8.6 user-setup xfsprogs INFO: Reading package lists... INFO: Building dependency tree... INFO: Reading state information... INFO: The following packages will be REMOVED: INFO: btrfs-progs* btrfs-tools* casper* cifs-utils* distinst* dmraid* expect* INFO: f2fs-tools* fatresize* gparted* kpartx* kpartx-boot* libdistinst* INFO: libdmraid1.0.0.rc16* libf2fs0* libgtkmm-2.4-1v5* libtcl8.6* INFO: localechooser-data* pop-installer* pop-installer-casper* pop-shop-casper* INFO: python-ldb* python-samba* python-tdb* samba-common* samba-common-bin* INFO: squashfs-tools* tcl-expect* tcl8.6* user-setup* xfsprogs* INFO: 0 upgraded, 0 newly installed, 31 to remove and 0 not upgraded. INFO: After this operation, 49.2 MB disk space will be freed. INFO: (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 197317 files and directories currently installed.) INFO: Removing distinst (0.3.2~1534793484~18.04~759191c) ... INFO: Removing libdistinst (0.3.2~1534793484~18.04~759191c) ... INFO: Removing btrfs-tools (4.15.1-1build1) ... INFO: Removing btrfs-progs (4.15.1-1build1) ... INFO: Removing pop-installer-casper (0.0.1~1533059974~18.04~6dac635) ... INFO: Removing pop-shop-casper (0.2.9~1533745800~18.04~5062837) ... INFO: Removing casper (1.394) ... INFO: Running in chroot, ignoring request: daemon-reload INFO: Running in chroot, ignoring request: daemon-reload INFO: Removing cifs-utils (2:6.8-1) ... INFO: Removing dmraid (1.0.0.rc16-8ubuntu1) ... INFO: update-initramfs: deferring update (trigger activated) INFO: Removing expect (5.45.4-1) ... INFO: Removing f2fs-tools (1.10.0-1) ... INFO: Removing fatresize (1.0.2-10) ... INFO: Removing pop-installer (0.0.1~1533059974~18.04~6dac635) ... INFO: Removing gparted (0.30.0-3ubuntu1) ... INFO: Removing kpartx-boot (0.7.4-2ubuntu3) ... INFO: update-initramfs: deferring update (trigger activated) INFO: Removing kpartx (0.7.4-2ubuntu3) ... INFO: Removing libdmraid1.0.0.rc16 (1.0.0.rc16-8ubuntu1) ... INFO: Removing libf2fs0:amd64 (1.10.0-1) ... INFO: Removing libgtkmm-2.4-1v5:amd64 (1:2.24.5-2) ... INFO: Removing tcl-expect:amd64 (5.45.4-1) ... INFO: Removing tcl8.6 (8.6.8+dfsg-3) ... INFO: Removing libtcl8.6:amd64 (8.6.8+dfsg-3) ... INFO: Removing localechooser-data (2.71ubuntu3) ... INFO: Removing samba-common-bin (2:4.7.6+dfsg~ubuntu-0ubuntu2.2) ... INFO: Removing python-samba (2:4.7.6+dfsg~ubuntu-0ubuntu2.2) ... INFO: Removing python-ldb:amd64 (2:1.2.3-1) ... INFO: Removing python-tdb (1.3.15-2) ... INFO: Removing samba-common (2:4.7.6+dfsg~ubuntu-0ubuntu2.2) ... INFO: Removing squashfs-tools (1:4.3-6ubuntu0.18.04.1) ... INFO: Removing user-setup (1.63ubuntu5) ... INFO: Removing xfsprogs (4.9.0+nmu1ubuntu2) ... INFO: Processing triggers for mime-support (3.60ubuntu1) ... INFO: Processing triggers for desktop-file-utils (0.23-1ubuntu3.18.04.1) ... INFO: Processing triggers for initramfs-tools (0.130ubuntu3.2pop3) ... INFO: update-initramfs: Generating /boot/initrd.img-4.15.0-33-generic INFO: Processing triggers for libc-bin (2.27-3ubuntu1) ... INFO: Processing triggers for man-db (2.8.3-2) ... INFO: Processing triggers for gnome-menus (3.13.3-11ubuntu1.1) ... INFO: Processing triggers for hicolor-icon-theme (0.17-2) ... INFO: (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 196042 files and directories currently installed.) INFO: Purging configuration files for kpartx-boot (0.7.4-2ubuntu3) ... INFO: Purging configuration files for cifs-utils (2:6.8-1) ... INFO: Purging configuration files for dmraid (1.0.0.rc16-8ubuntu1) ... INFO: update-initramfs: deferring update (trigger activated) INFO: Purging configuration files for samba-common (2:4.7.6+dfsg~ubuntu-0ubuntu2.2) ... INFO: Purging configuration files for casper (1.394) ... INFO: Running in chroot, ignoring request: daemon-reload INFO: Running in chroot, ignoring request: daemon-reload INFO: Running in chroot, ignoring request: daemon-reload INFO: Purging configuration files for user-setup (1.63ubuntu5) ... INFO: Purging configuration files for tcl8.6 (8.6.8+dfsg-3) ... INFO: Processing triggers for initramfs-tools (0.130ubuntu3.2pop3) ... INFO: update-initramfs: Generating /boot/initrd.img-4.15.0-33-generic WARN: + apt-get autoremove -y --purge INFO: Reading package lists... INFO: Building dependency tree... INFO: Reading state information... INFO: 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. WARN: + APT_OPTIONS=() WARN: + '[' -d /cdrom ']' WARN: + APT_OPTIONS+=(-o "Acquire::cdrom::AutoDetect=0") WARN: + APT_OPTIONS+=(-o "Acquire::cdrom::mount=/cdrom") WARN: + APT_OPTIONS+=(-o "APT::CDROM::NoMount=1") WARN: + apt-cdrom -o Acquire::cdrom::AutoDetect=0 -o Acquire::cdrom::mount=/cdrom -o APT::CDROM::NoMount=1 add INFO: Using CD-ROM mount point /cdrom/ INFO: Identifying... [b9c4208b70fc28780a4564f73db57cf1-2] INFO: Scanning disc for index files... INFO: Found 2 package indexes, 0 source indexes, 0 translation indexes and 1 signatures INFO: Found label 'Pop_OS 18.04 Bionic Beaver - Release amd64 (20180823)' INFO: This disc is called: INFO: 'Pop_OS 18.04 Bionic Beaver - Release amd64 (20180823)' WARN: gpgv: Signature made Thu 23 Aug 2018 05:26:32 PM UTC WARN: gpgv: using RSA key 63C46DF0140D738961429F4E204DD8AEC33A7AFF WARN: gpgv: issuer "[email protected]" WARN: gpgv: Good signature from "Pop OS (ISO Signing Key) [email protected]" INFO: Copying package lists... Reading Package Indexes... 0%

    Reading Package Indexes... 5%

    Reading Package Indexes... Done INFO: Writing new source list INFO: Source list entries for this disc are: INFO: deb cdrom:[Pop_OS 18.04 Bionic Beaver - Release amd64 (20180823)]/ bionic main restricted INFO: Repeat this process for the rest of the CDs in your set. WARN: + '[' -d /etc/initramfs/post-update.d/ ']' WARN: + '[' -e /cdrom/casper/vmlinuz -a '!' -e /vmlinuz ']' WARN: + apt-get install -q -y -o Acquire::cdrom::AutoDetect=0 -o Acquire::cdrom::mount=/cdrom -o APT::CDROM::NoMount=1 kernelstub intel-microcode INFO: Reading package lists... INFO: Building dependency tree... INFO: Reading state information... INFO: intel-microcode is already the newest version (3.20180425.1~ubuntu0.18.04.2). INFO: intel-microcode set to manually installed. INFO: The following NEW packages will be installed: INFO: kernelstub INFO: 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. INFO: Need to get 0 B/11.2 kB of archives. INFO: After this operation, 78.8 kB of additional disk space will be used. INFO: Get:1 cdrom://Pop_OS 18.04 Bionic Beaver - Release amd64 (20180823) bionic/main amd64 kernelstub all 3.0.0~1534952668~18.04~2dca693 [11.2 kB] INFO: Selecting previously unselected package kernelstub. INFO: (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 196036 files and directories currently installed.) INFO: Preparing to unpack .../kernelstub_3.0.0~1534952668~18.04~2dca693_all.deb ... INFO: Unpacking kernelstub (3.0.0~1534952668~18.04~2dca693) ... INFO: Setting up kernelstub (3.0.0~1534952668~18.04~2dca693) ... WARN: + '[' -d /cdrom ']' WARN: + sed -i 's/deb cdrom:/# deb cdrom:/g' /etc/apt/sources.list WARN: + echo 'ROOT_UUID = 15a009a2-4c8b-4314-af75-788e4f75f57a' WARN: + BOOT_OPTIONS='quiet loglevel=0 systemd.show_status=false splash' INFO: ROOT_UUID = 15a009a2-4c8b-4314-af75-788e4f75f57a WARN: + hash kernelstub WARN: + kernelstub --esp-path /boot/efi --kernel-path /vmlinuz --initrd-path /initrd.img --options 'quiet loglevel=0 systemd.show_status=false splash' --loader --manage-only --force-update --verbose WARN: kernelstub.Config : INFO Looking for configuration... WARN: kernelstub.Config : WARNING Updating old configuration. WARN: kernelstub.Config : INFO Configuration updated successfully! WARN: kernelstub : INFO System information: WARN: WARN: OS:..................Pop!_OS 18.04 WARN: Root partition:....../dev/sda2 WARN: Root FS UUID:........15a009a2-4c8b-4314-af75-788e4f75f57a WARN: ESP Path:............/boot/efi WARN: ESP Partition:......./dev/sda1 WARN: ESP Partition #:.....1 WARN: NVRAM entry #:.......-1 WARN: Boot Variable #:.....0000 WARN: Kernel Boot Options:.quiet loglevel=0 systemd.show_status=false splash WARN: Kernel Image Path:.../vmlinuz WARN: Initrd Image Path:.../initrd.img WARN: Force-overwrite:.....True WARN: WARN: kernelstub.Installer : INFO Copying Kernel into ESP WARN: kernelstub.Installer : INFO Copying initrd.img into ESP WARN: kernelstub.Installer : INFO Setting up loader.conf configuration WARN: kernelstub.Installer : INFO Making entry file for Pop!_OS WARN: kernelstub.Installer : INFO Backing up old kernel WARN: kernelstub.Installer : INFO Making entry file for Pop!_OS WARN: ++ findmnt -n -o UUID /recovery WARN: + RECOVERY_UUID= WARN: + true WARN: + '[' -d /boot/efi -a -d /cdrom -a -n '' ']' WARN: + '[' 0 -eq 1 ']' WARN: + update-initramfs -u INFO: update-initramfs: Generating /boot/initrd.img-4.15.0-33-generic WARN: kernelstub.Config : INFO Looking for configuration... WARN: kernelstub : INFO System information: WARN: WARN: OS:..................Pop!_OS 18.04 WARN: Root partition:....../dev/sda2 WARN: Root FS UUID:........15a009a2-4c8b-4314-af75-788e4f75f57a WARN: ESP Path:............/boot/efi WARN: ESP Partition:......./dev/sda1 WARN: ESP Partition #:.....1 WARN: NVRAM entry #:.......-1 WARN: Boot Variable #:.....0000 WARN: Kernel Boot Options:.quiet loglevel=0 systemd.show_status=false splash WARN: Kernel Image Path:.../vmlinuz WARN: Initrd Image Path:.../initrd.img WARN: Force-overwrite:.....False WARN: WARN: kernelstub.Installer : INFO Copying Kernel into ESP WARN: kernelstub.Installer : INFO Copying initrd.img into ESP WARN: kernelstub.Installer : INFO Setting up loader.conf configuration WARN: kernelstub.Installer : INFO Making entry file for Pop!_OS WARN: kernelstub.Installer : INFO Backing up old kernel WARN: kernelstub.Installer : INFO Making entry file for Pop!OS INFO: mounting /tmp/distinst.lzdLjET1C7WU/etc to /etc DEBUG: "chroot" "/tmp/distinst.lzdLjET1C7WU" "/usr/bin/env" "-i" "KBD_LAYOUT=latam" "KBD_MODEL=" "KBD_VARIANT=" "bash" "-c" "localectl set-x11-keymap "${KBD_LAYOUT}" "${KBD_MODEL}" "${KBD_VARIANT}" && SYSTEMCTL_SKIP_REDIRECT= openvt -- sh /etc/init.d/console-setup.sh reload && ln -s /etc/console-setup/cached_UTF-8_del.kmap.gz /etc/console-setup/cached.kmap.gz && update-initramfs -u" INFO: update-initramfs: Generating /boot/initrd.img-4.15.0-33-generic WARN: kernelstub.Config : INFO Looking for configuration... WARN: kernelstub : INFO System information: WARN: WARN: OS:..................Pop!_OS 18.04 WARN: Root partition:....../dev/sda2 WARN: Root FS UUID:........15a009a2-4c8b-4314-af75-788e4f75f57a WARN: ESP Path:............/boot/efi WARN: ESP Partition:......./dev/sda1 WARN: ESP Partition #:.....1 WARN: NVRAM entry #:.......-1 WARN: Boot Variable #:.....0000 WARN: Kernel Boot Options:.quiet loglevel=0 systemd.show_status=false splash WARN: Kernel Image Path:.../vmlinuz WARN: Initrd Image Path:.../initrd.img WARN: Force-overwrite:.....False WARN: WARN: kernelstub.Installer : INFO Copying Kernel into ESP WARN: kernelstub.Installer : INFO Copying initrd.img into ESP WARN: kernelstub.Installer : INFO Setting up loader.conf configuration WARN: kernelstub.Installer : INFO Making entry file for Pop!_OS WARN: kernelstub.Installer : INFO Backing up old kernel WARN: kernelstub.Installer : INFO Making entry file for Pop!_OS INFO: unmounting /etc INFO: unmounting /tmp/distinst.lzdLjET1C7WU/cdrom INFO: unmounting /tmp/distinst.lzdLjET1C7WU/sys/firmware/efi/efivars INFO: unmounting /tmp/distinst.lzdLjET1C7WU/sys INFO: unmounting /tmp/distinst.lzdLjET1C7WU/run INFO: unmounting /tmp/distinst.lzdLjET1C7WU/proc INFO: unmounting /tmp/distinst.lzdLjET1C7WU/dev/pts INFO: unmounting /tmp/distinst.lzdLjET1C7WU/dev INFO: unmounting /tmp/distinst.lzdLjET1C7WU/sys INFO: unmounting /tmp/distinst.lzdLjET1C7WU/run INFO: unmounting /tmp/distinst.lzdLjET1C7WU/proc INFO: unmounting /tmp/distinst.lzdLjET1C7WU/dev/pts INFO: unmounting /tmp/distinst.lzdLjET1C7WU/dev INFO: unmounting /tmp/distinst.lzdLjET1C7WU/dev INFO: unmounting /tmp/distinst.lzdLjET1C7WU/dev/pts INFO: unmounting /tmp/distinst.lzdLjET1C7WU/proc INFO: unmounting /tmp/distinst.lzdLjET1C7WU/run INFO: unmounting /tmp/distinst.lzdLjET1C7WU/sys INFO: starting configuring bootloader step INFO: /dev/sda: installing bootloader for Efi INFO: mounting /dev to /tmp/distinst.lzdLjET1C7WU/dev INFO: mounting /dev/pts to /tmp/distinst.lzdLjET1C7WU/dev/pts INFO: mounting /proc to /tmp/distinst.lzdLjET1C7WU/proc INFO: mounting /run to /tmp/distinst.lzdLjET1C7WU/run INFO: mounting /sys to /tmp/distinst.lzdLjET1C7WU/sys INFO: mounting /sys/firmware/efi/efivars to /tmp/distinst.lzdLjET1C7WU/sys/firmware/efi/efivars DEBUG: "chroot" "/tmp/distinst.lzdLjET1C7WU" "bootctl" "install" "--path=/boot/efi" "--no-variables" WARN: File system "/boot/efi" is not on a GPT partition table. INFO: unmounting /tmp/distinst.lzdLjET1C7WU/sys/firmware/efi/efivars INFO: unmounting /tmp/distinst.lzdLjET1C7WU/sys INFO: unmounting /tmp/distinst.lzdLjET1C7WU/run INFO: unmounting /tmp/distinst.lzdLjET1C7WU/proc INFO: unmounting /tmp/distinst.lzdLjET1C7WU/dev/pts INFO: unmounting /tmp/distinst.lzdLjET1C7WU/dev INFO: unmounting /tmp/distinst.lzdLjET1C7WU/dev INFO: unmounting /tmp/distinst.lzdLjET1C7WU/dev/pts INFO: unmounting /tmp/distinst.lzdLjET1C7WU/proc INFO: unmounting /tmp/distinst.lzdLjET1C7WU/run INFO: unmounting /tmp/distinst.lzdLjET1C7WU/sys ERROR: configuring bootloader error: bootctl failed with status: exit code: 1

    opened by cezario 10
  • Activate casefolding feature by default (without chattr)

    Activate casefolding feature by default (without chattr)

    Case-insensitive ext4 is extremely recent, but the systems this installer's version would be installing are likely to support casefolding.

    This feature is useful in cases where a program may not be native to Linux (e.g. being run under WINE [or a derivative], or using a shared codebase between platforms that may not take in/sensitivity in account) and the original implementation of the program assumes case insensitivity. In addition to enabling the casefolding feature at the filesystem level, enabling case insensitivity requires the user (or automated systems) to add the CI_dir attribute to a folder.

    Therefore, there is limited to no risk that this feature would apply system-wide from the get-go, unless the installer was to chattr +F / before bootstrapping the system drive.

    [Short version: enable casefolding by default for easier servicing of Gaming use-cases w.r.t. Proton and other filesystem issues]

    References:

    opened by cybik 9
  • Installer doesn't understand LVM, and doesn't detect existing volumes/filesystems.

    Installer doesn't understand LVM, and doesn't detect existing volumes/filesystems.

    This is a severe issue. I suspect that it's an issue in the Elementary OS installer that you're using. But it's almost certain to require fixes in distinst too.

    I am directing you directly to the full issue description at their repo, to avoid duplicating the extensive description:

    https://github.com/elementary/installer/issues/492

    The main drawbacks of the installer's current inability to understand LVM are:

    • Inability to pre-format your filesystem with desired filesystem creation flags. Because it'll always be forcibly reformatted using default installer settings instead.
    • Data loss if you re-/install an OS onto the LVM container. Because the existing filesystem will always be forcibly reformatted.
    • Inability to do a "refresh/fix installation" via the rescue partition / live CD to fix the operating system. Because the installer doesn't understand that you have an existing filesystem on top of LVM and therefore it doesn't see your existing Linux installation.
    opened by Bananaman 9
  • Create user and set timezone from installer

    Create user and set timezone from installer

    It works!

    • [x] Timezones are passed across FFI via an iterator to prevent memory leaks.
    • [x] Timezone API confirmed to work from Vala in the installer
    • [x] Sort regions and zones
    • [x] Set the full name for the given user to create account
    • [x] Test that user creation and timezone setting works for an install
    • [x] Set the full name for the user account.
    • [x] Modify the API to enable setting the timezone and user account creation after the install starts.
    • [x] Support creating a user account from the installer

    The CLI now takes the following new arguments:

    --username 'name'
    --realname 'real name'
    --timezone 'Zone/Region'
    

    The password is taken from stdin for the CLI:

    echo "password" | distinst ...
    
    opened by mmstick 8
  • Additional Unit Tests, Refactoring, & C FFI Pointer Validation

    Additional Unit Tests, Refactoring, & C FFI Pointer Validation

    There should be no changes to functionality or the API made in this PR. Functionality only needs to be tested to ensure that everything still works as before. GTK installer + CLI

    • Fix a build error due to a lack of a dev dependency for an example
    • Fix an existing test which is broken
    • Add many more unit tests for that which is not yet unit tested
    • Refactor BlockInfo
    • Add a few function comments missing from PartitionInfo's methods.
    • Applied clippy suggestions, which will improve performance
    • Refactored the CLI workspace into modules
    • Check every pointer received from the C FFI before attempting to do anything with them.

    Closes #45

    opened by mmstick 8
  • elementary OS needs a special EFI case like Pop

    elementary OS needs a special EFI case like Pop

    Currently, attempting to install elementary OS with distinst fails because distinst logic guesses the EFI path is something with elementary_OS in the name, drawing variables from /etc/os-release. However, elementary OS has the same paths as Ubuntu. Generating an elementary OS .iso that has fakes its os-release entries to match Ubuntu leads to a working distinst installation. Please add such a case.

    opened by codygarver 7
  • Encrypted Install completes but system falls to initramfs prompt

    Encrypted Install completes but system falls to initramfs prompt

    Distribution (run cat /etc/os-release): 18.10 debug iso 12

    Issue/Bug Description: When attempting to do a full disk encrypted installation, the installer completes without failing. Upon rebooting the error appears: WARNING: Failed to connect to lvmetad. Falling back to device scanning.

    After a few seconds, the system ends up at a initramfs prompt.

    I checked the recovery partition and was taken to an initramfs prompt as well.

    The output of journalctl -t io.elementary.installer.desktop was: install.log

    18.10 
    opened by brs17 7
  • EFI GPT Checks

    EFI GPT Checks

    • Allows the caller to get the partition table of a disk to determine if an EFI partition on that disk is a valid configuration.
    • Additionally checks itself before installing to see if the provided input is correct.
    opened by mmstick 7
  • fstab pass value is set to 0 for all filesystems (including root)

    fstab pass value is set to 0 for all filesystems (including root)

    Distribution (run cat /etc/os-release): Pop!_OS 22.04

    Related Application and/or Package Version (run apt policy $PACKAGE NAME): 0.3.2~1663157572~22.04~d343ec3

    Issue/Bug Description: In Pop!_OS, the final value for all lines in /etc/fstab is 0. This field controls the filesystem check (fsck) on boot. Ubuntu has the root partition defaulting to 1 (and other partitions can be set to 2 to be checked after the root partition.)

    It looks like this is set here: https://github.com/pop-os/distinst/blob/d343ec3444097afb76ebf9339a1cc736cafab1b2/crates/fstab-generate/src/block.rs

    Steps to reproduce (if you know): Install Pop!_OS, check /etc/fstab.

    Expected behavior: Other distributions default to or recommend that the root partition have this field set to 1 so the root filesystem is checked on boot.

    Other Notes: A user in Mattermost asked about this, and I didn't have a good answer. I'm not sure if this default setting was intentional, but if it was, I couldn't find any previous issues, PRs, or chat conversations about it.

    The only reason I can think of for skipping the filesystem check would be saving time on boot, but my understanding is that the check doesn't have to do much if there aren't any issues.

    good first issue bite-sized 
    opened by jacobgkau 0
  • Partitions are 1 sector smaller than expected and not aligned to 1 MiB boundaries

    Partitions are 1 sector smaller than expected and not aligned to 1 MiB boundaries

    Distribution: Pop!_OS 22.04 LTS

    Related Application and/or Package Version: The Pop!_OS 22.04 LTS installer.

    Issue/Bug Description: Each partition's end sector is 1 sector less than expected. For example, a 498 MiB Boot EFI partition starting at 4096 should end at 1023999 with a size of 1019904 sectors. However, it ends at 1023998 with a size of 1019903 sectors. The next partition starts at 1024000 as expected. This happens when doing a custom install or a clean install. There seems to be an off-by-one bug somewhere.

    For a clean install, I noticed that the end of the root partition and start of the swap partition were not aligned at 1 MiB boundary. It seems the root partition is sized at whatever fits between fixed recovery and swap partitions.

    Steps to reproduce (if you know): Perform either a clean install or custom install.

    Expected behavior: Partitions should be fully sized and aligned to 1 MiB boundaries.

    Other Notes: I tested installations to a USB drive and to an SSD.

    Here is an installer log excerpt. Note the incorrect partition sizes; I think it's calculated with end - start when it should be end - start + 1:

    [INFO distinst:crates/disk-ops/src/ops.rs:221] creating partition (PartitionCreate { path: "/dev/sdb", start_sector: 4096, end_sector: 1023999, format: true, file_system: Some(Fat32), kind: Primary, flags: [PED_PARTITION_ESP], label: None }) on /dev/sdb
    [INFO distinst:crates/disk-ops/src/parted.rs:20] opening device at /dev/sdb
    [INFO distinst:crates/disk-ops/src/mkpart.rs:81] creating new partition with 1019903 sectors: 4096 - 1023999
    [INFO distinst:crates/disk-ops/src/parted.rs:31] opening disk at /dev/sdb
    [INFO distinst:crates/disk-ops/src/mkpart.rs:124] committing new partition (4096:1023999) on /dev/sdb
    [INFO distinst:crates/disk-ops/src/parted.rs:62] committing changes to /dev/sdb
    [INFO distinst:crates/disk-ops/src/parted.rs:78] syncing device at /dev/sdb
    [INFO distinst:crates/disk-ops/src/parted.rs:8] getting device at /dev/sdb
    [INFO distinst:crates/disk-ops/src/parted.rs:31] opening disk at /dev/sdb
    [INFO distinst:crates/disk-ops/src/ops.rs:221] creating partition (PartitionCreate { path: "/dev/sdb", start_sector: 1024000, end_sector: 15693823, format: true, file_system: Some(Ext4), kind: Primary, flags: [], label: None }) on /dev/sdb
    [INFO distinst:crates/disk-ops/src/parted.rs:20] opening device at /dev/sdb
    [INFO distinst:crates/disk-ops/src/mkpart.rs:81] creating new partition with 14669823 sectors: 1024000 - 15693823
    [INFO distinst:crates/disk-ops/src/parted.rs:31] opening disk at /dev/sdb
    [INFO distinst:crates/disk-ops/src/mkpart.rs:124] committing new partition (1024000:15693823) on /dev/sdb
    [INFO distinst:crates/disk-ops/src/parted.rs:62] committing changes to /dev/sdb
    

    Looking at https://github.com/pop-os/distinst/blob/master/crates/disk-ops/src/mkpart.rs I think line 67 should be let length = partition.get_sector_end() - partition.get_sector_start() + 1; and line 79 should be let (start, end) = (geometry.start(), geometry.start() + geometry.length() - 1);

    opened by acodegazer 0
  • Install Pop!_OS freezes when decrypting default luks partition

    Install Pop!_OS freezes when decrypting default luks partition

    Distribution (run cat /etc/os-release):

    NAME="Pop!_OS"
    VERSION="22.04 LTS"
    ID=pop
    ID_LIKE="ubuntu debian"
    PRETTY_NAME="Pop!_OS 22.04 LTS"
    VERSION_ID="22.04"
    HOME_URL="https://pop.system76.com"
    SUPPORT_URL="https://support.system76.com"
    BUG_REPORT_URL="https://github.com/pop-os/pop/issues"
    PRIVACY_POLICY_URL="https://system76.com/privacy"
    VERSION_CODENAME=jammy
    UBUNTU_CODENAME=jammy
    LOGO=distributor-logo-pop-os
    

    Related Application and/or Package Version (run apt policy $PACKAGE NAME): distinst, more accurately the "Install Pop!_OS" GUI

    Issue/Bug Description: When attempting the "Custom (Advanced)" option under "Clean Install", I am unable to decrypt the luks partition created by the "Clean Install". When I type in the encryption password, the GUI freezes, and the DE reports that it is not responding. I have attempted to wait, however after >15 minutes there is no change, and I have to force quit the installer.

    Output of lsblk (after decrypting in the installer):

    NAME            MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
    loop0             7:0    0   2.5G  1 loop  /rofs
    nvme0n1         259:0    0 465.9G  0 disk  
    ├─nvme0n1p1     259:1    0   3.9G  0 part  
    ├─nvme0n1p2     259:2    0    32G  0 part  /cdrom
    ├─nvme0n1p3     259:3    0   398G  0 part  
    │ └─cryptdata   253:0    0   398G  0 crypt 
    │   └─data-root 253:1    0   398G  0 lvm   
    └─nvme0n1p4     259:4    0    32G  0 part  
    

    installer.log:

    [INFO distinst:crates/disks/src/config/disks.rs:579] probed "/dev/nvme0n1"
    [INFO distinst:crates/disks/src/config/disk.rs:164] obtaining disk information from /dev/nvme0n1
    [INFO distinst:crates/disks/src/serial.rs:14] obtaining serial model from /dev/nvme0n1
    [INFO distinst:crates/disk-ops/src/parted.rs:31] opening disk at /dev/nvme0n1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p2
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p3
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p4
    [INFO distinst:crates/external/src/lvm.rs:209] obtaining list of physical volumes
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p1"
    [INFO distinst:crates/os-detect/src/lib.rs:52] detecting OS from device: "/dev/nvme0n1p1"
    [INFO distinst:crates/os-detect/src/lib.rs:68] detecting OS from "/tmp/distinst.u28bOisYc8Kl"
    [INFO distinst:crates/os-detect/src/lib.rs:71] Found "/tmp/distinst.u28bOisYc8Kl/EFI"
    [INFO distinst:crates/os-detect/src/lib.rs:71] Found "/tmp/distinst.u28bOisYc8Kl/loader"
    [INFO distinst:crates/os-detect/src/lib.rs:71] Found "/tmp/distinst.u28bOisYc8Kl/04a78ed7da8a4b96fbe72fc762e98b59"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p2"
    [INFO distinst:crates/os-detect/src/lib.rs:52] detecting OS from device: "/dev/nvme0n1p2"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p3"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p4"
    [INFO distinst:src/auto/options/mod.rs:176] found erase option on "/dev/nvme0n1": 122138132 sectors
    [INFO distinst:crates/disks/src/config/disks.rs:579] probed "/dev/nvme0n1"
    [INFO distinst:crates/disks/src/config/disk.rs:164] obtaining disk information from /dev/nvme0n1
    [INFO distinst:crates/disks/src/serial.rs:14] obtaining serial model from /dev/nvme0n1
    [INFO distinst:crates/disk-ops/src/parted.rs:31] opening disk at /dev/nvme0n1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p2
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p3
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p4
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p1"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p2"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p3"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p4"
    [INFO distinst:crates/disks/src/config/disks.rs:579] probed "/dev/nvme0n1"
    [INFO distinst:crates/disks/src/config/disk.rs:164] obtaining disk information from /dev/nvme0n1
    [INFO distinst:crates/disks/src/serial.rs:14] obtaining serial model from /dev/nvme0n1
    [INFO distinst:crates/disk-ops/src/parted.rs:31] opening disk at /dev/nvme0n1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p2
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p3
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p4
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1"
    [ERROR distinst:ffi/src/lib.rs:49] libdistinst: pointer in FFI is null
    [INFO distinst:crates/disks/src/config/disks.rs:448] decrypting partition at "/dev/nvme0n1p3"
    [INFO distinst:crates/external/src/lvm.rs:51] searching for device maps to deactivate
    [INFO distinst:crates/disks/src/external.rs:117] cryptsetup is opening /dev/nvme0n1p3 with pv cryptdata and LvmEncryption { physical_volume: cryptdata, password: hidden, keydata: None }
    [INFO distinst:crates/external/src/lib.rs:34] executing cryptsetup with ["open", "/dev/nvme0n1p3", "cryptdata"]
    [INFO distinst:crates/disks/src/config/disks.rs:463] which belongs to PV "/dev/mapper/cryptdata"
    [INFO distinst:crates/external/src/lvm.rs:209] obtaining list of physical volumes
    [INFO distinst:crates/disks/src/config/disks.rs:482] settings luks_parent to "/dev/nvme0n1p3"
    [INFO distinst:crates/disks/src/config/lvm/mod.rs:183] adding partitions to LVM device
    [INFO distinst:crates/external/src/lvm.rs:248] activating 'data'
    [INFO distinst:crates/external/src/lib.rs:34] executing vgchange with ["-ffyay", "data"]
    [INFO distinst:crates/external/src/lvm.rs:159] obtaining logical volumes on data
    [INFO distinst:ffi/src/lvm.rs:77] getting logical device
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/data"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/dm-1"
    [INFO distinst:crates/external/src/luks.rs:101] deactivating encrypted device named cryptdata
    [INFO distinst:crates/external/src/lvm.rs:209] obtaining list of physical volumes
    [INFO distinst:crates/external/src/lvm.rs:266] deactivating 'data'
    [INFO distinst:crates/external/src/lib.rs:34] executing vgchange with ["-ffyan", "data"]
    [INFO distinst:crates/external/src/lib.rs:34] executing cryptsetup with ["close", "cryptdata"]
    [INFO distinst:crates/disks/src/config/disks.rs:579] probed "/dev/nvme0n1"
    [INFO distinst:crates/disks/src/config/disk.rs:164] obtaining disk information from /dev/nvme0n1
    [INFO distinst:crates/disks/src/serial.rs:14] obtaining serial model from /dev/nvme0n1
    [INFO distinst:crates/disk-ops/src/parted.rs:31] opening disk at /dev/nvme0n1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p2
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p3
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p4
    [INFO distinst:crates/external/src/lvm.rs:209] obtaining list of physical volumes
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p1"
    [INFO distinst:crates/os-detect/src/lib.rs:52] detecting OS from device: "/dev/nvme0n1p1"
    [INFO distinst:crates/os-detect/src/lib.rs:68] detecting OS from "/tmp/distinst.fWEKBNmXCqR1"
    [INFO distinst:crates/os-detect/src/lib.rs:71] Found "/tmp/distinst.fWEKBNmXCqR1/EFI"
    [INFO distinst:crates/os-detect/src/lib.rs:71] Found "/tmp/distinst.fWEKBNmXCqR1/loader"
    [INFO distinst:crates/os-detect/src/lib.rs:71] Found "/tmp/distinst.fWEKBNmXCqR1/04a78ed7da8a4b96fbe72fc762e98b59"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p2"
    [INFO distinst:crates/os-detect/src/lib.rs:52] detecting OS from device: "/dev/nvme0n1p2"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p3"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p4"
    [INFO distinst:src/auto/options/mod.rs:176] found erase option on "/dev/nvme0n1": 122138132 sectors
    [INFO distinst:crates/disks/src/config/disks.rs:579] probed "/dev/nvme0n1"
    [INFO distinst:crates/disks/src/config/disk.rs:164] obtaining disk information from /dev/nvme0n1
    [INFO distinst:crates/disks/src/serial.rs:14] obtaining serial model from /dev/nvme0n1
    [INFO distinst:crates/disk-ops/src/parted.rs:31] opening disk at /dev/nvme0n1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p2
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p3
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p4
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p1"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p2"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p3"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1p4"
    [INFO distinst:crates/disks/src/config/disks.rs:579] probed "/dev/nvme0n1"
    [INFO distinst:crates/disks/src/config/disk.rs:164] obtaining disk information from /dev/nvme0n1
    [INFO distinst:crates/disks/src/serial.rs:14] obtaining serial model from /dev/nvme0n1
    [INFO distinst:crates/disk-ops/src/parted.rs:31] opening disk at /dev/nvme0n1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p1
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p2
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p3
    [INFO distinst:crates/disks/src/config/partitions/mod.rs:119] obtaining partition information from /dev/nvme0n1p4
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/nvme0n1"
    [ERROR distinst:ffi/src/lib.rs:49] libdistinst: pointer in FFI is null
    [INFO distinst:crates/disks/src/config/disks.rs:448] decrypting partition at "/dev/nvme0n1p3"
    [INFO distinst:crates/external/src/lvm.rs:51] searching for device maps to deactivate
    [INFO distinst:crates/disks/src/external.rs:117] cryptsetup is opening /dev/nvme0n1p3 with pv cryptdata and LvmEncryption { physical_volume: cryptdata, password: hidden, keydata: None }
    [INFO distinst:crates/external/src/lib.rs:34] executing cryptsetup with ["open", "/dev/nvme0n1p3", "cryptdata"]
    [INFO distinst:crates/disks/src/config/disks.rs:463] which belongs to PV "/dev/mapper/cryptdata"
    [INFO distinst:crates/external/src/lvm.rs:209] obtaining list of physical volumes
    [INFO distinst:crates/disks/src/config/disks.rs:482] settings luks_parent to "/dev/nvme0n1p3"
    [INFO distinst:crates/disks/src/config/lvm/mod.rs:183] adding partitions to LVM device
    [INFO distinst:crates/external/src/lvm.rs:248] activating 'data'
    [INFO distinst:crates/external/src/lib.rs:34] executing vgchange with ["-ffyay", "data"]
    [INFO distinst:crates/external/src/lvm.rs:159] obtaining logical volumes on data
    [INFO distinst:ffi/src/lvm.rs:77] getting logical device
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/data"
    [DEBUG distinst:crates/disk-types/src/sector.rs:17] get block size for "/sys/class/block/dm-1"
    

    Steps to reproduce (if you know):

    1. Perform the Clean Install -> Clean Install (erase everything)
    2. Close the installer
    3. Reopen it and open "Custom (Advanced)"
    4. Select the luks partition and attempt to decrypt it

    Expected behavior: After the partition decrypts, it should be able to be selected for formatting like non-encrypted partitions can, as seen at https://mutschler.dev/linux/pop-os-btrfs-22-04/

    Other Notes:

    • The behavior is the same on the recovery partition and from a live usb
    • The behavior is the same if you restart before starting step 3
    • This is from an .iso I downloaded and flashed today
    • lsblk implies that the decryption was successful

    EDIT

    I was able to decrypt the partition. I selected "modify partitions" and decrypted it. I then formatted it to btrfs and exited gparted. I was then able to decrypt it fine in the Pop installer. However, I feel this issue still stands as the Pop!_OS installer is still unable to decrypt by itself.

    opened by alex-ahr 0
  • Btrfs as the default filesystem?

    Btrfs as the default filesystem?

    I decided to open an issue based on this comment: https://github.com/pop-os/distinst/pull/286#issuecomment-1154043654 I hope it will be useful.

    It's nice that popOS is planning to change the filesystem to Btrfs by default. I have been using Btrfs for many years with great satisfaction, snapshots are very useful. I would like to pay attention to some aspects:

    • Enable zstd level 1 compression, Fedora has been using it since version 34: https://fedoraproject.org/wiki/Changes/BtrfsTransparentCompression#Summary

    If snapshots are enabled by default:

    • Exclude unnecessary folders at the time of restore, there are many folders under "/var" that the user may not want to include in snapshots, this has the advantage of having minimal snapshots and taking up little space over time. There are issues on Fedora and openSUSE for including package manager database at "/usr/..." to facilitate snapshot management. https://fedoraproject.org/wiki/Changes/RelocateRPMToUsr http://lists.rpm.org/pipermail/rpm-maint/2017-October/006681.html EDIT: To clarify, on openSUSE and from Fedora 36 the rpm database has already been moved to "/usr"
    emanu@fedora ~> ls -l /var/lib/rpm
    lrwxrwxrwx. 1 root root 26 10 mag 21.05 /var/lib/rpm -> ../../usr/lib/sysimage/rpm/
    

    I understand that it is a non trivial change and it could also depend on your upstream (Ubuntu) so maybe initially creating some additional subvolumes could improve the situation in case of automated snapshots, this is my layout (It allows me to have minimal snapshots):

    UUID=1dfbd78c-313d-44a6-9612-2c7b45bed032 /                       btrfs   noatime,compress=zstd:1,subvol=@ 0 0
    UUID=4323-EA93          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
    UUID=1dfbd78c-313d-44a6-9612-2c7b45bed032 /home                   btrfs   noatime,compress=zstd:1,subvol=@home    0 0
    UUID=1dfbd78c-313d-44a6-9612-2c7b45bed032 /var/cache              btrfs   noatime,compress=zstd:1,subvol=var_cache 0 0
    UUID=1dfbd78c-313d-44a6-9612-2c7b45bed032 /var/lib/flatpak        btrfs   noatime,compress=zstd:1,subvol=var_lib_flatpak 0 0
    UUID=1dfbd78c-313d-44a6-9612-2c7b45bed032 /var/lib/libvirt        btrfs   noatime,compress=zstd:1,subvol=var_lib_libvirt 0 0
    UUID=1dfbd78c-313d-44a6-9612-2c7b45bed032 /var/lib/machines       btrfs   noatime,compress=zstd:1,subvol=var_lib_machines 0 0
    UUID=1dfbd78c-313d-44a6-9612-2c7b45bed032 /var/log                btrfs   noatime,compress=zstd:1,subvol=var_log 0 0
    UUID=1dfbd78c-313d-44a6-9612-2c7b45bed032 /var/tmp                btrfs   noatime,compress=zstd:1,subvol=var_tmp 0 0
    
    

    Thanks and good job

    opened by emanuc 0
  • Broken boot configuration for installation into encrypted partitions (whole disk install not affected)

    Broken boot configuration for installation into encrypted partitions (whole disk install not affected)

    Distribution (run cat /etc/os-release):

    NAME="Pop!_OS" VERSION="22.04 LTS" ID=pop ID_LIKE="ubuntu debian" PRETTY_NAME="Pop!_OS 22.04 LTS" VERSION_ID="22.04" HOME_URL="https://pop.system76.com" SUPPORT_URL="https://support.system76.com" BUG_REPORT_URL="https://github.com/pop-os/pop/issues" PRIVACY_POLICY_URL="https://system76.com/privacy" VERSION_CODENAME=jammy UBUNTU_CODENAME=jammy LOGO=distributor-logo-pop-os

    Related Application and/or Package Version (run apt policy $PACKAGE NAME):

    Installer

    Issue/Bug Description:

    Installing with encryption (without taking the whole disk) fails to set up the /etc/crypttab and /etc/fstab correctly. Without encryption, no issue is seen. Installing with encryption to an entire disk is also fine.

    Steps to reproduce (if you know):

    Boot from released image into live desktop Install to a specific (new or existing) LUKS partition, opting to format the internal volume to ext4. When you reboot post-install, the system will drop to busybox because the boot process is not set-up.

    On inspection, /etc/crypttab will be blank and /etc/fstab will be pointing at the LUKS UUID for root whilst declaring it ext4.

    Recovery requires booting into live environment again, to mount the LUKS volume and /boot/efi. On chroot-ing into the broken system, /etc/crypttab and /etc/fstab need to be edited and update-initramfs used to fix up the load.

    Expected behavior:

    On any installation to an encrypted volume, the installer should recognize this and ensure the installation has the required entries in /etc/crypttab and /etc/fstab to allow a successful boot.

    Other Notes:

    Ubuntu fixed this for the first time in their 22.04 release (prior releases would fail to set things up properly) and Linux Mint handles this properly, in case implementation references might be useful.

    opened by philstopford 0
  • Pop fails custom install from recovery partition.

    Pop fails custom install from recovery partition.

    Distribution (run cat /etc/os-release):

    Pop 22.04

    Related Application and/or Package Version (run apt policy $PACKAGE NAME):

    distinst 0.3.2~1651006169~22.04~8d1ac3f
    pop-installer 0.0.1~1648678175~22.04~7d8bd3a
    

    Issue/Bug Description:

    When attempting to install via custom install from the recovery partition: selecting the EFI, Root, and Swap partitions, but not formatting, reliably causes a failure to install. This also seems to effect fresh installs from live-disk over-top of previous Pop installs, and may effect live disk installs generally, pending further testing.

    Steps to reproduce (if you know):

    1. Boot into recovery partitions
    2. Select "clean install"
    3. Select "custom install"
    4. Select the EFI, Root, and Swap partitions for use, but otherwise do not format, change file system type, or do anything else
    5. Commit to erase and install, and proceed through the rest of the install process as normal.
    6. Install fails.

    Expected behavior:

    Successful installation of Pop!_OS

    Other Notes:

    Example log from failed install attempt: installer.log

    opened by XV-02 1
Owner
Pop!_OS
An Operating System by System76
Pop!_OS
The Rust toolchain installer

rustup: the Rust toolchain installer Master CI Build Status Windows macOS Linux Etc rustup installs The Rust Programming Language from the official re

The Rust Programming Language 5.1k Jan 8, 2023
Installer for yuzu early access

This is installer is programmed for the 128BitBay Server! License 128Bit Yuzu Installer is licensed under the Apache 2.0 License, which can be found i

MostlyWhat 105 Jan 7, 2023
installer for project brunch (by sebanc)

Brunch-installer Installer for brunch (made by sebanc) This was made in an attempt to simplify the installation process of chromeos using project brun

null 2 Mar 30, 2022
Installer/Updater/Launcher for Northstar

FlightCore A Northstar installer, updater, and mod-manager Roadmap --> See #1 Development Make sure you have the necessary dependencies installed: htt

null 7 Dec 24, 2022
WinDbg installer/updater

windup Windup is an installer for WinDbg that uses the appinstaller file at https://aka.ms/windbg/download to install the latest version of WinDbg. It

Tim Misiak 19 Jul 12, 2023
A render-backend independant egui backend for sdl2

A Sdl2 + Egui Backend An egui backend for sdl2 unbound to any renderer-backend. You can include it like so: [dependencies] egui_sdl2_platform = "0.1.0

null 4 Dec 16, 2022
A modern editor with a backend written in Rust.

Xi Editor (pronounced "Zigh") A modern editor with a backend written in Rust. Maintenance status: The xi-editor project is not currently under active

null 19.7k Jan 5, 2023
Truly cross platform, truly native. multiple backend GUI for rust

WIP: Sauron-native a rust UI library that conquers all platforms ranging from desktop to mobile devices. An attempt to create a truly native, truly cr

Jovansonlee Cesar 627 Jan 5, 2023
Example application using a Vue frontend with Rust backend that has authentication + authorization.

This project contains a Rust server that serves a single page application and has authentication + JWT-based authorization.

null 43 Dec 9, 2022
unFlow is a Design as Code implementation, a DSL for UX & backend modeling. DSL to Sketch file, Sketch to DSL, DSL to code.

unflow 是一个低代码、无代码设计语言。unFlow is a Design as Code implementation, a DSL for UX & backend modeling. DSL to Sketch file, Sketch to DSL, DSL to code.

Inherd OS Team (硬核开源小组) 70 Nov 27, 2022
Robyn is an async Python backend server with a runtime written in Rust, btw.

Robyn is an async Python backend server with a runtime written in Rust, btw.

Sanskar Jethi 1.8k Jan 4, 2023
An egui backend for godot-rust

Godot Egui An egui backend for godot-rust. Rationale Godot has a perfectly valid GUI system, so why egui? Here are my personal reasons: Simplicity: No

null 109 Jan 4, 2023
🦔 Fast, lightweight & schema-less search backend. An alternative to Elasticsearch that runs on a few MBs of RAM.

?? Fast, lightweight & schema-less search backend. An alternative to Elasticsearch that runs on a few MBs of RAM.

Valerian Saliou 17.4k Jan 2, 2023
Autogenerated async RPC bindings that instantly connect a JS frontend to a Rust backend service via WebSockets and WASM.

Turbocharger Autogenerated async RPC bindings that instantly connect a JS frontend to a Rust backend service via WebSockets and WASM. See https://gith

null 28 Jan 2, 2023
example of a full stack web app (backend and frontend) wrtiten in Rust

rust-fullstack-example An example of creating a full stack web application (backend and frontend) using Rust. Backend Go to ./backend and start the se

mario 41 Dec 16, 2022
A pure Rust PLONK implementation using arkworks as a backend.

PLONK This is a pure Rust implementation of the PLONK zk proving system Usage use ark_plonk::prelude::*; use ark_ec::bls12::Bls12; use rand_core::OsRn

rust-zkp 201 Dec 31, 2022
The 峨眉 (EMei) JIT/AOT backend framework.

emei The 峨眉 (EMei) JIT/AOT backend framework. Support Instructions x86_64 mov mov mov_zero_extend_bit8/16 mov_sign_extend_bit8/16/32 mov_rev movs(is m

Lyzh 14 Apr 11, 2022
Run Github Actions workflows locally or on a custom backend

gha-runner runs Github Actions workflows. You can run workflows locally, or extend gha-runner with custom backends to run workflows elsewhere (e.g. Pe

Pernosco 12 Dec 27, 2022
FLTK frontend for Egui WGPU backend.

Egui FLTK Frontend FLTK Frontend for Egui WGPU Backend On linux Debian/Ubuntu, make sure to install the latest main requirements: sudo apt-get update

Adia Robbie 5 Oct 25, 2022
This is an implementation of an Iced backend for Plotters, for both native and wasm applications.

plotters-iced This is an implementation of an Iced backend for Plotters, for both native and wasm applications. This backend has been optimized as for

joylei 54 Dec 14, 2022