我想给大家分享一下我从Debian7.7转移到NixOS14.12系统的经验。
我使用的是256MB RAM的基于KVM(Kernal Virtual Machine)的RamNode的VPS(Virtual Private Server)
在我开通一个ID:399523 的通行证去问RamNode的服务支持请求添加一个NixOS的安装镜像ISO文件来挂载前,需要先找到一个可用的SystemRescCd镜像。
启动:系统恢复(sysresccd),默认的启动项。
通过命令行使用VNC(Virtual Network Computing)来控制。
通过ssh来安装系统比用VNC舒服些。所以我们设置root密码然后连接到正在运行的SystemRescCd VPS
好的,现在我们连接进来了,开始NixOS的安装过程吧。首先,准备运行环境和存储空间。VPS给了我们30GB的HDD空间在 /dev/sda 1 2 3 4 5 6 | my-laptop $ ssh root@ipv4-of-your-vps
sysresccd ~
sysresccd ~
sysresccd ~
sysresccd ~
|
我已经创建了一个虚拟内存交换分区在 /dev/sda1 。然而根据我以往的经验,最好是提供至少1G的空间,因为 nix-env -i 命令构建包的时候可能会需要超过700MB的RAM。
磁盘空间剩下的部分给 /dev/sda2 。 我通常会用LVM,但这次我不去烦了,而是让NixOS启动和运行得尽量得快一些 :-) 1 2 3 4 5 6 7 8 9 10 11 12 | sysresccd ~
Disk /dev/sda : 32.2 GB, 32212254720 bytes
255 heads, 63 sectors /track , 3916 cylinders, total 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical /physical ): 512 bytes / 512 bytes
I /O size (minimum /optimal ): 512 bytes / 512 bytes
Disk identifier: 0xa3f12756
Device Boot Start End Blocks Id System
/dev/sda1 2048 1050623 524288 82 Linux swap / Solaris
/dev/sda2 1050624 62914559 30931968 83 Linux
|
提示说安装系统要求的RAM容量的下限是至少768MB。设置Linux的虚拟内存交换区在 /dev/sda1 然后激活它。
在 /dev/sda2 创建Ext4的文件系统,起名为 nixos 然后挂载它。
我们需要准备Nix环境来从运行着的linux系统安装NixOS。 SystemRescCd 没有足够大的分区(最大到120MB),所以我把 tmpfs 挂载在 /var/empty 目录,这样就可以提供256MB的虚拟文件空间。
创建一个我们用于安装/构建NixOS系统的用户/组 1 2 3 4 5 6 | sysresccd ~
sysresccd ~
sysresccd ~
sysresccd ~
sysresccd ~
` /nix ' -> `/mnt/nixtmp'
|
更换为 nixbld1 用户来安装 Nix 环境。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | sysresccd ~
nixbld1@sysresccd ~ $ export
nixbld1@sysresccd ~ $ export LC_ALL=POSIX
nixbld1@sysresccd ~ $ export NIX_IGNORE_SYMLINK_STORE=1
nixbld1@sysresccd ~ $ bash <(curl https: //nixos .org /nix/install )
nixbld1@sysresccd ~ $ . /var/empty/ .nix-profile /etc/profile .d /nix .sh
nixbld1@sysresccd ~ $ nix-channel --remove nixpkgs
nixbld1@sysresccd ~ $ nix-channel --add http: //nixos .org /channels/nixos-14 .12 nixos
nixbld1@sysresccd ~ $ nix-channel --update
nixbld1@sysresccd ~ $ cat <<EOF > configuration.nix
{ fileSystems. "/" = {};
boot.loader.grub. enable = false ;
}
EOF
nixbld1@sysresccd ~ $ export NIX_PATH=nixpkgs= /var/empty/ .nix-defexpr /channels/nixos :nixos= /var/empty/ .nix-defexpr /channels/nixos/nixos
nixbld1@sysresccd ~ $ export NIXOS_CONFIG= /var/empty/configuration .nix
nixbld1@sysresccd ~ $ nix- env -i -A config.system.build.nixos- install -A config.system.build.nixos-option -A config.system.build.nixos-generate-config -f "<nixos>"
nixbld1@sysresccd ~ $ exit
sysresccd ~
sysresccd ~
|
我们就要完成了!该配置你的NixOS系统的配置文件了。 系统的样子完全就取决于你怎么设置这配置文件了。
通常只要按下面这样设置这几个参数就足够了。 1 2 3 4 5 6 7 8 9 10 11 | boot.loader.grub.device = "/dev/sda" ;
networking.hostName = "mynixos" ;
services.openssh. enable = true ;
users .extraUsers.user1 = {
isNormalUser = true ;
uid = 1000;
home = "/home/user1" ;
extraGroups = [ "wheel" ];
};
|
最后,启动NixOS系统! 1 2 3 | sysresccd ~
sysresccd ~
sysresccd ~
|
到这里我们几乎就全完成了。如果你想登录你的NixOS,别忘了为你的用户和root设置密码。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | sysresccd ~
-rwxr-xr-x 1 nixbld1 nixbld 801K Jan 1 1970 /nix/store/r5sxfcwq9324xvcd1z312kb9kkddqvld-bash-4 .3-p30 /bin/bash
sysresccd ~
(chroot) passwd root
(chroot) passwd user1
(chroot) exit
sysresccd ~
sysresccd ~
sysresccd ~
sysresccd ~
sysresccd ~
sysresccd ~
sysresccd ~
sysresccd ~
|
一旦你登录到你的NixOS系统,别忘了检查报错和警告等的日志记录,并更新系统。 1 2 3 4 5 6 7 8 9 10 | my-laptop ~ $ ssh user1@my-vps
[user1@mynixos:~]$ sudo su -
[root@mynixos:~]
[root@mynixos:~]
[root@mynixos:~]
[root@mynixos:~]
[root@mynixos:~]
|
余下的请看这里 NixOS Manual ;-) 祝你愉快&好运! |