summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McDermott <patrick.mcdermott@libiquity.com>2021-01-16 08:48:11 (EST)
committer Patrick McDermott <patrick.mcdermott@libiquity.com>2021-01-16 08:49:34 (EST)
commit39f74835a831c952c995158cb00e0146c49fd075 (patch)
tree78c941f92c27f849c9b4d4c4fc9772d1b6517aa6
parentf819b8160603a6e23a6b9ae91fa6080e6b65e63b (diff)
installer/pcramfs: New installer backend
-rw-r--r--src/installer/local.mk3
-rw-r--r--src/installer/pcramfs.sh55
2 files changed, 57 insertions, 1 deletions
diff --git a/src/installer/local.mk b/src/installer/local.mk
index 2306edb..68d9eaa 100644
--- a/src/installer/local.mk
+++ b/src/installer/local.mk
@@ -1,3 +1,4 @@
prokit_SOURCES += \
src/installer/chroot.sh \
- src/installer/pc.sh
+ src/installer/pc.sh \
+ src/installer/pcramfs.sh
diff --git a/src/installer/pcramfs.sh b/src/installer/pcramfs.sh
new file mode 100644
index 0000000..4aae82a
--- /dev/null
+++ b/src/installer/pcramfs.sh
@@ -0,0 +1,55 @@
+# PC RAM-based file system installer
+#
+# Copyright (C) 2015-2016, 2021 Patrick McDermott
+#
+# This file is part of the ProteanOS Development Kit.
+#
+# The ProteanOS Development Kit is free software: you can redistribute
+# it and/or modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# The ProteanOS Development Kit is distributed in the hope that it
+# will be useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with the ProteanOS Development Kit. If not, see
+# <http://www.gnu.org/licenses/>.
+
+installer_pcramfs_main()
+{
+ local arch="${1}"
+ local plat="${2}"
+ local dev="${3}"
+ local foreign="${4}"
+ shift 4
+
+ if ! check_block "${dev}"; then
+ return 1
+ fi
+
+ if ! installer_pc_make_partition_and_fs "${dev}"; then
+ return 1
+ fi
+ if ! root="$(block_mount "${dev}1")"; then
+ return 1
+ fi
+
+ if ! install_system "${arch}" "${plat}" "${root}" "${foreign}"; then
+ block_umount "${root}"
+ return 1
+ fi
+
+ (cd -- "${root}" && profile_make_initramfs "${arch}" "${plat}")
+
+ block_umount "${root}"
+ return 0
+}
+
+installer_pcramfs_register()
+{
+ register_installer 'pcramfs'
+}
+__init installer_pcramfs_register