# metal

connman not set up, might not like it.

bluez missing

## default devuan user disappears

## change /tmp to tmpfs

rewrite the docker helpers that just set config in apt-conf.d to the sysconf pattern.

1. a heredoc that doesn't redirect to a file with function names of the form:
   conf*print*<NAME>()
2. a line to direct the print function to a file of the form:
   conf_print_fstab | sudo tee "$strapdir/etc/fstab" >/dev/null

---

Move the docker blend and associated files into its own blend directory.
Move the metal blend and associated file into its own blend directory.

add submodules, dockerfile and gitlab-ci.yml so that images can be build automatically.

---

debootstrap has the option 'doing_variant' that accepts

- minbase - base="$devuan_required apt"
- buildd - base="$devuan_required apt build-essential"
- fakechroot - base="$devuan_required $(get_debs Priority: important)"  
required="$required binutils"
-             - base="$devuan_required $(get_debs Priority: important)"

To get the packages involved:
dpkg-query -f '${binary:Package} ${Priority}\n' -W | grep -w 'required\|important'

so we would have to override lib/libdevuansdk/zlibs/bootstrap to:

- add --variant or
- change the --includes to be a list in config debootstrap_includes+=() to
  reflect the changes above and allow for other variant at the debootstrap stage.
- set equivalent groupings in blend $release/config $base_packages and have
  them applied after debootstrap.

debootstrap/scripts/ceres also has

```zsh
  case $MIRRORS in
        https://*)
      base="$base apt-transport-https ca-certificates"
  ;;
  esac
```

But not for other apt-transports like apt-transport-tor

```bash
  case $MIRRORS in
        https://*)
      base="$base apt-transport-https ca-certificates"
  ;;
  tor+http://\*)
  base="$base apt-transport-tor ca-certificates"
  esac

  deb tor+http://devuanauxrkggcowgm2vcs6go3c5pgxdidd5wqjpg7zpfaxkmgspr6id.onion/merged <release codename> main
  deb tor+http://devuanauxrkggcowgm2vcs6go3c5pgxdidd5wqjpg7zpfaxkmgspr6id.onion/merged <release codename>-updates main
  deb tor+http://devuanauxrkggcowgm2vcs6go3c5pgxdidd5wqjpg7zpfaxkmgspr6id.onion/merged <release codename>-security main
```

---

## If you are going to install packages into the running livesd before a get-selections it would make sense to save the results of a diff on /home/default in the overlay to capture and configuration that you may choose to do as well as a debconf-get-selections for any settings chosen during install.

1.  image_partition_disk_zfs can have two more options to fit the openzfs instructions:
    i. bios v uefi (we do both)
    a. Run this if you need legacy (BIOS) booting:
    sgdisk -a1 -n1:24K:+1000K -t1:EF02 $DISK

        b. Run this for UEFI booting (for use now or in the future):
        sgdisk     -n2:1M:+512M   -t2:EF00 $DISK

    ii. Unencrypted v encrypted (is zfs native encryption performant yet?)
    a. Unencrypted or ZFS native encryption:
    sgdisk -n4:0:0 -t4:BF00 $DISK

        b. LUKS:
        sgdisk     -n4:0:0        -t4:8309 $DISK

2.  raid as specified by type, so far we have mirror or none/striped but we do have available disks list so we could add raidz, raidz2, or raidz3 adding tests for the correct number of disks needed for each.

https://icesquare.com/wordpress/zfs-performance-mirror-vs-raidz-vs-raidz2-vs-raidz3-vs-striped/

#How many disks do you have?
1: ZFS is not for you.
2: Mirror
3-5: RAIDZ1
6-10 RAIDZ1 x 2
10-15: RAIDZ1 x 3
16-20: RAIDZ1 x 4

RAIDZ levels comparison chart

Stripe Mirror RAIDZ RAIDZ2 RAIDZ3 Stripe+mirror
Min number of disks 1 2 3 4 5 4
Fault to­le­ran­ce None (N-1) disk 1 disk 2 disks 3 disk (N-1) disk in each N-disk mirror
Disk space over­head None (N-1)/N 1 disk 2 disks 3 disks (N-1)\*P for P stipe over N-disk mirrors
Read speed Fast Fast Slow, see below Fast
Write speed Fast Fair Slow, See below Fair
Hard­ware cost Cheap High to highest High Very high Very High (disks) High to highest

Minimum number of disks
Stripe 1
default/unset

Mirror 2
already implemented
RAIDZ 3
zpool create rpool raidz1 VDEV1 VDEV2 VDEV3

RAIDZ2 4
zpool create rpool raidz2 VDEV1 VDEV2 VDEV3 VDEV4

RAIDZ3 5
zpool create rpool raidz3 VDEV1 VDEV2 VDEV3 VDEV4 VDEV5

Stripe+mirror 4
sudo zpool create NAME mirror VDEV1 VDEV2 mirror VDEV3 VDEV4
or:
sudo zpool create NAME mirror VDEV1 VDEV2
sudo zpool add NAME mirror VDEV3 VDEV4

---
