Delete old secretstore, cmd/node and config modules
This removes even more code that is no longer necessary or interferes with new concepts. It also refactors the storage stuff into a StorageManager which deals with all the paths and async initialization.
This does intentionally break a few things which will be fixed when the CA code lands.
Test Plan: Manually tested using make launch, CI is in a separate ticket
X-Origin-Diff: phab/D182
GitOrigin-RevId: 282a4bd84b47010d859e03da53b2c2de8183b13b
diff --git a/cmd/init/main.go b/cmd/init/main.go
index ace12f7..e92b7b3 100644
--- a/cmd/init/main.go
+++ b/cmd/init/main.go
@@ -17,14 +17,12 @@
package main
import (
- "io/ioutil"
+ "fmt"
"os"
- "os/exec"
"os/signal"
"runtime/debug"
"smalltown/internal/network"
- node2 "smalltown/internal/node"
- "smalltown/internal/storage"
+ "smalltown/internal/node"
"smalltown/pkg/tpm"
"go.uber.org/zap"
@@ -38,6 +36,7 @@
debug.PrintStack()
}
unix.Sync()
+ // TODO: Switch this to Reboot when init panics are less likely
unix.Reboot(unix.LINUX_REBOOT_CMD_POWER_OFF)
}()
logger, err := zap.NewDevelopment()
@@ -64,85 +63,22 @@
signalChannel := make(chan os.Signal, 2)
signal.Notify(signalChannel)
- if err := storage.FindPartitions(); err != nil {
- logger.Panic("Failed to search for partitions", zap.Error(err))
- }
-
- if err := os.Mkdir("/esp", 0755); err != nil {
- panic(err)
- }
-
- if err := unix.Mount(storage.ESPDevicePath, "/esp", "vfat", unix.MS_NOEXEC|unix.MS_NODEV|unix.MS_SYNC, ""); err != nil {
- logger.Panic("Failed to mount ESP partition", zap.Error(err))
- }
-
if err := tpm.Initialize(logger.With(zap.String("component", "tpm"))); err != nil {
logger.Panic("Failed to initialize TPM 2.0", zap.Error(err))
}
- // TODO(lorenz): This really doesn't belong here and needs to be asynchronous as well
- var keyLocation = "/esp/EFI/smalltown/data-key.bin"
- sealedKeyFile, err := os.Open(keyLocation)
- if os.IsNotExist(err) {
- logger.Info("Initializing encrypted storage, this might take a while...")
- key, err := tpm.GenerateSafeKey(256 / 8)
- if err != nil {
- panic(err)
- }
- sealedKey, err := tpm.Seal(key, tpm.SecureBootPCRs)
- if err != nil {
- panic(err)
- }
- if err := storage.InitializeEncryptedBlockDevice("data", storage.SmalltownDataCryptPath, key); err != nil {
- panic(err)
- }
- mkfsCmd := exec.Command("/bin/mkfs.xfs", "-qf", "/dev/data")
- if _, err := mkfsCmd.Output(); err != nil {
- panic(err)
- }
- // Existence of this file indicates that the encrypted storage has been successfully initialized
- if err := ioutil.WriteFile(keyLocation, sealedKey, 0600); err != nil {
- panic(err)
- }
- logger.Info("Initialized encrypted storage")
- } else if err != nil {
- panic(err)
- } else {
- sealedKey, err := ioutil.ReadAll(sealedKeyFile)
- if err != nil {
- panic(err)
- }
- key, err := tpm.Unseal(sealedKey)
- if err != nil {
- panic(err)
- }
- if err := storage.MapEncryptedBlockDevice("data", storage.SmalltownDataCryptPath, key); err != nil {
- panic(err)
- }
- logger.Info("Opened encrypted storage")
- }
- sealedKeyFile.Close()
-
- if err := os.Mkdir("/data", 0755); err != nil {
- panic(err)
- }
-
- if err := unix.Mount("/dev/data", "/data", "xfs", unix.MS_NOEXEC|unix.MS_NODEV, ""); err != nil {
- panic(err)
- }
-
networkSvc, err := network.NewNetworkService(network.Config{}, logger.With(zap.String("component", "network")))
if err != nil {
panic(err)
}
networkSvc.Start()
- node, err := node2.NewSmalltownNode(logger, "/esp/EFI/smalltown", "/data", 7833, 7834)
+ nodeInstance, err := node.NewSmalltownNode(logger, 7833, 7834)
if err != nil {
panic(err)
}
- err = node.Start()
+ err = nodeInstance.Start()
if err != nil {
panic(err)
}
diff --git a/cmd/mkimage/main.go b/cmd/mkimage/main.go
index 78eccfb..650cfd1 100644
--- a/cmd/mkimage/main.go
+++ b/cmd/mkimage/main.go
@@ -20,14 +20,11 @@
"fmt"
"io/ioutil"
"os"
- "smalltown/generated/common"
- "smalltown/internal/config"
"github.com/diskfs/go-diskfs"
"github.com/diskfs/go-diskfs/disk"
"github.com/diskfs/go-diskfs/filesystem"
"github.com/diskfs/go-diskfs/partition/gpt"
- "github.com/naoina/toml"
)
var SmalltownDataPartition gpt.Type = gpt.Type("9eeec464-6885-414a-b278-4305c51f7966")
@@ -36,13 +33,6 @@
return (size * 1024 * 1024) / 512
}
-var cfg = config.Config{
- NodeName: "smalltown-testing",
- DataDirectory: "/data",
- ExternalHost: "",
- TrustBackend: common.TrustBackend_DUMMY,
-}
-
func main() {
if len(os.Args) < 3 {
fmt.Println("Usage: mkimage <UEFI payload> <image path>")
@@ -114,16 +104,6 @@
fmt.Printf("Failed to write EFI payload: %v", err)
os.Exit(1)
}
- configFile, err := fs.OpenFile("/EFI/smalltown/config.toml", os.O_CREATE|os.O_RDWR)
- if err != nil {
- fmt.Printf("Failed to open config for writing: %v", err)
- os.Exit(1)
- }
- configData, _ := toml.Marshal(cfg)
- if _, err := configFile.Write(configData); err != nil {
- fmt.Printf("Failed to write config: %v", err)
- os.Exit(1)
- }
if err := diskImg.File.Close(); err != nil {
fmt.Printf("Failed to write image: %v", err)
os.Exit(1)