NixOS Legacy Boot(MBR) VmwareWorkstation安装向导

news2024/10/6 18:36:05

NixOS & Legacy Boot(MBR) VmwareWorkstation安装向导

目录

  • NixOS & Legacy Boot(MBR) VmwareWorkstation安装向导
    • 1. 下载镜像
    • 2. 创建空白虚拟机
    • 3. 使用命令行安装 NixOS
      • 3.1 Legacy Boot(MBR)
      • 3.2 格式化
    • 4. configration.nix 配置文件
    • 5. 部署NixOS
    • 6. 部分教育站镜像源集合
    • 参考资料
    • ⚠️未解决的问题

1. 下载镜像

  1. NixOS 清华大学开源镜像站
  2. NixOS 官方
    下载distrbution
    这里我选用GNOME版本作为安装演示ISO

2. 创建空白虚拟机

这里只演示需要修改的部分,其余不用修改的不做演示,直接下一步即可

  1. 新建虚拟机,选择自定义安装
  2. 选择稍后安装虚拟机
  3. 虚拟机版本选择 其他 Linux 5.x 内核
  4. 配置完成后,点击 编辑虚拟机设置 → \rightarrow 使用ISO映像文件

3. 使用命令行安装 NixOS

启动虚拟机,来到安装引导界面
在这里插入图片描述
关闭 NixOS Installer,点击左上角的Activities,选择底部Dock栏的Console
在这里插入图片描述
这里由于 VmwarkStation 默认是使用BIOS 传统引导(Legacy Boot)MBR 方式启动,所以演示以 Legacy Boot(MBR) 为例子


3.1 Legacy Boot(MBR)

首先使用管理员身份登录

sudo su root
  1. 打开 /dev/sda 设备并进入 parted 命令行模式

    parted /dev/sda
    
  2. 创建MBR分区表

    (parted) mklabel msdos
    
  3. 创建一个新的主分区,从 1MB 开始,到倒数第 8GB 结束

    (parted) mkpart primary 1MB -8GB
    
  4. 将第一个分区的启动标志设置为 on,表示这个分区是可引导的

    (parted) set 1 boot on
    
  5. 创建一个新的主分区,类型为 linux-swap,从倒数第 8GB 开始,到最后结束

    (parted) mkpart primary linux-swap -8GB 100%
    
  6. 退出

    (parted) quit
    

3.2 格式化

  1. 在 /dev/sda1 上创建一个 ext4 文件系统,并将其标记为 nixos

    mkfs.ext4 -L nixos /dev/sda1
    
  2. 创建一个新的交换分区,并将其标记为 swap

    mkswap -L swap /dev/sda2
    
  3. 将 /dev/disk/by-label/nixos 挂载到 /mnt 目录下,使得该目录下的文件可以被访问

    mount /dev/disk/by-label/nixos /mnt
    
  4. 将 /dev/sda2 上的交换分区打开

    swapon /dev/sda2
    
  5. 在 /mnt 目录下生成 NixOS 的配置文件,该文件包含了 NixOS 的所有配置信息,包括系统的软件包、服务、用户等等

    nixos-generate-config --root /mnt
    
  6. 编辑 /mnt/etc/nixos/configuration.nix以满足你的需要

    vim /mnt/etc/nixos/configuration.nix 
    

4. configration.nix 配置文件

configuration.nix 是 NixOS 系统的配置文件,它是一个声明式的配置文件,描述了整个系统的状态,包括应该安装哪些软件包以及各种系统设置和选项

# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ config, pkgs, ... }:

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

  # Use the GRUB 2 boot loader.
  boot.loader.grub.enable = true;
  boot.loader.grub.version = 2;
  # boot.loader.grub.efiSupport = true;
  # boot.loader.grub.efiInstallAsRemovable = true;
  # boot.loader.efi.efiSysMountPoint = "/boot/efi";
  # Define on which hard drive you want to install Grub.
  boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only

  networking.hostName = "nixos"; # Define your hostname.
  # Pick only one of the below networking options.
  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.
  networking.networkmanager.enable = true;  # Easiest to use and most distros use this by default.

  # Set your time zone.
  time.timeZone = "Asia/Shanghai";

  # Configure network proxy if necessary
  # networking.proxy.default = "http://user:password@proxy:port/";
  # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";

  # Select internationalisation properties.
  i18n.defaultLocale = "en_US.UTF-8";
  console = {
    font = "Lat2-Terminus16";
  #   keyMap = "us";
    useXkbConfig = true; # use xkbOptions in tty.
  };

  # Enable the X11 windowing system.
  services.xserver.enable = true;

  # Enable Vmware-Tools
  virtualisation.vmware.guest.enable = true;

  # Change Nix-Channel by TsingHua
  nix.settings.substituters = [ "https://mirrors.tuna.tsinghua.edu.cn/nix-channels/store" ];

  # Enable the GNOME Desktop Environment.
  services.xserver.displayManager.gdm.enable = true;
  services.xserver.desktopManager.gnome.enable = true;
  
  # Configure keymap in X11
  services.xserver.layout = "us";
  # services.xserver.xkbOptions = {
  #   "eurosign:e";
  #   "caps:escape" # map caps to escape.
  # };

  # Enable CUPS to print documents.
  # services.printing.enable = true;

  # Enable sound.
  sound.enable = true;
  # hardware.pulseaudio.enable = true;

  # Enable touchpad support (enabled default in most desktopManager).
  # services.xserver.libinput.enable = true;

  # Define a user account. Don't forget to set a password with ‘passwd’.
  # users.users.alice = {
  #   isNormalUser = true;
  #   extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
  #   packages = with pkgs; [
  #     firefox
  #     thunderbird
  #   ];
  # };

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
    wget
    neofetch
    openssh
    bash-completion
    rxvt-unicode
    alacritty
    parted
  ];

  # Some programs need SUID wrappers, can be configured further or are
  # started in user sessions.
  # programs.mtr.enable = true;
  # programs.gnupg.agent = {
  #   enable = true;
  #   enableSSHSupport = true;
  # };

  # List services that you want to enable:

  # Enable the OpenSSH daemon.
  # services.openssh.enable = true;

  # Open ports in the firewall.
  # networking.firewall.allowedTCPPorts = [ ... ];
  # networking.firewall.allowedUDPPorts = [ ... ];
  # Or disable the firewall altogether.
  networking.firewall.enable = false;

  # Copy the NixOS configuration file and link it from the resulting system
  # (/run/current-system/configuration.nix). This is useful in case you
  # accidentally delete configuration.nix.
  # system.copySystemConfiguration = true;

  # This value determines the NixOS release from which the default
  # settings for stateful data, like file locations and database versions
  # on your system were taken. It‘s perfectly fine and recommended to leave
  # this value at the release version of the first install of this system.
  # Before changing this value read the documentation for this option
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
  system.stateVersion = "22.11"; # Did you read the comment?

}

5. 部署NixOS

生成 configration.nix 配置文件后,由于网络原因

我们需要临时使用清华大学开源镜像站的Nix-channels配置

nixos-install --option substituters "https://mirrors.tuna.tsinghua.edu.cn/nix-channels/store" -vv

但是有时候镜像不是很稳定,可以尝试其他的,这里以中国科学技术大学为例

nixos-install --option substituters https://mirrors.ustc.edu.cn/nix-channels/store

安装完成后,系统会提示你设置root账户的密码

setting root password...
New password: ***
Retype new password: ***

之后输入 reboot 重启 NixOS 即可


6. 部分教育站镜像源集合

  1. 中国科学技术大学Nix源使用帮助 | 个人觉得最稳定
  2. 清华大学开源镜像站 Nix Channels 镜像使用帮助 | 对一些Github的配置文件无法下载
  3. 上海交通大学nix-channels/store镜像源服务

参考资料

How to Install VMware Tools (Open VM Tools) in NixOS Linux 20.09
NixOS Installation Guide
从⑨开始的NixOS | 安装篇 --作者:农企中国
从⑨开始的NixOS | 安装篇 --特别补充 --作者:农企中国


⚠️未解决的问题

Vmware Tools 安装后无法根据显示器大小自适应缩放,已经在 NixOS Wiki 社区提问。Display scaling issue with VMware tools in NixOS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/496342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven 3.9.1下载安装配置一条龙(无压力)亲测

这里写自定义目录标题 前言一、下载 Apache Maven 3.9.11.1、请先检查自己的IDEA是否有这个条件,是否兼容1.2、Maven下载 二、Windows安装配置Maven2.1、解压2.2、新建 repository 本地仓库2.3、配置环境变量MAVEN_HOME 软件路径M2_HOME 本地仓库路径配置Path2.3.1新…

关于maven

一、maven是什么 一个java项目构建工具 二、maven的作用 (1)依赖管理 不同框架整合,互相依赖jar包版本不同,版本不一样,程序跑起来就会报错。用maven管理jar包。 (2)跨平台构建项目 linux服…

数字信号处理3:A/D、D/A转换

信号这个东西,我们是实际应用中用的大多都是模拟信号,比如说语音、地震、雷达、声纳信号,这些都是模拟信号,但是,计算机想要通过数学方法处理模拟信号,就要先将模拟信号转换成具有有限精度的数字序列&#…

L4公司进军辅助驾驶,放话无图也能跑遍中国

作者 | Amy 编辑 | 德新 高阶智能驾驶走向规模量产,高精地图成为关键的门槛之一。今年,多家车企和智驾公司都喊出「不依赖高精地图,快速大规模落地」的口号。 华为、小鹏、元戎以及毫末等,可能是最快在国内量产 无高精图智…

TCP/IP网络编程(一)

TCP/IP网络编程读书笔记 第1章 理解网络编程和套接字1.1 理解网络编程和套接字1.1.1 构建打电话套接字1.1.2 编写 Hello World 套接字程序 1.2 基于Linux的文件操作1.2.1 底层访问和文件描述符1.2.2 打开文件1.2.3 关闭文件1.2.4 将数据写入文件1.2.5 读取文件中的数据1.2.6 文…

AI仿写软件-仿写文章生成器

AI仿写软件:高效出色的营销利器 作为互联网时代的营销人员,我们不仅需要品牌意识,还必须深谙营销技巧。万恶的时限压力使得我们不得不在有限的时间内输出更多的文本内容,以便吸引更多的关注。那么,如何解决这个问题呢…

C++网络基础知识面试题2

目录 1、使用TCP的常见协议有哪些?使用UDP的常见协议有哪些?简单说几个 2、如何判断访问目标地址的网络是通的?如何简单地查看到目标地址的网络是否有丢包和抖动? 3、如果知道目标服务器的服务端口有没有开启? 4、…

【NodeJs】使用Express框架快速搭建一个web网站

如果电脑有安装使用Nodejs,用得次数少的话,忘了怎么弄,可以看看这个文章,按照步骤,能快速搭建一个web网站服务器, 首先,你需要保证电脑系统有安装了Node.js,然后可以用VsCode开发工…

Java多线程基础概述

简述多线程: 是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 正式着手代码前,需要先理清4个概念:并发,并行,进程&#…

ChatGPT带你领略自动驾驶技术

一、自动驾驶技术现概述 自动驾驶技术是指利用计算机、传感器和其他设备,使车辆能够在不需要人类干预的情况下自主行驶的技术。目前,自动驾驶技术已经在一些汽车厂商和科技公司中得到广泛应用,但仍然存在一些技术和法律上的挑战,需…

c++类友元函数理解(图、文、代码)

序: 1、初学c,理解阶段,一下为个人理解和案例,陆续更新 一、友元函数和普通函数区别 类的友元函数是函数,但是他可以调用类的私有变量,以下代码,Fun2是报错的,因为这个函数跟A没任…

基于SSM框架流浪动物救助及领养管理系统(spring+springmvc+mybatis+jsp+jquery+layui)

一、项目简介 本项目是一套基于SSM框架流浪动物救助及领养管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试&…

java错题总结(28-30页)

------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- 不考虑类加载, --------------------------------------------…

实验三 磁盘调度算法设计

实验三 磁盘调度算法设计 实验目的: 通过对磁盘调度算法的设计,深入理解提高磁盘访问速度的原理。 实验内容: 模拟实现磁盘调度算法:最短寻道时间优先(SSTF)和扫描(SCAN)算法。 …

数字化转型导师坚鹏:企业数字化转型培训如何高效推进评价与改进

企业数字化转型培训如何高效推进、评价与改进 ——以推动企业数字化转型战略落地为核心,实现知行果合一 课程背景: 很多企业都在开展企业数字化转型培训工作,目前存在以下问题急需解决: 不清楚如何有效推进企业数字化转型培训…

JavaScript 箭头函数

(许多人所谓的成熟,不过是被习俗磨去了棱角,变得世故而实际了。那不是成熟,而是精神的早衰和个性的消亡。真正的成熟,应当是独特个性的形成,真实自我的发现,精神上的结果和丰收。——周国平&…

Vue|内置指令

Vue的内置指令是带有v-前缀的特殊属性,它的作用是当表达式的值改变时将其一系列连带影响,响应地作用于DOM元素。 推荐专栏:微信小程序实战开发专栏 内置指令v-text指令v-html指令v-cloak指令v-once指令v-pre指令 内置指令 开始前的准备&#…

虹科方案 | CEMEX 使用HK-Edgility 智能边缘计算平台简化其企业 WAN 管理和运营

一、应对价值 130 亿美元的跨国企业的网络挑战 “我们选择 Edgility 是因为其卓越的管理和协调功能,它为我们提供了一个端到端的工具集,可以经济高效地部署和管理我们边缘设备的生命周期。” —— Fernando Garcia -Villaraco Casero, CEMEX 全球IT 战略…

玩家必看!这三款简单好玩的免费小游戏平台!

在这个飞速发展和高度竞争的时代,人们的日程表已经被各种事情排满。时间的紧迫使得我们不可能一刻都停歇下来,正因为如此,我们才需要适当地放慢自己的步伐,寻找些许休闲娱乐的机会来放松自己。 现如今,越来越多的小游…

VSAN 6.7虚拟机精简置备盘空间不回收

原创作者:运维工程师 谢晋 VSAN 6.7虚拟机精简置备盘空间不回收 前提 前提 客户VSAN6.7环境,做了Horzion7.4,近期发现虚拟机存储空间越来越大,远远超过了已分配的磁盘空间大小,发现是数据写入系统内即使删除了数据…