如何构建一个自定义发行版来运行简单的 Web 浏览器?

如何构建一个自定义发行版来运行简单的 Web 浏览器?

我们正在组装一些轻型机器,其明确目的是在大屏幕上显示单个网页。我需要机器本质上尽可能轻量且尽可能快地启动,并本质上让它全屏运行浏览器(WebKit?),加载一个由 JavaScript 动态控制的页面。我将使用带有集成 GPU 的 Intel D525 双核处理器,因此我不需要设置任何专有的图形驱动程序。一旦我正确设置其中一台机器,我应该能够将dd硬盘驱动器安装到我的计算机上,然后将其转储到每台新机器上。

我有以下问题:

  1. 如何创建一个仅包含我需要的“发行版”?我想我需要内核 (;])、X 和某种网络浏览器,但除此之外不需要太多。我可以采用像 Ubuntu Server 这样的东西,只需安装 X Server 并找到一种方法让机器自动登录、启动 X 并启动 Web 浏览器,而不询问任何问题吗?有什么我可以读的书或文章之类的吗?

  2. 我可以用什么来创建一个漂亮的、精简的、本质上运行“chromeless Chromium”的网络浏览器?这些机器根本不会接受用户输入。如果我需要管理它们,我将使用 SSH。

答案1

许多发行版都有一些用于最小安装的工具;本质上,您只手动选择那些您明确希望安装的软件包。 Debian 具有这种能力,并且在您的情况下,与其他明显的最小竞争者 Arch Linux 相比,Debian 会是更好的选择。

Arch 的滚动发布状态可能会提供您希望避免的持续复杂性。 Debian 将提供您正在寻找的简单、最小的基础,并提供稳定性。有一篇关于使用的博客文章Debian 作为信息亭这可能会提供一些有用的提示。

对于浏览器来说,如beav_35建议,乌兹布尔是一个不错的选择。我的建议是Vim可能,一个可编写脚本、键盘驱动并可通过 SSH 进行有效控制的 WebKit 浏览器。

作为窗口管理器,我会推荐数据管理: SLOC 不到 2000,非常轻巧,可以轻松配置为自助服务终端类型设置。

答案2

首先,您可能不想重新发明轮子......有几个以信息亭为中心的发行版。其中之一可能会为您节省大量工作。

其次,如果您熟悉 Fedora 和 RHEL(或 CentOS 或 Scientific Linux)上的 Kickstart,您可以使用 Fedora 工具来制作您自己的任何这些发行版。文档有点分散,但是从这里开始

答案3

从最小的发行版开始,例如架构Linux,然后安装您需要的软件包。对于简单的网络浏览器,请尝试乌兹布尔

答案4

Buildroot 2016.05 + Midori

构建根是构建最小发行版的绝佳工具:

  • 你给它一个.config文件
  • 它下载并编译所有必需的软件和依赖项,并生成图像

绿简约的网络工具包基于浏览器,并且 Buildroot 有一个内置的 Midori 包。

.config使用的文件:https://github.com/cirosantilli/buildroot-configs/blob/32d1174e0bf8d00b92323eebe8901af3f8c389d3/2016.05/qemu_x86_64_x11_midori_defconfig

如何生成该配置文件:

  1. 跟随:如何在我自己的Linux Buildroot系统上安装X11? | Unix 和 Linux 堆栈交换使用 X11 创建图像。
  2. make menuconfig
    1. 工具链
      1. C库
        1. glibc(用于 midori)
    2. 目标包
      1. 图形库和应用程序
        1. mesa3d
          1. 选择所有 Gallium 和 DRI 驱动程序,因为我不明白需要哪一个(对于 OpenGL EGL)
          2. OpenGL EGL(用于 libgtk3)
      2. 图书馆
        1. 图形1.libgtk3(用于midori)

清理构建,因为我们更改了工具链并再次构建:

rm -rf output
make BR2_JLEVEL=$(nproc)

等待几个小时。然后就是平常的:

qemu-system-x86_64 \
    -enable-kvm \
    -M pc \
    -m 512 \
    -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext2,if=virtio,format=raw \
    -append root=/dev/vda \
    -net nic,model=virtio \
    -net user

从 QEMU 内部:

root
startx

从 X11 GUI 单击一个xterm窗口并运行:

midori

结果:

在此输入图像描述

图片大小:220M!与裸 X11 系统的 28M 进行比较如何在我自己的Linux Buildroot系统上安装X11? - Unix 和 Linux 堆栈交换。可能是因为 WebKit + GTK3 依赖性。

在 Ubuntu 16.04 主机、QEMU 2.5.0 上测试。

网上冲浪

用SDL编写,支持fbdev:http://www.netsurf-browser.org/about/screenshots/#framebuffer

fbdev 是 Linux 内核模块提供的较低层接口,不通过 X11(我认为 X11 可以选择将其用作后端)。基本上,您只需写入内存即可将其显示在屏幕上。

要在 Ubuntu 上使用 fbdev,您必须使用 TTY(例如 Ctrl + Alt + F1)。

所以你可能可以通过图像逃脱方式比 Midori 还小。

Buildroot 2016.05 有一个包netsurf-buildsystem应该提供它,但我还没有测试。如果有人设法让它运行,请编辑 .config、屏幕截图和图像大小的链接。

相关内容