OpenCPN-low-energy/Building a distribution
我们的 SUSE Studio 个人页面,您可以在这里找到我们所有的公共设备。
登录管理器史诗
为了这个发行版,我们需要一个非常轻量级的基底,为此我们选择了 openbox 桌面环境。目前,我们有两个分支的登录管理器,我们首先使用了 XDM,但遇到了很多配置问题。然后,我们尝试了 SLIM,又面临了其他问题。最终,Thibaud 使用了 lightDM,而 Thibault 使用了 XDM,两个版本都可以正常工作。我们还添加了一些程序,允许不具备太多 IT 知识的用户立即使用此发行版。为了增强用户体验,我们设置了一个壁纸和基本的主题,用于窗口和图标。
在修复了登录管理器中的许多讨厌的错误后,我们收到了一条略有不同的发行版指南:它必须易于任何人使用。因此,我们决定使用 LXDE 桌面环境,它完整、易于使用且轻量级。在自定义壁纸和主题后,我们达到了一个完全稳定的版本。一切都按我们的意图工作,但尚未实施任何节能增强功能。
节省能源的途径
- 能源配置文件(使用 pm-profiler 和 xfce 电源管理)
- 降低 CPU 频率(使用 cpupower)
- 停止多个 CPU
- 在可以的时候停止硬盘驱动器
- 降低屏幕亮度
安装程序问题
由于我们的发行版需要尽可能地消耗更少的电力,我们需要利用计算机的所有功能。而做到这一点的唯一方法是将发行版安装到硬盘上。
要将您的发行版安装到硬盘上,您需要 yast2-live-installer 包。您还可以添加 yast2_install_wf 模式。
开机脚本方式
SUSE Studio 允许我们在每次启动发行版时运行一个脚本,在这个脚本中,有可能在首次启动时运行您自己的代码。因此,我们尝试在这里执行 /sbin/yast2 live-installer,由于它没有向我们显示安装程序,我们四处挖掘并发现条件
if [ -f /etc/init.d/suse_studio_firstboot ]
总是为假,因为 suse_studio_firstboot 脚本会在我们的自定义启动脚本运行之前删除自身。
首次开机脚本方式
由于我们无法在之前的脚本中执行我们自己的命令,我们认为一个好主意是将我们的命令插入到 suse_studio_firstboot 脚本中。因此,我们设法将我们自己的代码行插入到首次启动脚本中。这是我们插入到 /etc/init.d/suse_studio_firstboot 文件中的代码
yast2 live-installer echo "Press a key to reboot the system, don't forget to remove your installation media." read reboot
我们遇到了另一个问题,发行版进入了循环重启,这与下面的代码不符,因为 read 指令在重启之前会等待输入。
上述解决方案利用了自动执行的优势。由于我们的实验没有得出结论,我们尝试了另一种方法。
快捷方式
此解决方案不由系统本身执行,但需要用户的交互,这样我们就拥有一个 live CD iso 文件,它充当真正的 live CD,并具有可安装的优势。因此,我们创建了一个文件 install.desktop
[Desktop Entry] X-SuSE-translate=true GenericName=Install the system on hard drive Type=Application Categories=Settings;System;X-SuSE-Core-System;X-SuSE-ControlCenter-System; Name=Install on hard drive Icon=yast GenericName=Install Exec=/usr/bin/xdg-su -c '/sbin/yast2 live-installer' Encoding=UTF-8 Comment=Install the system on hard drive
这会在桌面上创建一个图标
此时,live 安装程序启动成功,但在一段时间后崩溃,并显示以下输出
terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid YaST got signal 6 at YCP file String.ycp:191 /sbin/yast2: line 431: 6415 Aborted $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS
我们通过在 SUSE Studio 的配置选项卡中将默认语言从 POSIX 更改为 英语(美国) 来解决此问题。这会在您选择语言(首次启动)时触发一个警报窗口,提示系统无法读取首选项。
安装程序故事的结尾
此时,我们拥有一个完美运行的 live 安装程序(使用快捷方式技巧)。这涉及我们发行版的 0.1.2 版本和最新版本。遗憾的是,yast 无法删除“tux”用户。经过一些搜索,我们发现了一种方法可以在安装后执行我们自己的脚本,yast 将在安装结束时执行文件 /usr/bin/correct_live_install 中的脚本。您可以在 此处 找到该脚本。它负责在安装过程中创建了另一个用户的情况下删除 live tux 用户。如果用户选择创建 tux 用户,我们将升级他的主文件夹并删除安装图标。
测量
我们进行了一些测量,以查看我们的发行版是否朝着正确的方向发展,以实现功耗。
您可以看到我们的发行版消耗的电量略低于 Thibault 的笔记本电脑。比较的测量结果在图形会话中运行了 2 分钟,仅系统在工作(以及 Virtualhub 用于测量)。未对操作系统进行任何修改。您可以在 此处 找到原始结果。
我们还运行了 powertop,以确定哪个进程消耗了什么。您可以在 此处 找到完整的 powertop 报告。
文件
您可以在 此处 找到我们用于发行版的文件。
测量方法变更
当 VirtualHub 的影响开始影响我们的结果时 我们选择更改测量方法。
