这个安装方法适用于那些没有提供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
大佬 我有个4h6g的小鸡 免费提供给你 能不能搞点乐子出来
大佬 看到邮箱联系我哦