diff --git a/boards/winterfell/uinit.go b/boards/winterfell/uinit.go new file mode 100644 index 00000000..bf1d0767 --- /dev/null +++ b/boards/winterfell/uinit.go @@ -0,0 +1,44 @@ +// Copyright 2012-2017 the u-root Authors. All rights reserved +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This is winterfell init script +package main + +import ( + "log" + "os" + "os/exec" + "strings" +) + +var ( + commands = []string{ + "/bbin/insmod /lib/modules/nvme-core.ko", + "/bbin/insmod /lib/modules/nvme.ko", + "/bbin/insmod /lib/modules/libata.ko", + "/bbin/insmod /lib/modules/libahci.ko", + "/bbin/insmod /lib/modules/ahci.ko", + "/bbin/rsdp", + } +) + +func main() { + for _, line := range commands { + log.Printf("Executing Command: %v", line) + cmdSplit := strings.Split(line, " ") + if len(cmdSplit) == 0 { + continue + } + + cmd := exec.Command(cmdSplit[0], cmdSplit[1:]...) + cmd.Stdin = os.Stdin + cmd.Stderr = os.Stderr + cmd.Stdout = os.Stdout + if err := cmd.Run(); err != nil { + log.Print(err) + } + + } + log.Print("Uinit Done!") +} diff --git a/modules/u-root b/modules/u-root index 73936f22..fc21131b 100644 --- a/modules/u-root +++ b/modules/u-root @@ -7,11 +7,13 @@ u-root_url := github.com/u-root/u-root u-root_output := $(build)/$(BOARD)/u-root.cpio +UROOT_CMDS ?= ifeq ($(shell test -e build/$(BOARD)/u-root.cpio && echo -n yes),yes) $(shell rm $(build)/$(BOARD)/u-root.cpio) endif export GOPATH=$(build)/go +src_cmds := $(foreach cmd,$(UROOT_CMDS),github.com/u-root/u-root/cmds/$(cmd)) $(GOPATH): $(call do,GO GET,$(u-root_url),\ @@ -19,11 +21,18 @@ $(GOPATH): ) $(u-root_output): $(GOPATH) +ifeq ($(shell test -e boards/$(BOARD)/uinit.go && echo -n yes),yes) +ifeq ($(shell (test -d $(GOPATH)/src/github.com/u-root/u-root/cmds/uinit || echo -n yes)),yes) + mkdir $(GOPATH)/src/github.com/u-root/u-root/cmds/uinit +endif + cp boards/$(BOARD)/uinit.go $(GOPATH)/src/github.com/u-root/u-root/cmds/uinit +endif $(call do,U-ROOT,$@,\ $(GOPATH)/bin/u-root \ -build=bb \ -format=cpio \ - -o $@ \ + -o $@ \ + $(src_cmds)\ ) # Override the initrd inputs and add in the kernel modules