aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pkg/kernel/generated.go6
-rw-r--r--pkg/kernel/kernel.go7
-rw-r--r--pkg/osutil/osutil.go11
-rwxr-xr-xtools/create-gce-image.sh6
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