【学习笔记】Ubuntu双系统+搭建个人服务器

2023-05-16

Ubuntu双系统+搭建个人服务器

  • 前言
  • 1. Ubuntu+Win双系统
    • 1.1 制作U盘启动盘
    • 1.2 系统分盘
    • 1.3 安装Ubuntu系统
  • 2. 搭建个人服务器
    • 2.1 设置root
    • 2.2 配置ssh
    • 2.3 向日葵连接
  • 3. 内网穿透
    • 3.1 实现流程
    • 3.2 zerotier
  • 3. 总结

前言

前段时间整了一套主机,3060ti+intel 11600F,终于不用在轻薄本上跑机器学习代码了,也不用因为服务器价格昂贵而发愁了。但是这些仅限在家中使用,一旦外出或者返校,这套主机就在家里吃灰吧,想想一年在家不超过100天时间,买来实在是性价比不高,但是我早有准备,曾有幸在某站上刷过将自家不用的机子改装成服务器的例子,这正好激发了我的兴致,所以说干就干,下面将从原理和实操角度来回顾我装机过程~


1. Ubuntu+Win双系统

PS:为什么是双系统,我想热爱游戏的朋友不会陌生,Win娱乐生产力,Ubuntu学习生产力,不耽误!
由于机子买来自带Win11系统,所以只用准备Ubuntu的安装。Ubuntu系统选用的是20.04版本,2202年了,20年的版本还是稳定可靠的(可以免费安全维护至2025年)。首先,在Ubuntu官网下载系统镜像,由于机子配置还是挺高的,鲁大师跑分能上150万+,所以果断选择了桌面版(就是任性),当然配置不足的还是选择server版吧。

1.1 制作U盘启动盘

在上文中提到下载系统镜像,如下所示:
在这里插入图片描述
下载制作U盘启动盘软件PowerISO
在这里插入图片描述
准备一个4G以上的U盘(最好是空U盘,因为制作启动盘时会格式化),注意备份,接着选中工具,制作U盘启动盘。
在这里插入图片描述
在这里插入图片描述
最后选定镜像文件,确定目标U盘,点击开始即可,这样Ubuntu启动U盘就制作完成。

1.2 系统分盘

我们必须分一定的空闲空间给Ubuntu系统运行,所以我们需要在Win系统上进行分盘。分盘步骤如下:

  1. 搜索计算机管理,打开磁盘管理。在这里插入图片描述

  2. 在想要压缩的磁盘上右键选择“压缩卷”,修改需要压缩的空间,一般大于40G都是够用的。压缩完成后就会出现未分配空间。在这里插入图片描述

  3. 选择未分配区域,右键新建卷,按照要求一步步走,然后再将新建的卷删除,就变成可用空间了。

其实这里我仍然是未分配空间,但是参考别的网上教程,都是会变成可用空间,不过就算这样,之后的系统还是能安装成功的(不知道是不是win11系统问题)。注意系统硬盘分区有两种方式,一种是bios+MBR,一种是uefi+GPT,后者的可以直接分盘,而前者会在一些特殊情况出现问题,具体可以自行百度。

1.3 安装Ubuntu系统

安装之前,要设置BIOS,这个不同主机会有不同的差异,主要以下几点:

  • 关闭快速启动。选择控制面板-电源选项-选择电源按钮的功能,选择“更改当前不可用的设置”,取消选中“启用快速启动”,不然电脑又默认直接进入Win11系统了。
  • 修改U盘为启动时的首选项。也有的电脑是选择关闭安全模式即可。

我买的是联想刃7000k主机,有可视化界面,所以这一点就友好很多。首先关机,插入启动盘,疯狂按f12进入可视化界面,选择U盘启动,这样就直接进入Ubuntu的安装界面了。一些简单的建议操作如下:

  1. 选择中文简体,点击安装Ubuntu。
  2. 键盘布局默认Chinese,直接继续。
  3. 更新和其他软件部分按需选择,我这里直接正常安装。
  4. 安装类型选择其他选项,因为我们需要自己手动分区。

接下来就是安装的重中之重了,创建分区。选中空闲分区点击加号即可设置分区。分区方案有多种,网上和各类教程书上都有详细的方案。我选择的是比较简单的分区方案,共4个分区。

  • "/boot"分区,200~300MB,我分配了300MB,存放操作系统启动引导程序,需要用它来启动ubuntu系统。
  • "/"分区,15G~20G,我分配了20G,相当于windows的c盘,主要存放系统文件。
  • "/home"分区,相当于Win中除了c盘的其他盘,可以存放安装包、用户数据等等。
  • swap分区,swap分区的意义在于当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用,而这些释放的空间就暂存在swap空间中,需要使用的时候再恢复,相当于虚拟内存的作用,以空间换时间。建议大小稍大于电脑内存,这里我分配了20G。

在这里插入图片描述
PS:由于安装的时候未截图,所以使用了网图,图片的来源我会在文末链接。

剩下的就是选择区域和填写用户名和密码,等待安装,最后重启,拔掉U盘,选择Ubuntu启动,这样Ubuntu系统就安装完毕了。
在这里插入图片描述

2. 搭建个人服务器

2.1 设置root

使用Ubuntu第一步一定要设置root,因为很多操作需要sudo的权限才能操作。

  1. 打开终端,输入sudo passwd root
  2. 在下一行输入你的密码。
  3. 再次输入,出现passwd: password updated successfully字样,表示root密码设置成功。

2.2 配置ssh

服务器远程连接一般都是通过ssh进行连接的,那么就得在Ubuntu上安装ssh并设置开机自启,这样就可以一直保持对服务器的连接了。

  • 安装命令:sudo apt-get install openssh-server
  • 确认sshserver是否启动:ps -e|grep ssh
  • 修改端口号:sudo vi /etc/ssh/sshd_config,找到# Port 22,去掉注释改成一个五位数的端口(防止端口扫描)。
  • 配置完成后重启:sudo /etc/init.d/ssh restart
  • 设置开机自启动: sudo systemctl enable ssh

这样,ssh就配置成功了。

2.3 向日葵连接

在远程连接的路上还是有不少选择的,当然我在第一步就踩了坑,这也是由于我计算机网络知识遗忘了不少,现在终于拾起,倍感惭愧。一开始我是知道可以从互联网服务商那里要求公网IP的,但是一个残酷的现实是,我的房间里没有网线,连接网络必须使用WIFI,这就涉及到NAT,网络地址转换,我的服务器在我家路由器的内网里,外界可能只知道我家的路由器(甚至不知道,后面会有解释),而不知道服务器的存在,那么外界的连接来带家中路由器就戛然而止了,它根本无法连接到我的服务器。那么该如何解决呢?
这里我还想提一嘴在一开始我犯的一个愚蠢的错误。我在Ubuntu上输入ifconfig,根据查询到的IP地址用MobaXterm进行连接,很顺利,一下子就连接上了,我当时还在想要什么公网IP,这样不就轻轻松松连上了!很快我就意识到了错误,我无意发现IP地址的开头是192.168开头,查询了下发现属于C类私网地址,并且我的笔记本也是这个开头的IP。二者在同一私网内,自然能连接起来,搭建服务器的初衷,就是在不同私网的条件下使用,所以这个愚蠢的错误差点让我白折腾一通。
那么向日葵连接,是一个付费的远程的连接工具,当然并不是所有服务都付费,免费的服务已经够我使用了,包括桌面控制、桌面查看和远程文件(SSH需要付费,如何解决看下一节),并且我只要注册好一个账号,让所有的设备都添加到设备列表中,设置开机自启自动连接账号,这样远程操控不要太舒服。
在这里插入图片描述
这里附上Ubuntu中向日葵的安装:

  1. 在向日葵官网下载对应版本。
  2. 切入安装目录,输入sudo dpkg -i XXX,XXX为对应安装包的名称。

安装好后还要设置开机自启,在终端输入gnome-session-properties,会出现如下窗口
在这里插入图片描述
命令中输入向日葵可执行文件的路径即可。

但是向日葵也经常不稳定,比如开机虽然自启,但是自动登录会经常失败,需要刷新一下才行,如果我是远程控制,那么还需要家里有人给我点一下刷新,这么麻烦的事情,还不如拉一条网线呢。这个问题困惑了我很久,一直不知道如何解决,直到今天看到了内网穿透的概念,一瞬间我豁然开朗。

3. 内网穿透

起因还是看了科技宅小明在某站发布的视频,在其中他提及了内网穿透的概念,我特地百度了一下,内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。这个好,我现在遇到的问题,不就是服务器受到NAT设备屏蔽无法远程连接嘛,那么该如何做呢?(NAT的原理请参考计算机网络大黑书)

3.1 实现流程

百度百科上是这样介绍的:

  1. 两个需要通过内网穿透进行通讯的内网客户端,分别将自己的外网收发接口注册给一个具有公网ip的中转服务器。在这里插入图片描述

  2. 中转服务器将两个客户端注册的收发接口分别告知给对端。
    在这里插入图片描述

  3. 一个内网客户端使自己的接收端口作为源地址,向对端的发送端口发送一个udp数据包,这个数据包称为打洞包。发送过这个打洞包后,可以在这个内网的出口路由器上产生一条NAT记录,令后续从对端发送端口发来的数据包都不被丢弃, 而是转发给相应的内网客户端的指定端口。
    在这里插入图片描述

  4. 发送过打洞包后,对端发送至本端路由器指定接收端口的数据包,就会根据NAT记录转发至本端的内网服务器接收端口,从而实现了内网服务器接收外网数据包的功能。

  5. 另一个内网服务器同样执行上述步骤 (3) 、 (4), 即可实现两端内网服务器相互收发音频数据包的功能。

这个过程听起来很复杂,我解释一下,本质就是两个内网客户端在外网服务器上注册,互相识别(本质是内网所在的路由器互相识别NAT记录),然后进行通信。这有点像探探的喜欢功能,二者只有互相喜欢(指向相同的中转服务器),才能够了解到互相的信息,然后才能够互加微信进行聊天。既然原理已经了解了,那么接下来就是用轮子的问题(PS:向日葵也是基于这个原理实现的)。

3.2 zerotier

这里使用zerotier实现内网穿透。

  1. 登录zerotier官网注册账号。

  2. 进入后台创建新一个虚拟局域网。在这里插入图片描述

  3. 进入虚拟局域网保存好网络ID。在这里插入图片描述

  4. Ubuntu安装zerotier的命令:sudo apt-get update ; sudo apt-get install curl ; curl -s https://install.zerotier.com | sudo bash。并加入局域网中:sudo zerotier-cli join 命令空格网络ID

  5. 轻薄本这边也安装zerotier软件。在这里插入图片描述

  6. 在网页中允许新设备加入局域网。在这里插入图片描述

  7. 最后,ifconfig查看zerotier地址,在MobaXterm上连接改地址即可。在这里插入图片描述

这样,通过内网穿透技术就实现了外网访问内网的服务器了,我的个人服务器也就搭建完成。

在这里插入图片描述

3. 总结

科技宅小明在视频中说,由于IPv4端口号不够用的问题,所以才产生NAT,又由于NAT都不够用的问题,所以产生大内网,即NAT套娃,所以家用路由器的IP可能还是大内网中的一个私有地址,整个大内网甚至覆盖整个小区,如果使用IPv6的话,这样的问题就不复存在了,因为IPv6地址多的用不完(地球上每一粒沙子都可以拥有一个IP),但是由于路由器的限制,导致很多还是只能用IPv4地址,这也就是我不得不通过各种方法实现服务器搭建的原因。
总的来说,这是一篇理论+操作的博客,嫌麻烦的同学可以直接略过理论部分,直接上手,大概率是不会出错的(可能几年后就不好说了)。希望对大家有所帮助,如果有疑惑或者文章部分不严谨的地方,还望批评指正。

参考链接

https://blog.csdn.net/qq_45488453/article/details/107783752
https://www.bilibili.com/video/BV1Qq4y1w7F5
https://blog.csdn.net/weixin_39824834/article/details/111534767
https://blog.csdn.net/qq_41057206/article/details/80534194
https://blog.csdn.net/weixin_40543283/article/details/84728299

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【学习笔记】Ubuntu双系统+搭建个人服务器 的相关文章

随机推荐

  • C++ 带通滤波

    Butterworth Filter Coefficients The following files are for a library of functions to calculate Butterworth filter coeff
  • python之collections

    collections是日常工作中的重点 高频模块 xff0c 包含了一些特殊的容器 xff0c 针对Python内置的容器 xff0c 例如list dict set和tuple xff0c 常用类型有 xff1a namedtuple
  • git 指定下载文件,目录

    1 创建路径 mkdir gitfile cd lt 路径 gt eg xff1a cd home gitfile 2 创建一个空的本地仓库 git init 3 连接远程仓库GitHub git remote add f origin l
  • Ubuntu v4l2 视屏流花屏问题

    之前用的好好解析YUV xff0c MJPEG 换了个核心板就不好使了 xff0c opencv3 4 6 gt gt gt opencv4 5 5 xff0c Mat xff0c cvMat xff0c IplImage 的类型转换也不好
  • qt qmake .qrc hasmodification time xxx in the future

    原因 xff1a 跨平台生成的 qrc 文件创建时间与目标平台时间不一致导致 xff0c 如win写的 copy 到 Linux xff0c 再编译可能会遇到该bug 导致无法qmake 与 build 解决 xff1a touch qrc
  • (转)python图像操作

    转自 xff1a zbxzc 侵删 使用PIL完成 python view plain copy span class hljs keyword import span Image span class hljs comment 打开图像
  • 关于input to reshape is a tensor 的问题

    span class hljs keyword for span index name span class hljs operator in span enumerate classes class path 61 cwd 43 name
  • mobileNet训练自己的样本

    span class hljs keyword import span matplotlib pyplot span class hljs keyword as span plt span class hljs keyword import
  • 关于屏幕适配之比例布局

    对于平板等需求场合 xff0c 它们的屏幕比例以16 xff1a 10和16 xff1a 9等为主 xff0c 但是屏幕尺寸各异 xff0c 分辨率各异 xff0c 即便是同一尺寸也有多种分辨率 xff0c 这种时候无论是使用dp还是px
  • 机器学习实战:ValueError: invalid literal for int() with base 10: '0.000000'

    在logistic回归一章中 xff0c 在将训练数据转换为int型时 xff0c 会出现日下报错 xff1a ValueError invalid literal for int with base 10 0 000000 只需将下面一句
  • cuda-8.0安装心得

    cuda 8 0安装 xff08 这两天不小心把原来的显卡驱动搞崩 xff0c 挣扎了好久 xff0c 只好重新走一遍 xff09 cuda 安装条件 gcc5 3 0 xff08 版本不能太高 xff09 sudo apt get ins
  • 在GPU刨过的坑

    这两天回学校这两天先是把自己的linux系统给强制删除了 xff0c 然后导致重启无法正常引导进入win xff0c 最后win也救不活了 xff0c 还不好重装系统 xff0c 各种文件损坏 xff0c 简单粗暴的翻车血泪史 捷径路上总是
  • [ArchLinux] 搜狗拼音输入法的安装

    配置源 在ArchlinuxCN源中有很多方便中国用户使用的包 xff0c 其中也包含了经常使用的搜狗拼音输入法 xff0c 于是我们需要先配置ArchlinuxCN源 xff0c 这样我们就可以使用自带的包管理器Pacman直接安装搜狗拼
  • [ArchLinux] 安装及KDE桌面环境安装配置

    ArchLinux 安装及KDE桌面环境安装配置 首先 xff0c 安装之前 xff0c 需要一个 启动介质 xff0c 我这里习惯使用USB设备作为启动介质 xff0c 这是由于ArchLinux滚动更新的特性 xff0c 而且占用空间很
  • 使用crontab执行定时任务时加flock独占锁防止进程堆积

    使用crontab执行定时任务 此处为每分钟执行一次 加flock独占锁防止进程堆积 注意给 var run 读写权限 xff0c 或者放到一个有读写权限的文件夹 span class token operator span span cl
  • macOs 安装liplpcap

    1 xff0c 下载liplpcap http www tcpdump org 1 在tcpdump网站下载libpcap的latest release 2 tar zxvf 3 configure make amp make instal
  • Android应用开发常用知识(4)

    Android string 中product的使用 Android的资源文件string xml会出现下面同名的字符串 xff1a lt string name 61 34 build type 34 product 61 34 tv 3
  • VR行业的发展现状和前景

    5G技术的应用推广 xff0c 加速推动虚拟现实不断发展和完善 xff0c VR产业迅速在各个领域和行业都得到广泛应用 xff0c 最好直观的感受就是知觉体验得到了良好的增强作用 本文的主要内容是简单概括VR技术的发展现状和发展前景 一 V
  • org.apache.ibatis.annotations不存在

    今天遇到了一个很有意思的bug 有人 xff08 还不止一个人 xff09 来问我 xff0c 为什么项目启动不了 xff0c 我说不可能啊 xff0c 我这不跑得好好的吗 xff0c 而且成功启动的也不止我一个啊 然后他就说 xff0c
  • 【学习笔记】Ubuntu双系统+搭建个人服务器

    Ubuntu双系统 43 搭建个人服务器 前言1 Ubuntu 43 Win双系统1 1 制作U盘启动盘1 2 系统分盘1 3 安装Ubuntu系统 2 搭建个人服务器2 1 设置root2 2 配置ssh2 3 向日葵连接 3 内网穿透3