summary refs log blame commit diff
path: root/etc/init
blob: a654b87a6654ddd764a989c46425b7a8429b6b98 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12



                    
               






                           







                            


                          
 
                               
 












                                                  

                                                                     


                       

                                                                     



                                                          



                          






                                         
#!/bin/execlineb -S0

export PATH /bin

if { mount -a }

if { mkfifo /dev/esp.poll }

background {
  fdclose 3
  mdevd -C
}

if { modprobe ext4 }

if {
  redirfd -r 0 /dev/esp.poll
  redirfd -w 1 /dev/null
  head -c 1
}
background {
  importas -iu mdevd_pid !
  kill $mdevd_pid
}
background { rm /dev/esp.poll }

if {
  backtick -E diskname {
    backtick -E diskpath {
      backtick -E partpath {
        backtick -E partname { readlink /dev/esp }
        realpath /sys/class/block/${partname}
      }
      realpath ${partpath}/..
    }
    basename $diskpath
  }

  backtick -E rootdev {
    pipeline { lsblk -lnpo PARTTYPE,NAME /dev/${diskname} }
    awk "$1 == \"4f68bce3-e8cd-4db1-96e7-fbcaf984b709\" { print $2 }"
  }

  backtick -E hashdev {
    pipeline { lsblk -lnpo PARTTYPE,NAME /dev/${diskname} }
    awk "$1 == \"2c7357ed-ebd2-46d9-aec1-23d437ec2bf5\" { print $2 }"
  }

  importas -i roothash roothash
  veritysetup open $rootdev root-verity $hashdev $roothash
}

background { rm /dev/esp }

if { mount /dev/mapper/root-verity /mnt }
if { mount --move /proc /mnt/proc }
if { mount --move /sys /mnt/sys }
if { mount --move /dev /mnt/dev }

switch_root /mnt
/etc/init