summaryrefslogtreecommitdiff
path: root/doc/forum/support_for_non-bootable_disk_images/comment_1_94727e8ddf14f868225b99c83fbf406d._comment
blob: b4ade33954e791aa1d13e9bdc07ccf94c39bfa62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
[[!comment format=mdwn
 username="david"
 avatar="http://cdn.libravatar.org/avatar/22c2d800db6a7699139df604a67cb221"
 subject="Initial attempt at a patch"
 date="2018-10-08T12:48:38Z"
 content="""
Here is a simple approach, that at least allows the image building to complete. I also managed to boot one of the images on AMD64. Probably it needs more testing, and I'm sure there are style and naming issues.
[[!format text \"\"\"
diff --git a/src/Propellor/Property/DirectBoot.hs b/src/Propellor/Property/DirectBoot.hs
new file mode 100644
index 00000000..4807471e
--- /dev/null
+++ b/src/Propellor/Property/DirectBoot.hs
@@ -0,0 +1,7 @@
+module Propellor.Property.DirectBoot(installed) where
+
+import Propellor.Base
+import Propellor.Types.Bootloader
+
+installed :: Property (HasInfo + UnixLike)
+installed = pureInfoProperty \"direct boot\" [DirectBoot]
diff --git a/src/Propellor/Property/DiskImage.hs b/src/Propellor/Property/DiskImage.hs
index 289de151..a41af18c 100644
--- a/src/Propellor/Property/DiskImage.hs
+++ b/src/Propellor/Property/DiskImage.hs
@@ -228,6 +228,7 @@ imageBuilt' rebuild img mkchroot tabletype partspec =
                        ubootFlashKernelFinalized p
                [FlashKernelInstalled, UbootInstalled p] -> 
                        ubootFlashKernelFinalized p
+                [DirectBoot] -> directBootFinalized
                _ -> unbootable \"multiple bootloaders are installed; don't know which to use\"
 
 -- | This property is automatically added to the chroot when building a
@@ -469,6 +470,9 @@ grubFinalized grubtarget _img mnt loopdevs =
 ubootFinalized :: (FilePath -> FilePath -> Property Linux) -> Finalization
 ubootFinalized p (RawDiskImage img) mnt _loopdevs = p img mnt
 
+directBootFinalized :: Finalization
+directBootFinalized _img _mnt _loopDevs = doNothing
+
 flashKernelFinalized :: Finalization
 flashKernelFinalized _img mnt _loopdevs = FlashKernel.flashKernelMounted mnt
 
diff --git a/src/Propellor/Types/Bootloader.hs b/src/Propellor/Types/Bootloader.hs
index 65117bd2..cdb37a31 100644
--- a/src/Propellor/Types/Bootloader.hs
+++ b/src/Propellor/Types/Bootloader.hs
@@ -10,6 +10,7 @@ data BootloaderInstalled
        = GrubInstalled GrubTarget
        | FlashKernelInstalled
        | UbootInstalled (FilePath -> FilePath -> Property Linux)
+        | DirectBoot
        deriving (Typeable)
 
 -- | Platforms that grub can boot.
@@ -19,6 +20,7 @@ instance Show BootloaderInstalled where
        show (GrubInstalled _) = \"GrubInstalled\"
        show FlashKernelInstalled = \"FlashKernelInstalled\"
        show (UbootInstalled _) = \"UbootInstalled\"
+        show DirectBoot = \"DirectBoot\"
 
 instance IsInfo [BootloaderInstalled] where
        propagateInfo _ = PropagateInfo False
\"\"\"]]
"""]]