Skip to content

Commit f9262ee

Browse files
committed
create_gce_fixed_kernel accepts arch as flag
1 parent fed3d12 commit f9262ee

File tree

1 file changed

+23
-3
lines changed
  • tools/baseimage/cmd/create_gce_fixed_kernel

1 file changed

+23
-3
lines changed

tools/baseimage/cmd/create_gce_fixed_kernel/main.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,16 @@ import (
2626
// Cuttlefish base images are based on debian images.
2727
const (
2828
debianSourceImageProject = "debian-cloud"
29-
debianSourceImage = "debian-13-trixie-v20251014"
29+
debianSourceImageX86 = "debian-13-trixie-v20251014"
30+
debianSourceImageArm = "debian-13-trixie-arm64-v20251014"
3031
)
3132

3233
const mountpoint = "/mnt/image"
3334

3435
var (
3536
project = flag.String("project", "", "GCE project whose resources will be used for creating the image")
3637
zone = flag.String("zone", "us-central1-a", "GCE zone used for creating relevant resources")
38+
arch = flag.String("arch", "x86_64", "architecture of GCE image. Supports either x86_64 or arm64")
3739
linuxImageDeb = flag.String("linux-image-deb", "", "linux-image-* package name. E.g. linux-image-6.1.0-40-cloud-amd64")
3840
imageName = flag.String("image-name", "", "output GCE image name")
3941
)
@@ -43,6 +45,7 @@ func mountAttachedDisk(project, zone, insName string) error {
4345
}
4446

4547
type kernelImageOpts struct {
48+
Arch gce.Arch
4649
LinuxImageDeb string
4750
ImageName string
4851
}
@@ -78,13 +81,22 @@ func createImageMain(project, zone string, opts kernelImageOpts) error {
7881
}
7982
}()
8083
log.Println("creating disk...")
81-
disk, err := h.CreateDisk(debianSourceImageProject, debianSourceImage, attachedDiskName, gce.CreateDiskOpts{})
84+
var sourceImage string
85+
switch opts.Arch {
86+
case gce.ArchX86:
87+
sourceImage = debianSourceImageX86
88+
case gce.ArchArm:
89+
sourceImage = debianSourceImageArm
90+
default:
91+
return fmt.Errorf("unsupported arch")
92+
}
93+
disk, err := h.CreateDisk(debianSourceImageProject, sourceImage, attachedDiskName, gce.CreateDiskOpts{})
8294
if err != nil {
8395
return fmt.Errorf("failed to create disk: %w", err)
8496
}
8597
log.Printf("disk created: %q", attachedDiskName)
8698
log.Println("creating instance...")
87-
ins, err := h.CreateInstance(insName, gce.ArchX86)
99+
ins, err := h.CreateInstance(insName, opts.Arch)
88100
if err != nil {
89101
return fmt.Errorf("failed to create instance: %w", err)
90102
}
@@ -137,14 +149,22 @@ func main() {
137149
if *zone == "" {
138150
log.Fatal("usage: `-zone` must not be empty")
139151
}
152+
if *arch == "" {
153+
log.Fatal("usage: `-arch` must not be empty")
154+
}
140155
if *linuxImageDeb == "" {
141156
log.Fatal("usage: `-linux-image-deb` must not be empty")
142157
}
143158
if *imageName == "" {
144159
log.Fatal("usage: `-image-name` must not be empty")
145160
}
161+
architecture, err := gce.ParseArch(*arch)
162+
if err != nil {
163+
log.Fatal(err)
164+
}
146165

147166
opts := kernelImageOpts{
167+
Arch: architecture,
148168
LinuxImageDeb: *linuxImageDeb,
149169
ImageName: *imageName,
150170
}

0 commit comments

Comments
 (0)