summary refs log tree commit diff
diff options
context:
space:
mode:
authorJörg Thalheim <Mic92@users.noreply.github.com>2017-04-30 11:22:45 +0200
committerGitHub <noreply@github.com>2017-04-30 11:22:45 +0200
commitfa5196e47e3a72553155f684c8e66a97d91e6dff (patch)
tree81e173f38f60a5391500e812263bf3eee3b87965
parentdce7ebbd9b130feb877b36e570d07db29908c00c (diff)
parent87a4615e27bf14ab5d3949fce47aa05a81ece47c (diff)
downloadnixlib-fa5196e47e3a72553155f684c8e66a97d91e6dff.tar
nixlib-fa5196e47e3a72553155f684c8e66a97d91e6dff.tar.gz
nixlib-fa5196e47e3a72553155f684c8e66a97d91e6dff.tar.bz2
nixlib-fa5196e47e3a72553155f684c8e66a97d91e6dff.tar.lz
nixlib-fa5196e47e3a72553155f684c8e66a97d91e6dff.tar.xz
nixlib-fa5196e47e3a72553155f684c8e66a97d91e6dff.tar.zst
nixlib-fa5196e47e3a72553155f684c8e66a97d91e6dff.zip
Merge pull request #25005 from Lassulus/copytoram
nixos/stage1: add copytoram support
-rw-r--r--nixos/doc/manual/installation/installing-usb.xml5
-rw-r--r--nixos/modules/system/boot/stage-1-init.sh19
2 files changed, 24 insertions, 0 deletions
diff --git a/nixos/doc/manual/installation/installing-usb.xml b/nixos/doc/manual/installation/installing-usb.xml
index dae733060569..4a74e406b14c 100644
--- a/nixos/doc/manual/installation/installing-usb.xml
+++ b/nixos/doc/manual/installation/installing-usb.xml
@@ -34,6 +34,11 @@ ISO, copy its contents verbatim to your drive, then either:
     in <link xlink:href="https://www.kernel.org/doc/Documentation/kernel-parameters.txt">
     the kernel documentation</link> for more details).</para>
   </listitem>
+  <listitem>
+    <para>If you want to load the contents of the ISO to ram after bootin
+    (So you can remove the stick after bootup) you can append the parameter
+    <literal>copytoram</literal>to the <literal>options</literal> field.</para>
+  </listitem>
 </itemizedlist>
 </para>
 
diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh
index c75e637124a9..9a125dcb0aeb 100644
--- a/nixos/modules/system/boot/stage-1-init.sh
+++ b/nixos/modules/system/boot/stage-1-init.sh
@@ -154,6 +154,9 @@ for o in $(cat /proc/cmdline); do
             fi
             ln -s "$root" /dev/root
             ;;
+        copytoram)
+            copytoram=1
+            ;;
     esac
 done
 
@@ -474,6 +477,22 @@ while read -u 3 mountPoint; do
     # doing something with $device right now.
     udevadm settle
 
+    # If copytoram is enabled: skip mounting the ISO and copy its content to a tmpfs.
+    if [ -n "$copytoram" ] && [ "$device" = /dev/root ] && [ "$mountPoint" = /iso ]; then
+      fsType=$(blkid -o value -s TYPE "$device")
+      fsSize=$(blockdev --getsize64 "$device")
+
+      mkdir -p /tmp-iso
+      mount -t "$fsType" /dev/root /tmp-iso
+      mountFS tmpfs /iso size="$fsSize" tmpfs
+
+      cp -r /tmp-iso/* /mnt-root/iso/
+
+      umount /tmp-iso
+      rmdir /tmp-iso
+      continue
+    fi
+
     mountFS "$device" "$mountPoint" "$options" "$fsType"
 done