静看光阴荏苒
不管不顾不问不说也不念

KVM虚拟化的VPS安装NixOS

这个安装方法适用于那些没有提供vnc,iso挂载功能的kvmvps。只有一个硬性要求,机器内存要大于3gb。

原系统我使用的是debian11。首先安装一下需要用到的包:

apt -y update
apt -y install curl xz-utils sudo git

创建一个普通用户:

useradd -m -s /bin/bash imlala
passwd imlala

把用户加到sudo组:

adduser imlala sudo

切到这个用户下:

su - imlala

安装nix,安装完成后退出当前的ssh,重新用普通用户登录:

sh <(curl -L https://nixos.org/nix/install) --daemon

安装nixos-generators:

nix-env -f https://github.com/nix-community/nixos-generators/archive/master.tar.gz -i

新建一个配置文件:

nano config.nix

在这个配置文件内配置好机器的网络以及设置root密码:

{ config, lib, pkgs, ... }:

{
  networking.usePredictableInterfaceNames = false;
  networking.interfaces.eth0.ipv4.addresses = [ {
    address = "1.2.3.4";
    prefixLength = 22;
  } ];
  networking.defaultGateway = "1.2.3.4";
  networking.nameservers = [ "8.8.8.8" ];

  services.openssh.enable = true;
  services.openssh.permitRootLogin = "yes";
  users.users.root.password = "password";
}

生成kexec映像:

nixos-generate -c /home/imlala/config.nix -o /home/imlala/kexec -f kexec-bundle

运行kexec等待片刻,重新登录ssh,应该就进入到一个新的系统内了:

sudo ./kexec

这个系统是运行在内存中的,现在我们就可以在这个系统内开始安装nixos了。

开始之前先把这个系统内的一个自动重启的定时器禁用了,不禁用的话,一段时间后会系统会自动重启,这样就无法继续安装了:

systemctl stop autoreboot.timer

根据机器之前的分区情况,清除硬盘的分区表:

wipefs -a /dev/vda1
wipefs -a /dev/vda2
wipefs -a /dev/vda

如图所示:

给硬盘分区,我这台机器是bios启动,我准备创建gpt分区,所以至少需要2个分区,一个用于bios_boot,一个用于根:

fdisk /dev/vda

创建一个1mb大小的bios_boot分区:

创建根分区:

创建文件系统,这里使用的是ext4:

mkfs.ext4 /dev/vda2

挂载:

mount /dev/vda2 /mnt

生成nixos的配置文件:

nixos-generate-config --root /mnt

编辑配置文件:

nano /mnt/etc/nixos/configuration.nix

这个configuration.nix就是nixos的核心,简单点说,这个配置文件你配置成啥样,你安装好的nixos就长啥样。

这里我只列出一些必须要改动的选项,其他的可以自己根据官方的手册来配置。另外由于我这是安装给vps服务器用的,省略了桌面、输入法、音频等配置:

{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  boot.loader.grub.enable = true;
  boot.loader.grub.version = 2;
  boot.loader.grub.device = "/dev/vda"; # 设置要将grub安装到哪块硬盘

  networking.hostName = "imlala";
  networking.usePredictableInterfaceNames = false;
  networking.interfaces.eth0.ipv4.addresses = [ {
    address = "1.2.3.4";
    prefixLength = 22;
  } ];
  networking.defaultGateway = "1.2.3.4";
  networking.nameservers = [ "8.8.8.8" ];

  time.timeZone = "Asia/Shanghai";

  users.users.imlala = {
    isNormalUser = true;
    home = "/home/imlala";
    description = "imlala";
    extraGroups = [ "wheel" ];
    hashedPassword = "password"; # 设置普通用户的哈希密码
  };

  environment.systemPackages = with pkgs; [
    wget
    lsb-release
    neofetch
  ];

  services.openssh.enable = true;
  services.openssh.permitRootLogin = "yes"; 

  networking.firewall.enable = false;

  system.stateVersion = "22.11";
}

哈希密码可以用下面的命令生成:

mkpasswd -m sha-512

确认配置无误后开始安装,在安装过程中会让你设置root用户的密码:

nixos-install --root /mnt

安装完成后,重启机器即可进入到新安装的nixos了:

reboot

来一发neofetch收尾:

也可以看看:

https://github.com/nix-community/nixos-generators
https://nixos.wiki/wiki/Install_NixOS_on_Hetzner_Online
https://nixos.wiki/wiki/Install_NixOS_on_Scaleway_X86_Virtual_Cloud_Server
https://nixos.wiki/wiki/Install_NixOS_on_a_Server_With_a_Different_Filesystem
https://nixos.org/manual/nixos/stable/index.html#sec-ipv4

赞(2)
未经允许不得转载:荒岛 » KVM虚拟化的VPS安装NixOS
分享到: 更多 (0)

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    大佬 我有个4h6g的小鸡 免费提供给你 能不能搞点乐子出来 :mrgreen:

    干瞪眼1个月前 (08-25) Google Chrome 103.0.0.0 Google Chrome 103.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 大佬 看到邮箱联系我哦 :smile:

      干瞪眼1个月前 (08-25) Google Chrome 103.0.0.0 Google Chrome 103.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿