[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Installing Guix on Linode: a how-to
Re: Installing Guix on Linode: a how-to
Sat, 11 Jul 2020 01:15:59 +0000
Ok I sent it to guix-patches.
July 10, 2020 6:17 PM, email@example.com wrote:
> I will volunteer to add this to the guix cookbook. If I don't send a patch in
> a week or so, then
> that means I got lazy and decided not to do it.
> July 8, 2020 7:57 PM, "Gary Johnson" <firstname.lastname@example.org> wrote:
>> Can someone add this tutorial to the Guix Cookbook? I've been wondering
>> about how to do this for some time now, and it would be great to have it
>> saved somewhere obvious like that for future reference.
>> Christopher Lemmer Webber <email@example.com> writes:
>>> Hi! I finally got Guix running on Linode! I'm excited about it!
>>> Here's the process (thanks to jackhill on freenode for helping me figure
>>> out all the stuff involving the bootloader!). It's very bullet-point'y,
>>> but here's the steps I took:
>>> - Start with a Debian (or whatever) server. Be sure to add your ssh
>>> key for easy login. We'll be using the default distro as a way to
>>> bootstrap Guix.
>>> - Power it down.
>>> - In the Disks/Configurations tab, resize the Debian disk to be
>>> smaller, maybe 30GB or something.
>>> - "Add a disk", with the following:
>>> - Label: "Guix"
>>> - Filesystem: ext4
>>> - Set it to the remaining size
>>> - Next to the "configuration" that comes with the default image,
>>> press "..." and select "Edit", then on that menu add to
>>> /dev/sdc the "Guix" label
>>> - Now "Add a Configuration", with the following:
>>> - Label: Guix
>>> - VM Mode: Paravirtualization (the default?? don't know if this matters)
>>> - Kernel: Grub 2 (it's at the bottom! This step is *IMPORTANT*)
>>> - Block device assignment:
>>> - /dev/sda: Guix
>>> - /dev/sdb: swap
>>> - Root device: /dev/sda
>>> - Turn off all the filesystem/boot helpers
>>> - Now power it back up, picking the Debian configuration
>>> - Once it's booted up, ssh root@<your-server-ip-here>
>>> - Run the "install guix form binary installer" steps:
>>> - $ sudo apt-get install gpg
>>> - $ wget https://sv.gnu.org/people/viewgpg.php?user_id=15145 -qO - | gpg
>>> --import -
>>> - $ wget
>>> - $ chmod +x guix-install.sh
>>> - $ ./guix-install.sh
>>> - $ guix pull
>>> - Now it's time to write out a config for the server. The key stuff is
>>> below, save as guix-config.scm:
>>> #+BEGIN_SRC scheme
>>> (use-modules (gnu)
>>> (guix modules))
>>> (use-service-modules networking
>>> (use-package-modules admin
>>> (host-name "my-server")
>>> (timezone "America/New_York")
>>> (locale "en_US.UTF-8")
>>> ;; This goofy code will generate the grub.cfg
>>> ;; without installing the grub bootloader on disk.
>>> (bootloader (bootloader-configuration
>>> (inherit grub-bootloader)
>>> (installer #~(const #t))))))
>>> (file-systems (cons (file-system
>>> (device "/dev/sda")
>>> (mount-point "/")
>>> (type "ext4"))
>>> (initrd-modules (cons "virtio_scsi" ; Needed to find the disk
>>> (users (cons (user-account
>>> (name "janedoe")
>>> (group "users")
>>> ;; Adding the account to the "wheel" group
>>> ;; makes it a sudoer.
>>> (supplementary-groups '("wheel"))
>>> (home-directory "/home/janedoe"))
>>> (packages (cons* nss-certs ;for HTTPS access
>>> (services (cons*
>>> (service dhcp-client-service-type)
>>> (service openssh-service-type
>>> (openssh openssh-sans-x)
>>> (password-authentication? #f)
>>> `(("janedoe" ,(local-file "janedoe_rsa.pub"))
>>> ;; Is this a good idea? Well if you don't add it
>>> ;; you have to manually set your user's password
>>> ;; via the glish console...
>>> ("root" ,(local-file "janedoe_rsa.pub"))))))
>>> - Replace the following fields in the above configuration:
>>> - (host-name "my-server") ; replace with your server name
>>> - (name "janedoe") ; replace with your username
>>> - ("janedoe" ,(local-file "janedoe_rsa.pub")) ; here too
>>> - Note the same above for root, which I don't feel great about, but
>>> otherwise you'll need to log in via the linode "glish" console to
>>> log in as root and set the user's initial password before you can
>>> start using sudo (is there another way around this?)
>>> - Save your ssh public key (~/.ssh/id_rsa.pub) as
>>> <your-username-here>_rsa.pub or whatever in the same directory
>>> - Mount the guix drive:
>>> $ mkdir /mnt/guix
>>> $ mount /dev/sdc /mnt/guix
>>> - Due to the way we set things up above, we don't install Grub
>>> completely, just our grub configuration file. So we need to copy
>>> over some of the other Grub stuff that's already there:
>>> $ mkdir -p /mnt/guix/boot/grub
>>> $ cp -r /boot/grub/* /mnt/guix/boot/grub/
>>> - Now initialize the Guix installation:
>>> $ guix system init guix-config.scm /mnt/guix
>>> - Ok, power it down!
>>> - Now from the linode console, select boot and select "Guix"
>>> - Once it boots, you should be able to log in via ssh! (The server
>>> config will have changed though.)
>>> - Be sure to set your password and root's password.
>>> - Horray! At this point you can shut down the server, delete the
>>> Debian disk, and resize the Guix to the rest of the size.
>>> BTW, if you save it as a disk image right at this point, you'll have an
>>> easy time spinning up new Guix images!
>>> Let me know if this guide helps you!
>> GPG Key ID: 7BC158ED
>> Use `gpg --search-keys lambdatronic' to find me
>> Protect yourself from surveillance: https://emailselfdefense.fsf.org
>> () ascii ribbon campaign - against html e-mail
>> /\ www.asciiribbon.org - against proprietary attachments
>> Please avoid sending me MS-Office attachments.
>> See http://www.gnu.org/philosophy/no-word-attachments.html