我在不同的教科书中读到,Linux 是轻量级的(例如,它可以装在 1.4MB 的软盘上)。那么为什么从 Ubuntu 或 Fedora CD 下载的文件大小或更大呢?
设备驱动程序是否扩展了内核?例如:如果我有新硬件并且安装了设备驱动程序,我的内核代码是否会得到扩展,或者驱动程序是否作为服务安装以供内核使用?
当使用 Ubuntu 等 LiveCD 时,系统启动时,操作系统的所有 700MB 是否都会加载到 RAM 中,还是仅加载其中的一部分?
我问这些问题是因为我觉得它们是常见的初学者问题,并且我认为将它们全部集中在一个地方会很好。
答案1
在软盘上安装一个极其小型的 Linux 系统几乎是不可能的。 (这里举几个例子;请注意,其中许多文件跨越多个软盘。)只有 1.44MB,没有足够的空间容纳任何应用程序;我认为您可以获得一个简约的命令行,无需运行任何有趣的命令。
作为更现实的小型系统的示例,我的家庭路由器运行 Linux。整个磁盘映像(内核加程序)大小为 4MB(事实上,我认为接近 2.8MB)。这是一个专用系统,具有旧的内核版本,只有该特定设备所需的驱动程序,并且没有很多程序 - 主要是网络管理工具,包括一个小型 Web 服务器、一个 SSH 客户端和服务器、一个 shell。
像 Ubuntu 或 Fedora 这样的发行版附带了数千个程序。其中一些程序本身就占用数十MB。其中一些程序文档需要几十MB。只是所有外围设备、网络协议和其他部分的设备驱动程序核心现在大约需要 100MB — 有很多不同的设备可以连接到一台 PC。
对于带有 GUI 和 Web 浏览器的基本系统,您将需要几百 MB。对于具有完整桌面环境、文字处理器等的更完整的系统,需要几个 GB。如果您开始为每个程序提供多种替代方案(Gnome 和 KDE、Firefox 和 Chrome 等),那就没有极限了。
如果您想与 Windows 的大小进行比较,请记住 Linux 发行版包含的内容远多于 Windows:Ubuntu 和 Fedora 等发行版附带了许多您需要在 Windows 上单独安装的应用程序。
答案2
“Linux”实际上只是一个内核。您可以编译自己的版本来自定义它,或者使用发行版预编译的版本。内核运行计算机并为应用程序和工具提供环境。因此,如果您想实际使用内核做任何事情,您就需要应用程序。 Ubuntu 和 Fedora 等发行版不仅提供内核,还提供应用程序和工具。由于 Linux 是 UNIX 的实现,因此提供了许多传统的 UNIX 实用程序。
设备驱动程序随内核一起分发。可以将模块作为内核的一部分包含进来,或者让它们作为单独的文件存在。通常它们被编译为模块 - 它在概念上与 Windows DLL 的运行方式大致相似。这样,您就不需要在 RAM 中使用巨大的内核来内置每个设备驱动程序,并且内核可以在各种环境中工作。
内核在启动时加载到 RAM 中并保留在那里。应用程序在您使用时加载,并在终止时释放内存。模块在插入时加载,通常是在检测到硬件或使用某些操作系统设施时。模块也可以被移除或卸载。
答案3
1 - 基础系统可能适合。 CD 版本(如 ubuntu 或 fedora)不仅仅包含系统,例如您应该使用的一些程序(Firefox、Gnome、Banshee 等...)以及可能的一些媒体编解码器。
2 - 大多数驱动程序都是捆绑的,并以内核模块的形式运行,但非关键的专有驱动程序没有捆绑,只有开源驱动程序。如果您没有自定义内核,那么基本使用所需的所有驱动程序都应该存在,但专有驱动程序可能会为您提供更好的性能。
3 - 否,仅加载所需的内容。内核映像/模块以及正在使用的进程(如 xorg/systemd 等...)
答案4
正如 Claudiop 和 ultrasawblade 告诉你的,有一个很小的内核,可以定制得更小,然后有一些工具,通常出现在类 UNIX 系统上,还有像办公、浏览器、多媒体软件、游戏等庞大的应用程序上,图形用户界面占用更多空间。
十年前我还真有过这样一个软盘上的Linux,它的名字叫汤姆斯RTBT可以安装在一张 1.4 MB 的经典软盘上,但对其进行了重新格式化,包含 1.7 MB 的内核,这意味着设备驱动程序非常少,工具非常少,外壳非常有限,没有 GUI,没有这样的。如果你真的感兴趣的话也许你会找到它。
大多数驱动程序都是内核的一部分。对于新硬件 - 要么您的内核已经包含驱动程序,要么存在可以工作的通用驱动程序(鼠标、硬盘驱动器、键盘...)。有些驱动程序是客户端空间程序(例如打印:CUPS)。您无需在网络上搜索新驱动程序或访问供应商页面。可能会有罕见的例外。
是的,整个 CD 被加载到 RAM,充当伪 HDD。