在笔记本上搭建高性价比的inux学习环境:基础篇腾讯云开发者社区

相信我的读者中不论是学生党还是已经工作的朋友,一定有憧憬 Linux ,但是迫于使用习惯、工作需求,而一直在使用 Windows 或 MacOS 的情况。

其中不少的朋友,应该也并不是完全没有碰过 Linux,甚至日常中可能会选择使用“多系统引导”、“虚拟机”、“远程云服务器”等方式来体验 Linux,而多过为 Linux 准备一台专用的本地的物理机,用 “裸金属 (Bare Metal)” 的方式运行系统。

既然有如此多的方式来运行 Linux,那么使用“裸金属”的方式来安装和使用 Linux,好处有哪些呢?

想知道使用“裸金属”方式安装 Linux 的好处,自然要知道其他方式的不足。

先来聊聊犹如 “轮班制” 的“多系统引导”。 倘若你使用切换“多系统引导”的方式来在同一台设备运行 Linux,虽然一时半刻看上去没有什么问题,系统运行互不干扰。但是随着你深度使用系统,你很快会发现想同时使用相同设备上的操作系统是不可能的事情,为了让两个系统中的数据进行共享,你也需要额外付出一些努力,并且这个方式的可靠性或许并不是那么好。

加上多个操作系统共享一块磁盘,即使磁盘再大,你也终究会遇到需要对某一个操作系统“动刀”,为其他操作系统腾空间的需求。并且,在漫长的使用过程中,操作系统的升级过程中可能包含了升级引导程序,而引导程序的变更,可能会让你的 Linux 或者其他的操作系统无法正常启动,为了修复这个问题,你不得不投入更多的精力在原本不需要投入的地方,类似这样复杂的“折腾一通”[1]。

虚拟化让多个系统和应用以“合租”模式运行

接下来,我们来聊聊类似“合租房共用资源模式”的“虚拟机”方案。 使用虚拟机,确实是解决了同时使用不同操作系统的问题,而且时至今日,几乎所有的 CPU 都支持虚拟化技术(Intel-VT、AMD-V 等),设备执行虚拟化的效率并不低。但毕竟要多个系统实时共享 CPU 资源,如果你在宿主机或者虚拟机中持续使用超高 CPU 占用率的程序,设备的用户体验会变的很糟糕,你会得到一个明显卡顿的界面。

而且,虚拟机方案除了和上面“多系统引导”一样,同样存储磁盘共享之外,更会实时共享设备所有的内存空间,如果宿主系统本身就费内存,那么虚拟机便无法充分利用设备性能,如果强行给虚拟机分配了太多内存资源,宿主系统要么无法开启更多的程序,要么选择疯狂进行内存和硬盘的交换,前者损失了系统的功能性,后者如果出现过多的硬盘 IO 占用,系统的流畅体验也会打折扣,甚至极端的时候,虚拟机中的程序会因为 IO 被打满,而出现 Crash 。

当然,以上两种方式的目的都是为了充分利用硬件资源,以及践行“省钱”最大化,在轻度资源使用率范围内,体验还是 OK 的。

但是,工欲善其事,必先利其器。如果我们想深入的使用 Linux,使用凑合的方式其实并不是一个好的选择,因为会在效率和体验上做出非常多的让步和牺牲。

所以,也有一些同学就会选择使用“云主机”、“远程服务器”的方式来玩 Linux。但倘若我们计算一下成本,便会发现使用本地设备安装 Linux 会远比云端服务器的体验和性能香不少。

不妨先来算一笔账。

以撰写本文所使用的设备,一台不带显卡的普通笔记本为例,一台搭载了第一代 AMD Ryzen 7 PRO 4750[2] 的 ThinkPad(21年购买 4500,今年购买二手 2800,没错,我买了两台)。

这台设备 CPU 有 8 颗核心,因为超线程的缘故,所以一共有 16 颗虚拟核心可用。CPU 时钟在 1.7 GHz~4.1 GHz 范围工作,L3 Cache 高达 8MB。为了让它能跑的更欢脱,我曾花了一千多买了两根 32GB 的内存条,以及花了几百块买了一块 1T 的国产 SSD 安了上去。设备默认有一个千兆的网口,以及支持 Wi-Fi 6。抽象来看,这台设备有 16 个可用的 CPU vCores,能够在 4.1GHz 高频下工作,64GB 内存,1T 存储,默认支持千兆网络。 如果是全新的设备,算上内存和硬盘 21 年的总成本在 6700 块左右,如果我们选择使用老设备替换下来的 SSD 和内存条,那么成本可以降低到 5000 块左右,当然,如果是在今年使用这个设备,即使你同样选择装满 1T SSD 和 64GB 内存,总成本也不会超过 5000 块。关于稳定性和个人使用经验,我在这篇文章里有提[3],就不再赘述啦。

如果我们不选择本地设备,而是选择云服务器的话,以我曾经工作过的某国内头部云服务商为例:

和 16c64g 云服务器做比较

在不考虑网络成本的情况下(使用免费的 1Mbps),选择一台 16 核心 64GB 1TB硬盘的、主频相对高的云服务器(主频3.3~3.8GHz),一年的综合成本在 2 万块左右。大概是使用本地设备成本的 3 倍 ~ 4倍。

和 16c16g 云服务器做比较(高密度合租)

如果购买资源远小于本地物理机的 16 核心 16GB 的普通、低主频云服务器,那么一台服务器一年成本则要 1万1千块起步。差不多接近我们本地设备成本的两倍。

和 16c16g 云服务器做比较(高密度合租)

即使选择购买资源远小于本地物理机的 16 核心 16GB 的“突发性能实例”(不能长时间满载使用),依旧在不考虑网络成本的情况下(使用免费的 1Mbps),一年的费用也要 6300 块。和上文中本地设备最贵的成本计算方式也是差不多的。

所以,在个人学习场景下,如果不是需要几十核心,上百 GB 的模型训练、数据并行处理场景,使用云服务器是不如使用本地设备划算的。

并且,因为是本地设备,不论是直接用该设备的键盘进行交互,还是在局域网中使用 SSH 连接设备使用,都能够获得忽略不计的延时,这也是远程服务器带来不了的体验优势。

好啦,聊了这么多的 Linux 在本地设备安装的好处,回归正题,哪一种 Linux 发行版适合我们做为学习环境呢?

众所周知,Linux 有许多不同的发行版,Ubuntu、Debian、Rocky、Mint、RHEL、SUSE、Fedora、Arch、Gentoo 等,那么我们选择哪一个发行版会更省心呢?

显然是选择使用人数最多的那个。

毋庸置疑,Ubuntu 是当今世界上最流行的 Linux 发行版[4],不论是 IoT 领域[5]、Kubernetes 和容器相关领域[6]、私有云 OpenStack 领域[7],Ubuntu 都有大量的社区积累,甚至在一些公有云和虚拟化场景下,还有专用的 HWE 内核[8]提供。尤其是 Ubuntu 有着极其稳定的 LTS 发布机制,能够在开源的形式下提供非常稳定的“承诺”。

关于 Ubuntu LTS 和各版本生命周期

接下来,让我们来一起看看如何在笔记本上搭建 Linux 学习环境。

安装 Ubuntu 22.04 一般分三步:下载镜像,制作启动盘,安装系统。

当然,如果你已经是 Ubuntu 的用户,但是软件还未升级到 Ubuntu 22.04 ,可以参考我4月份写的一篇文章《抢先体验 Ubuntu 22.04 Jammy Jellyfish》[9],来完成系统的升级,并跳过这个小节关于安装的部分。

首先访问 Ubuntu 官方网站,下载所需要的系统版本:

一般情况下,我会选择服务器版本,但是在笔记本设备上,我通畅会选择桌面版操作系统。最核心的原因是,能够更好的控制屏幕休眠,支持我们在不合上笔记本屏幕的时候,获得更好的体验:让我们既享受良好散热、高性能模式的 CPU,还能附带一个可以直接用于调试的屏幕,同时,桌面版的操作系统,也能够自动的安装完毕所有笔记本必要的硬件驱动(包含非开源的厂商驱动)。

经过多次测试,目前 Ubuntu 22.04 针对我手头的 AMD Zen2 (4750u)和 AMD Zen3(5800H)都有着非常好的支持。以及最近官方应该是增加了 Snap 的 CDN,在安装 Snap 软件的时候,速度也有了极大的提升。

访问 Balena Etcher 官网,下载软件

使用 Balena Etcher 制作安装盘

下载完毕软件之后,打开软件,选择我们下载好的系统镜像,以及要制作成安装盘的 U 盘,点击“制作”按钮,稍等片刻,安装盘就制作完成啦。

安装 Ubuntu 步骤 1-3

将引导盘插到要安装系统的设备上,然后使用引导 U 盘来启动系统,可以看到熟悉的 Ubuntu Logo ,等待安装程序加载完毕之后,我们就能够看到安装引导界面了。选择 “Install Ubuntu”,一路下一步,在安装系统的过程中,会看到是否要安装额外驱动的选项,如果你拿不准,可以一并钩上,节约未来折腾的时间。

安装 Ubuntu 步骤 4-6

当基础信息都填写完毕之后,安装程序会询问我们是否要保留硬盘原始数据和操作系统,因为我的设备只运行 Ubuntu,所以我这里选择完全删除系统。在一路 Next 之后,就是自动安装过程了,根据网络的不同,安装时间会有几分钟到十几分钟到差别。在一切就绪之后,重启系统,我们就能够看到久违的系统界面啦。

当然,如果你觉得你下载或者更新软件的速度有些慢,可以考虑执行命令替换软件所使用的软件下载源头,我个人比较喜欢替换云主机之外场景的源为“清华源”,然后再执行上面的命令:

等待软件和系统补丁更新完毕之后,执行重启操作,让补丁生效即可(首次更新,会更新内核)。

不论是选择桌面版操作系统,还是选择服务端操作系统,默认情况下系统中不会包含 openssh-server 这个组件,如果你和我一样,有从局域网其他设备访问这台 Linux 设备的需求,可以先执行下面的命令,来安装它。

当程序安装完毕之后,我们执行 ssh username@host-ip 就可以直接访问到这台 Linux “服务器”啦。如果你要登录 Linux 使用的设备的用户名和 Linux 允许登录的用户名一致,那么可以省略 “username”。

作为一个懒人,我们不会希望每次 ssh 连接这台设备,都需要输入密码吧(尤其是你的密码可能比较复杂的时候):

使用 CTRL+D 登出系统,然后再次执行 ssh 10.11.12.240 ,我们就可以不需要输入密码,就能够登录这台设备啦。(仅限我们当前使用的机器)

使用 vi 或者你喜欢的编辑器,打开 ~/.ssh/config ,然后在其中添加类似下面的配置内容:

当我们 ssh 到设备中,或者打开设备的终端后,想要执行软件安全或者获取更新的软件信息的时候,会发现一段时间内使用 sudo 命令,会触发输入密码的条件限制:

想要解决这个问题,可以通过修改系统的 sudoers 文件:

不过更推荐的方式是,在 sudoers.d 目录中,创建一个新的用户规则,而不是调整可能随着系统升级,而非覆盖或者恢复默认值的系统文件:

执行完毕命令之后,我们使用 CTRL+D 登出会话,然后再次执行 ssh xiaohei 登录设备,接着随便执行任何需要 sudo “加持”的命令,会发现命令就都可以在不输入密码的情况下顺畅执行啦。

关于日常使用的 SHELL,我推荐使用时间节约大师 ZSH 和开源软件 OH-MY-ZSH,关于它的神奇之处,网上有很多介绍,我在此也就不再赘述了。

但是在安装 OH-MY-ZSH 之前,我们首先需要安装 zsh 和 git:

在 OH-MY-ZSH 官网中,软件的安装文档非常简单[11]:

如果你的网络不能够直接下载安装 ZSH,可以考虑使用“清华源”中的 “OH-MY-ZSH”[12] 来解决问题。

安装过程中,软件会询问你是否要将 zsh 设置为默认 “SHELL”,大家可以根据自己情况来选择。在完成 OH-MY-ZSH 的安装之后,就可以参考网上各种攻略进一步进行定制化,来提升效率和终端的颜值啦。

这里,我推荐一款自动补全类型的提示插件,相比较完全的自动补全,这款插件能够在你敲已输入的命令的时候,用提示的方式告诉你,你曾经输入过的命令是什么:

在完成插件下载之后,我们需要修改 ~/.zshrc 将配置文件中的 plugins=(git) 替换为下面的内容:

依旧是使用 CTRL+D终结会话,然后重新 ssh 到设备上。当我们随便敲一个命令之后,就能够看到命令行中的提示补全啦。

拥有命令行补全提示的 ZSH

为了能够敲更少的命令,来获取更多的信息,有几个不错的调试工具非常值得我们安装。

能够在一个界面内尽可能多的看到系统基本状况

第一个工具,是来自一位法国开发者的系统监控工具 glances[13] ,能够在一个简洁的界面中查看到当前系统的负载、网络、IO 读写、硬件温度、进程详情等信息。

如果你追求更小巧一些的工具,传统的老牌神器 htop[14] 自然是不遑多让的,你甚至可以在 htop 中快速的设置每一个进程所能使用的资源最大值,来避免某个进程过分自私,用完整台设备的资源。

由于我们免不了在服务器上直接使用 vi 之类的命令来修修改改,所以这里为了省事,建议安装 vim 来替代 vi;当前,因为我们可能会处理不少 JSON 相关的数据,安装 jq 命令,也是必要的:

当然,在设备上运行一些需要保持后台运行的程序也是免不了的,这时我们可以考虑安装并使用老牌的 tmux 或者 screen:

在 Ubuntu 22.04 中,虽然 Docker 的安装总体流程变化不大,但是在 Docker 官方文档中[15],能够看到安装过程得到了进一步简化。

第一步,清理老版本的软件。

第二步,安装所需工具依赖。

第三步,下载软件包签名使用的 GPG 密钥,并配置系统信任该密钥。

如果你无法访问官方地址,可以将密钥下载地址替换为下面的地址。

第四步,创建一个适合于当前 CPU 架构和系统版本的软件源。

同样的,如果你希望能够更快的下载到软件,可以配置软件源来替换官方地址。

最后一步,就是安装 Docker 的社区版,以及我们常用的 CLI 命令啦(包括 compose)。

默认情况下,我们使用非 docker 用户执行 docker 命令,会得到类似下面的错误提示。

解决这个问题的方案也很简单,将我们当前的用户加入 docker 用户组即可:

执行完毕命令,我们将会看到类似 Adding user soulteary to group docker 的提示信息。然后我们查看 docker 的用户组中是否包含我们的用户:

当命令执行完毕之后,我们将能够看到类似下面的信息:

在确认用户已经添加到 docker 用户组中之后,接着依旧是需要执行 CTRL+D 登出会话,并使用 ssh 重新登录系统。

有的时候,我们拉取 docker 官方镜像会十分的慢,甚至会卡顿中断,这个时候,可以考虑为 Docker 配置一些容器镜像。

执行下面的命令,重启服务:

然后使用 docker info 确认配置是否生效即可:

或许你也经常会使用 Docker 创建一些带有自定义网络接口的容器。为了让容器分配 IP 地址范围更确定,从而能够减少一些不必要的网络转发时因为 IP 冲突导致的网络不通的问题,我们需要指定容器子网地址。

其实解决这个问题的方法也很简单,我们可以通过下面的脚本,来完成“先读取原始配置内容”并序列化成 JSON,然后“将原始配置内容和我们要追加的网络内容进行合并”,最后“将修改后的内容保存至原来文件位置”:

再次使用 docker info 确认配置是否生效:

在上一篇文章《轻量小巧的零配置 APT 加速工具:APT Proxy》[16]中,我提到了我做了一个简单的小工具,用来加速需要重复下载的 APT 软件包。

在未来学习 Linux 的过程中,或者我们折腾 CI/CD 的过程中,你会发现我们经常需要不停的构建镜像,出于有的镜像 Dockerfile 追求最少指令的原因,在构建镜像中,会不停的从互联网拉取 APT 软件包。而从互联网下载软件包,其实是非常慢的一件事。

使用 APT Proxy 缓存的数据

当我们需要重复下载数据的时候,软件便会将缓存递给我们,从而大幅减少 apt update、apt-get install 等命令所需要的时间。

当文件创建完毕之后,先使用 docker compose up -d 将程序使用容器的方式启动起来。

接下来,只要在我们需要使用缓存服务的容器或者局域网的主机里,使用类似下面的命令来执行 apt update 和 apt install 就能够愉悦的享受快速安装的便利啦:

完整的例子,可以参考这里[17]。如果你想了解更多的细节,可以访问 APT Proxy 的 GitHub 开源仓库[18]。

碍于篇幅太长不好发布,于是只好在接下来的几篇内容中,陆续将“基础知识”讲完啦。希望上面的内容,对于正在学习 Linux 或者准备进入 Linux 世界的你有帮助。

THE END
0.电脑主机加显示器多少钱合适?电脑主机加显示器多少钱合适?举报 5人讨论1433次围观 关注问题 写回答 讨论回答 (5) 丹石夏之 配置清单如下:CPU 300元,主板 150元,内存 300元,固态硬盘 50元,显卡 500元,显示器 600元,总价1900元。另外,电源和机箱免费赠送。 有用(0) 回复 浩渺静枫1 看你预算多少了,三千多能买到入门的,五千左右jvzquC41ycv/|xq0eqs/ew4cum5ya<5;75;457mvon
1.撒哈拉主机多少钱超威撒哈拉撒哈拉主机的价格区间挺宽泛的,从经济型的小型服务器到专业级的工作站都有涵盖。你可以根据自己的预算和jvzquC41cuq/|xq0eqs/ew4s13<17<>40jznn
2.济南网站推广每年多少钱合适只有明确了目标和定位、选择合适的域名与主机、制定合适的网站设计方案、进行专业的网站开发与建设、优化网站内容与功能、进行全面的测试与上线、进行有效的推广与运营以及关注数据分析与用户反馈等关键环节,才能打造出一个专业、高效、用户友好的网站,为企业的发展提供有力支持。jvzq<84lkigo0lto0et0{xzjwc576:>0jvsm
3.阿里云租赁多少钱合适电脑使用标签近年来,阿里云主机在云计算市场上的份额不断提高,成为了许多企业和个人的选择。但是,对于初学者来说,如何选择合适的阿里云主机价格一直是一个难题。本文将详细介绍阿里云主机的价格范围,帮助您了解一台电脑合适的阿里云主机价格。要点阿里云主机价 网站编辑 2025-03-02 12:23:51 147 阿里云显卡租赁多少钱合适一个jvzquC41yy}/2;80ep5ucpx188>4694
4.平面设计培训班费用多少钱合适平面设计培训班费用多少钱合适 同城帮信息发布直接在本信息底部留言或点底部阅读原文发布 我们每天都会发布一些便民信息,如果您需要卖房、购房、招聘、求职、开业等,请在梁平信息网公众微信号历史消息中,就可以查到相关信息哟。便民信息刊登,请加小编微信(6324955) 成功缴费的,将在梁平信息网微信同城帮顶部持续推送!jvzq<84yyy4tj|klf0tfv8>690nuou
5.电脑主机和液晶显示器能不能邮寄?多少钱?邮寄显示器大概多少钱文章详细讲述了电脑主机、显示器等IT设备的邮寄费用,包括顺丰快递、普通快递和EMS的价格计算,以及省内和省外、不同重量和地区的收费标准。建议根据目的地和重量选择合适的快递服务。 电脑主机和液晶显示器可以邮寄吗? 用大写字母表示要多少钱? 东海岸会便宜一些。 浙江省内几家快递公司均收费10元。 正如你所说,一台主机和一台显示 jvzquC41dnuh0lxfp0tfv8|gkzooa=<27;9838ftvkimg8igvcomu86589893>;