ditro/rhel86: set volid like in rhel9.0

This is only required in RHEL9.0, but best practice is to always pin these things
down. Also increases uniformity between distros.

Simplify a bit the volid generator by making it require `rand.Rand` rather than
`io.Reader`, and hence eliminating the need for error handling.
This commit is contained in:
Tom Gundersen 2022-02-27 18:20:15 +00:00
parent 154e966cda
commit 973b5141b3
7 changed files with 18 additions and 22 deletions

View file

@ -151,10 +151,13 @@ func newRandomUUIDFromReader(r io.Reader) (uuid.UUID, error) {
return id, nil
}
// NewRandomVolIDFromReader creates a random 32 bit hex string to use as a
// NewVolIDFromRand creates a random 32 bit hex string to use as a
// volume ID for FAT filesystems
func NewRandomVolIDFromReader(r io.Reader) (string, error) {
func NewVolIDFromRand(r *rand.Rand) string {
volid := make([]byte, 4)
_, err := r.Read(volid)
return hex.EncodeToString(volid), err
len, _ := r.Read(volid)
if len != 4 {
panic("expected four random bytes")
}
return hex.EncodeToString(volid)
}

View file

@ -693,7 +693,7 @@ func edgeSimplifiedInstallerPipelines(t *imageType, customizations *blueprint.Cu
installerTreePipeline := simplifiedInstallerTreePipeline(repos, installerPackages, kernelVer, archName, d.product, d.osVersion, "edge", customizations.GetFDO())
isolabel := fmt.Sprintf(d.isolabelTmpl, archName)
efibootTreePipeline := simplifiedInstallerEFIBootTreePipeline(installDevice, kernelVer, archName, d.vendor, d.product, d.osVersion, isolabel, customizations.GetFDO())
bootISOTreePipeline := simplifiedInstallerBootISOTreePipeline(imgPipelineName, kernelVer)
bootISOTreePipeline := simplifiedInstallerBootISOTreePipeline(imgPipelineName, kernelVer, rng)
pipelines = append(pipelines, *installerTreePipeline, *efibootTreePipeline, *bootISOTreePipeline)
pipelines = append(pipelines, *bootISOPipeline(t.Filename(), d.isolabelTmpl, t.Arch().Name(), false))
@ -701,7 +701,7 @@ func edgeSimplifiedInstallerPipelines(t *imageType, customizations *blueprint.Cu
return pipelines, nil
}
func simplifiedInstallerBootISOTreePipeline(archivePipelineName, kver string) *osbuild.Pipeline {
func simplifiedInstallerBootISOTreePipeline(archivePipelineName, kver string, rng *rand.Rand) *osbuild.Pipeline {
p := new(osbuild.Pipeline)
p.Name = "bootiso-tree"
p.Build = "name:build"
@ -741,6 +741,7 @@ func simplifiedInstallerBootISOTreePipeline(archivePipelineName, kver string) *o
Payload: &disk.Filesystem{
Type: "vfat",
Mountpoint: "/",
UUID: disk.NewVolIDFromRand(rng),
},
},
},

View file

@ -692,10 +692,7 @@ func edgeSimplifiedInstallerPipelines(t *imageType, customizations *blueprint.Cu
installerTreePipeline := simplifiedInstallerTreePipeline(repos, installerPackages, kernelVer, archName, d.product, d.osVersion, "edge", customizations.GetFDO())
isolabel := fmt.Sprintf(d.isolabelTmpl, archName)
efibootTreePipeline := simplifiedInstallerEFIBootTreePipeline(installDevice, kernelVer, archName, d.vendor, d.product, d.osVersion, isolabel, customizations.GetFDO())
bootISOTreePipeline, err := simplifiedInstallerBootISOTreePipeline(imgPipelineName, kernelVer, rng)
if err != nil {
return nil, err
}
bootISOTreePipeline := simplifiedInstallerBootISOTreePipeline(imgPipelineName, kernelVer, rng)
pipelines = append(pipelines, *installerTreePipeline, *efibootTreePipeline, *bootISOTreePipeline)
pipelines = append(pipelines, *bootISOPipeline(t.Filename(), d.isolabelTmpl, t.Arch().Name(), false))
@ -703,7 +700,7 @@ func edgeSimplifiedInstallerPipelines(t *imageType, customizations *blueprint.Cu
return pipelines, nil
}
func simplifiedInstallerBootISOTreePipeline(archivePipelineName, kver string, rng *rand.Rand) (*osbuild.Pipeline, error) {
func simplifiedInstallerBootISOTreePipeline(archivePipelineName, kver string, rng *rand.Rand) *osbuild.Pipeline {
p := new(osbuild.Pipeline)
p.Name = "bootiso-tree"
p.Build = "name:build"
@ -733,11 +730,6 @@ func simplifiedInstallerBootISOTreePipeline(archivePipelineName, kver string, rn
},
))
// TODO: handle error
volid, err := disk.NewRandomVolIDFromReader(rng)
if err != nil {
return nil, err
}
pt := disk.PartitionTable{
Size: 20971520,
Partitions: []disk.Partition{
@ -747,7 +739,7 @@ func simplifiedInstallerBootISOTreePipeline(archivePipelineName, kver string, rn
Payload: &disk.Filesystem{
Type: "vfat",
Mountpoint: "/",
UUID: volid,
UUID: disk.NewVolIDFromRand(rng),
},
},
},
@ -798,7 +790,7 @@ func simplifiedInstallerBootISOTreePipeline(archivePipelineName, kver string, rn
copyInputs,
))
return p, nil
return p
}
func simplifiedInstallerEFIBootTreePipeline(installDevice, kernelVer, arch, vendor, product, osVersion, isolabel string, fdo *blueprint.FDOCustomization) *osbuild.Pipeline {

View file

@ -1315,7 +1315,7 @@
{
"type": "org.osbuild.mkfs.fat",
"options": {
"volid": ""
"volid": "a178892e"
},
"devices": {
"device": {

View file

@ -1358,7 +1358,7 @@
{
"type": "org.osbuild.mkfs.fat",
"options": {
"volid": ""
"volid": "a178892e"
},
"devices": {
"device": {

View file

@ -1312,7 +1312,7 @@
{
"type": "org.osbuild.mkfs.fat",
"options": {
"volid": ""
"volid": "a178892e"
},
"devices": {
"device": {

View file

@ -1355,7 +1355,7 @@
{
"type": "org.osbuild.mkfs.fat",
"options": {
"volid": ""
"volid": "a178892e"
},
"devices": {
"device": {