草庐IT

NixOS 系列 #2:如何在虚拟机上安装 NixOS?

Sagar Sharma 2023-03-28 原文

如果你可以在任何 Linux 发行版上使用 Nix 包管理器,为什么还要安装 NixOS?

在使用 NixOS 几天之前,我经常想知道同样的事情。

当我意识到这些好处后,我就写了这篇文章来帮助你了解 ​​为什么你要考虑使用 NixOS​​。如果你已经阅读了本系列的第一篇文章,那么你已经知道自己想要什么了。

那么,如何开始呢?考虑到它对许多人来说可能是一种新体验,你应该用它替换日常使用的系统还是将其安装为虚拟机?

我建议在你想要将其替换为你的主要操作系统之前在虚拟机上使用 NixOS。这适用于你想尝试的任何新事物,特别是 ​​先进的 Linux 发行版​​,例如 NixOS。

使用 VirtualBox 在 VM 中安装 NixOS

在本教程中,我将使用 VirtualBox。

如果你使用的是 Ubuntu 并且不关心是否拥有最新版本,那么可以使用一个命令安装 VirtualBox:

sudo apt install virtualbox
想要安装最新版本?你可以参考下面的指南:

如何在 Ubuntu 上安装 VirtualBox(初学者教程)

如果你使用 Ubuntu 以外的任何发行版,你可以 ​​按照其官方下载页面的下载说明进行操作​​。

成功安装 VirtualBox 后,让我们从第一步开始。

步骤 1:获 取NixOS 的 ISO 镜像

你需要前往 NixOS ​​官方下载页面​​。

在 “NixOS: the Linux distribution” 部分,你会找到带有 GNOME 和 KDE 桌面的 ISO。

当然,也有最小化 ISO,但我建议使用两者之一(GNOME 和 KDE):

下载 NixOS ISO 文件

对于本教程,我将使用 GNOME。

请记住,你可以选择 GNOME 和 KDE 两种立付桌面环境Live Desktop。

而在安装过程中,你可以选择自己喜欢的桌面环境,包括 Xfce、Pantheon、Cinnamon、MATE 等等!

步骤 2:在 VirtualBox 中创建虚拟机

打开 VirtualBox 并单击 “新建New” 按钮添加新的虚拟机:

截图显示了如何点击新建按钮来添加新的虚拟机

它将打开一个提示,要求你添加有关要添加的虚拟机的信息。

你可以先命名虚拟机:

  • 为你的虚拟机命名,以便你可以识别它是 NixOS 系统。所以我将其命名为 “NixOS”。
  • 选择你刚刚下载的 ISO 镜像。
  • 选择 “Linux” ISO 类型。
  • 并在版本选择 “其它 Linux(64 位)Other Linux (64-bit)”。

选择所有内容后,单击 “下一步Next” 按钮。

接下来,系统会要求你选择基本内存(RAM)、要分配给此虚拟机的处理器以及存储空间。

虽然 NixOS 没有提到官方要求,但我建议你为此安装至少拥有 4GB RAM2-4 个处理器内核和 30GB 空间

选择 NixOS 虚拟机的硬件

最后,它会显示你为此虚拟机所做选择的摘要:

NixOS 虚拟机 安装摘要

如果一切正常,请单击 “完成Finish” 按钮,它将为你创建一个 NixOS 虚拟机。

步骤 3:安装 NixOS

创建完虚拟机后,你为 NixOS 虚拟机指定的名称应该显示在 VirtualBox 的虚拟机列表中。

选择 “NixOS” 虚拟机并单击“开始”按钮:

开始 NixOS 虚拟机

它将启动 NixOS 立付桌面环境Live Desktop,以便你可以试用 Linux 发行版。

选择安装语言
启动进入 NixOS 后,安装程序将启动并要求你设置安装程序的首选语言:

选择安装时的首选语言

选择地区和时区
接下来,选择你所在的地区和区域。如果你不知道这一点,你可以从地图上选择你的国家,它会为你设置。

选择区域和区域后,它还会选择系统的首选语言、数字和日期区域设置。

当然,你可以根据需要进行更改,但对于大多数用户而言,选定的选项就可以正常工作:


选择键盘布局
接下来,你将必须设置键盘布局。对于大多数用户来说,默认设置的 “English (US)” 应该可以正常工作。

如果你要进行其他操作,则可以在继续之前测试你的键盘配置。

选择键盘格式

之后,系统会要求你创建一个用户并为该用户设置密码。

你可以选择为虚拟机保留一个强密码或任何随机密码。

创建用户

选择你喜欢的桌面环境
使用 NixOS,你可以选择以下桌面环境:

  • GNOME
  • KDE(定制的最佳选择)
  • Xfce
  • Pantheon(ElementaryOS 附带的桌面环境)
  • Cinnamon
  • Enlightenment
  • LXQt

选择桌面环境

在 NixOS 上使用非自由软件
NixOS 遵循与 Fedora 类似的方法,你必须选择是否需要非自由软件。

我建议你启用非自由包:

启用非自由软件包

分区部分
由于这是一个虚拟机指南,我建议你使用自动对磁盘进行分区的 “擦除磁盘Erase disk” 选项!

自动分区

完成后,它将为你提供你所做选择的摘要:

安装选择摘要

如果一切正常,请单击 “安装Install” 按钮,它将开始安装。

不要重启而是关闭虚拟机
安装完成后,你可以选择重新启动虚拟机。

如果你这样做,它将再次加载安装程序

要解决此问题,你必须更改引导顺序。

为此,请在安装完成后关闭虚拟机。

要关闭虚拟机,请从“文件File”菜单中选择 “关闭Close” 选项,然后选择 “关闭虚拟机电源Power off the machine” 选项:

更改 VirtualBox 中的启动顺序
要更改 NixOS 虚拟机 中的启动顺序,请打开该虚拟机的设置:

在设置中,选择 “系统System”,你将找到启动顺序。

在这里,选择 “硬盘Hard Disk” 并使用选项旁边的向上箭头图标并将其设为启动的第一个选项:

改变启动顺序

按下 “确定OK”,它将保存你所做的更改。

或者,你可以移除我们添加的用于启动安装的光盘(ISO 镜像)。

步骤 4:从 NixOS 安装启动

现在,启动你的 NixOS 虚拟机,你将看到一个 GRUB 屏幕:

NixOS grub

选择默认选项,它将带你进入带有 GNOME 桌面的全新 NixOS 安装。

运行 NixOS

就是这些了!请继续探索 NixOS!

总结

这是关于如何在 VirtualBox 上安装 NixOS 的快速指南。

对于 NixOS 教程系列的下一部分,我将分享有关安装和删除包的建议。

敬请期待本系列的下一部分。在那之前,请随时分享你对 NixOS 的看法或在遵循指南时遇到任何问题!

有关NixOS 系列 #2:如何在虚拟机上安装 NixOS?的更多相关文章

  1. ruby - 如何在 Ruby 中顺序创建 PI - 2

    出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

  2. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  3. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  4. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  5. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  6. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  7. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  8. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  9. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  10. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

随机推荐