![最小系统服务(单元)和默认目标](https://linux22.com/image/1024703/%E6%9C%80%E5%B0%8F%E7%B3%BB%E7%BB%9F%E6%9C%8D%E5%8A%A1%EF%BC%88%E5%8D%95%E5%85%83%EF%BC%89%E5%92%8C%E9%BB%98%E8%AE%A4%E7%9B%AE%E6%A0%87.png)
请原谅我的问题可能有点幼稚。我从事 Windows 开发和 IT 管理工作 30 多年,但很少使用 Linux。我有一台老款笔记本电脑,只有 4GB 内存和 4 核 @ 2.53Ghz... 我最初在 14 年前安装了 Ubuntu,它一直很稳定,我一直跟进发行版升级,从 v19 开始,我注意到性能和稳定性受到了影响。目前是 21.04 GNOME 3.38.5/X11
我并不经常使用它,只是用 VSCode 进行应用程序开发。我不需要任何花哨的东西,例如(Web Srvr、邮件、打印等)...所以...我一直在阅读有关启动顺序的信息,并查看目标以及单元在启动过程中如何启动,因为我看到正在运行我不需要的进程,例如电子邮件和日历等,以及大量的 gnome 进程。我正试图将其精简为最小的图形用户界面。
查看 graphic.target 时,它显示需要 multi-user.target。必须这样吗?该目标充满了依赖项。我只有一个用户,不需要切换用户。我不想从最小系统安装 CD 重新安装。我的开发环境已设置。
减少我的开销和删除我不需要的服务/设备的最佳方法是什么?
答案1
查看 graphic.target 时,它显示需要 multi-user.target。必须这样吗?
是的,这是 Linux 的核心功能。systemd 是这样实现的:
$ ls -al /lib/systemd/system/runlevel*
/lib/systemd/system/runlevel0.target -> poweroff.target
/lib/systemd/system/runlevel1.target -> rescue.target
/lib/systemd/system/runlevel2.target -> multi-user.target
/lib/systemd/system/runlevel3.target -> multi-user.target
/lib/systemd/system/runlevel4.target -> multi-user.target
/lib/systemd/system/runlevel5.target -> graphical.target
/lib/systemd/system/runlevel6.target -> reboot.target
目标是针对分组单元的,不会占用启动过程的时间。目标也与正在运行的系统无关。这些目标也不会影响性能。服务会影响启动速度;因此这些目标会增加进入桌面所需的时间。
以“.target”结尾的单元配置文件编码了有关 systemd 目标单元的信息,用于对单元进行分组以及作为启动期间的已知同步点。
- 单个用户目标 = 救援。目标 = 救援模式。
- multi-user.target 是设置多用户和控制台访问的非图形部分。基本上是“服务器”版本
- graphic.target 是桌面。
如果没有它,那就不是 Linux :)
我只有一个用户,无需切换用户
您的机器只有 1 个实际用户,但您的系统上却有很多用户 ;) 但同样:这与性能或改进性能无关。除非使用,否则所有这些都处于休眠状态。
现在来讨论主要问题。
减少我的开销和删除我不需要的服务/设备的最佳方法是什么?
- 在命令行上查看
top
性能、功耗、CPU 使用率等,看看是否有任何突出的内容。htop
(需要安装)以获得相同信息的良好布局。 - 删除第三方驱动程序或打开显卡的省电模式
- 删除不需要的活动服务
- 清除孤立库
deborphan
列出所有活动服务:
systemctl list-units --type=service --state=activ
并停止服务:
sudo systemctl disable {service}
但这将会保留已安装的软件。
我看到了正在运行的不需要的进程,比如电子邮件和日历等,以及一大堆 gnome 进程
每个都会有一个包名。从“软件”中删除您不需要的软件,服务也会被删除。不过,删除它们都不会提高速度或性能:不使用时对性能的影响接近于零。所有这些都与桌面管理器绑定并使用相同的服务;如果不删除桌面管理器,您就无法删除那个。
仅配备 4Gb 内存和 4 核 @ 2.53Ghz
考虑使用要求较少的版本;例如 Xubuntu 或 Lubuntu。
我不想从最小系统安装 CD 重新安装。我的开发环境已设置。
因此,请准备好您的设置以承受重新安装。将您所做的所有更改放在一个文本文件中,以便您可以在安装后执行它。将所有个人文件放在单独的分区上,以便您可以在安装期间挂载它。使用源代码中的软件,以便您可以将其安装在该分区上。在您的文本文件中放置一个符号链接,使其连接到 /bin 或 /usr/bin 中的二进制文件。这需要付出努力,但您只需这样做一次。