diff options
| -rw-r--r-- | pkg/kernel/generated.go | 6 | ||||
| -rw-r--r-- | pkg/kernel/kernel.go | 7 | ||||
| -rw-r--r-- | pkg/osutil/osutil.go | 11 | ||||
| -rwxr-xr-x | tools/create-gce-image.sh | 6 |
4 files changed, 25 insertions, 5 deletions
diff --git a/pkg/kernel/generated.go b/pkg/kernel/generated.go index a3d0ffcd6..ba84757c4 100644 --- a/pkg/kernel/generated.go +++ b/pkg/kernel/generated.go @@ -38,7 +38,8 @@ echo "debugfs /sys/kernel/debug debugfs defaults 0 0" | sudo tee -a disk.mnt/etc echo "kernel.printk = 7 4 1 3" | sudo tee -a disk.mnt/etc/sysctl.conf echo "debug.exception-trace = 0" | sudo tee -a disk.mnt/etc/sysctl.conf -if [ -f $SYZ_SYSCTL_FILE ]; then +SYZ_SYSCTL_FILE="${SYZ_SYSCTL_FILE:-}" +if [ "$SYZ_SYSCTL_FILE" != "" ]; then cat $SYZ_SYSCTL_FILE | sudo tee -a disk.mnt/etc/sysctl.conf fi @@ -54,7 +55,8 @@ sudo chown root disk.mnt/root/.ssh/authorized_keys sudo mkdir -p disk.mnt/boot/grub CMDLINE="" -if [ -f $SYZ_CMDLINE_FILE ]; then +SYZ_CMDLINE_FILE="${SYZ_CMDLINE_FILE:-}" +if [ "$SYZ_CMDLINE_FILE" != "" ]; then CMDLINE=$(awk '{printf("%s ", $0)}' $SYZ_CMDLINE_FILE) fi diff --git a/pkg/kernel/kernel.go b/pkg/kernel/kernel.go index 5b97715b4..2b2f99b7d 100644 --- a/pkg/kernel/kernel.go +++ b/pkg/kernel/kernel.go @@ -82,7 +82,12 @@ func CreateImage(kernelDir, userspaceDir, cmdlineFile, sysctlFile, image, sshkey return fmt.Errorf("failed to write script file: %v", err) } bzImage := filepath.Join(kernelDir, filepath.FromSlash("arch/x86/boot/bzImage")) - if _, err := osutil.RunCmd(time.Hour, tempDir, scriptFile, userspaceDir, bzImage); err != nil { + env := []string{ + "SYZ_CMDLINE_FILE=" + osutil.Abs(cmdlineFile), + "SYZ_SYSCTL_FILE=" + osutil.Abs(sysctlFile), + } + _, err = osutil.RunCmdEnv(time.Hour, env, tempDir, scriptFile, userspaceDir, bzImage) + if err != nil { return fmt.Errorf("image build failed: %v", err) } if err := osutil.CopyFile(filepath.Join(tempDir, "disk.raw"), image); err != nil { diff --git a/pkg/osutil/osutil.go b/pkg/osutil/osutil.go index 99ab41780..fecb5f95b 100644 --- a/pkg/osutil/osutil.go +++ b/pkg/osutil/osutil.go @@ -21,11 +21,22 @@ const ( // RunCmd runs "bin args..." in dir with timeout and returns its output. func RunCmd(timeout time.Duration, dir, bin string, args ...string) ([]byte, error) { + return runCmd(timeout, nil, dir, bin, args...) +} + +// RunCmdEnv is the same as RunCmd but also appends env. +func RunCmdEnv(timeout time.Duration, env []string, dir, bin string, args ...string) ([]byte, error) { + return runCmd(timeout, env, dir, bin, args...) +} + +func runCmd(timeout time.Duration, env []string, dir, bin string, args ...string) ([]byte, error) { output := new(bytes.Buffer) cmd := exec.Command(bin, args...) cmd.Dir = dir cmd.Stdout = output cmd.Stderr = output + cmd.Env = append([]string{}, os.Environ()...) + cmd.Env = append(cmd.Env, env...) if err := cmd.Start(); err != nil { return nil, fmt.Errorf("failed to start %v %+v: %v", bin, args, err) } diff --git a/tools/create-gce-image.sh b/tools/create-gce-image.sh index dccab5f7b..184581563 100755 --- a/tools/create-gce-image.sh +++ b/tools/create-gce-image.sh @@ -75,7 +75,8 @@ echo "debugfs /sys/kernel/debug debugfs defaults 0 0" | sudo tee -a disk.mnt/etc # sysctls echo "kernel.printk = 7 4 1 3" | sudo tee -a disk.mnt/etc/sysctl.conf echo "debug.exception-trace = 0" | sudo tee -a disk.mnt/etc/sysctl.conf -if [ -f $SYZ_SYSCTL_FILE ]; then +SYZ_SYSCTL_FILE="${SYZ_SYSCTL_FILE:-}" +if [ "$SYZ_SYSCTL_FILE" != "" ]; then cat $SYZ_SYSCTL_FILE | sudo tee -a disk.mnt/etc/sysctl.conf fi @@ -91,7 +92,8 @@ sudo chown root disk.mnt/root/.ssh/authorized_keys sudo mkdir -p disk.mnt/boot/grub CMDLINE="" -if [ -f $SYZ_CMDLINE_FILE ]; then +SYZ_CMDLINE_FILE="${SYZ_CMDLINE_FILE:-}" +if [ "$SYZ_CMDLINE_FILE" != "" ]; then CMDLINE=$(awk '{printf("%s ", $0)}' $SYZ_CMDLINE_FILE) fi |
