summaryrefslogtreecommitdiff
path: root/tutorial.md
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2023-07-22 12:47:09 +0300
committerLars Wirzenius <liw@liw.fi>2023-07-22 12:47:09 +0300
commitef8043eae57a33bd59ced7b30b13460197932bf7 (patch)
tree7e6689adb53353491408d8980a30c651da226eb3 /tutorial.md
parent6919ca10528e0afecd1ef1958928947e7f6f77ee (diff)
downloadv-i-ef8043eae57a33bd59ced7b30b13460197932bf7.tar.gz
docs(tutorial.md): simplify and update
Sponsored-by: author
Diffstat (limited to 'tutorial.md')
-rw-r--r--tutorial.md84
1 files changed, 44 insertions, 40 deletions
diff --git a/tutorial.md b/tutorial.md
index 91d7f9f..74b966a 100644
--- a/tutorial.md
+++ b/tutorial.md
@@ -17,42 +17,44 @@ The steps:
wget -c https://files.liw.fi/v-i/v-i.img.xz
~~~
-2. Unpack the image.
+2. Unpack the downloaded image.
~~~sh
unxz v-i.img.xz
~~~
+
+ This will use a few gigabytes of disk apace.
-3. Insert USB drive and write the image to the stick. I prefer GNOME
- Disks for this, but dd will work. Look up the device of the USB
- stick: run `sudo dmsg -T` and look for relevant kernel message, or
- use GNOME Disks, or something else. Replace the actual device for
- `sdx` below, then run the following command:
-
- ~~~sh
- dd if=v-i.img bs=1M oflag=direct status=progress of=/dev/sdx
- ~~~
-
-4. Configure the installer. Create a YAML file like the one below, but
- with valued customized for you. You need one of
- `authorized_keys_file` or `user_ca_pub_file`, the others are only
- necessary to avoid the SSH prompt for a new host.
+3. Write a configuration file for the installer, to allow logging in
+ via SSH to the running installer. If you don't intend to do that,
+ you can just create an empty file. Otherwise, create a YAML file
+ like the one below, but with values customized for you. You need
+ one of `authorized_keys_file` or `user_ca_pub_file`.
~~~yaml
user_ca_pub_file: ~liw/.ssh/ca/userca.pub
authorized_keys_file: ~liw/.ssh/id_personal.pub
- host_key_file: host.key
- host_cert_file: host.key-cert.pub
~~~
+
+ Either of these two lines configures the installer SSH to allow you
+ to log in as `root` using SSH. Password logins are not allowed for
+ SSH. You can also log in via the console, as `root`, without a
+ password.
- Then run `sudo ./configure-installer your-config.yaml /dev/sdx` (it
- should be quite fast).
+4. Insert USB drive and find out the device allocated it. I prefer GNOME
+ Disks for this, but you can also look up the device of the USB
+ stick: run `sudo dmsg -T`. The device name is usually `/dev/sdx`
+ for some value of x.
+
+5. Write the installer image to the USB drive, and configure it.
+
+ ~~~sh
+ sudo ./write-and-config.sh config.yaml /dev/sdx v-i.img
+ ~~~
- Alternatively, create a second stick with a file system with the
- label `v-i-config` and a file called `authorized_keys`, and have
- that in another USB port when you boot from the v-i USB drive
+ This will take a few minutes.
-5. Make sure everything has been written to the USB drive. Again, I
+6. Make sure everything has been written to the USB drive. Again, I
prefer GNOME Disks for this, but from the command line:
~~~sh
@@ -60,40 +62,42 @@ The steps:
eject /dev/sdx
~~~
-6. Move the USB drive to the target machine and boot off the drive.
- How this happens varies from machine to machine. On my Thinkpad, I
- press F12 at the POST screen and then choose the right drive from
- the boot menu.
+7. Move the USB drive to the target machine and boot off the drive.
+ How this happens varies from machine to machine. On my Thinkpad
+ X220, I press F12 at the POST screen and then choose the right
+ drive from the boot menu.
-7. Wait for the system to boot. Log in as root, either from the
+8. Wait for the system to boot. Log in as root, either from the
virtual console (no password), or via SSH.
-8. Create a target specification file `foo-target.yaml`. The name can
+9. Create a target specification file `foo-target.yaml`. The name can
be anything, but it must be valid YAML. In the example below, there
- is one NVMe drive that will get the system installed. The primary
- All drives will be encrypted using LUKS, with the password
- "hunter2".
+ is one NVMe drive that will get the system installed. All drives
+ will be encrypted using LUKS, with the password "hunter2".
~~~yaml
drive: /dev/nvme0n1
luks: hunter2
~~~
-9. Install. Add the `--verbose` option to `./v-i` if you want to know
- what's happening. The first time you run this on a given v-i USB
- drive, it takes a while: it runs `vmdebootstrap` and that is just
- slow. However, the output is cached, so further runs are faster.
+10. Install. Add the `--verbose` option to `./v-i` if you want to know
+ what's happening. The first time you run this on a given v-i USB
+ drive, it takes a while: it runs `vmdebootstrap` and that is just
+ slow. However, the output is cached, so further runs are faster.
~~~sh
rm -f install.log
./v-i --verbose foo-target.yaml
~~~
+
+ This will take few minutes the first time, assuming a fast
+ Internet connection. Further runs go faster.
-10. Reboot into the installed system.
+11. Reboot into the installed system.
-11. Finish configuring the system in whatever way you like to do that.
- You can log into it via SSH as root. I use Ansible.
+12. Finish configuring the system in whatever way you like to do that.
+ I use Ansible.
Remember to change the LUKS password for each drive.
-12. Optional: Let me know how it went.
+13. Optional: Let me know how it went.