RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 841044
Accepted
Alex Nem
Alex Nem
Asked:2020-06-12 19:57:17 +0000 UTC2020-06-12 19:57:17 +0000 UTC 2020-06-12 19:57:17 +0000 UTC

从最基础的 Linux(编译、安装内核等)开始

  • 772

我一生都在使用 Windows,突然间我想了解一点 Linux。我想从非常非常基础的角度来处理这整个事情,但是我觉得没有足够的理解和理论知识和想法。有许多问题,在我看来,这些问题的答案可以填补我对 Linux 是什么以及它是什么的理解中的一些空白。所以:

  • 我是否正确理解有一个单一且独特的 Linux 内核,在此基础上开发了所有这些众多发行版(Ubuntu、Debian、Mint 等),同时可以安装这个非常干净的内核,而不是来自发行版的一些?
  • 我是否正确理解内核本身本质上已经是一个操作系统,只是没有图形界面(类似于 DOS),并且 GUI 本身已经可以单独安装?
  • 听过很多次,内核通常需要先编译再安装。是否可以获得已经编译好的内核,是否以这种形式分发?尝试在 Windows 上编译相同的 Linux 内核是否是个好主意,这甚至可能吗?
  • 我多次听说过各种各样的包管理器,借助它们可以在基于 Linux 的系统上安装各种软件,而每个这样的操作系统(Ubuntu、Debian、Mint 等)都有自己的包管理器。但是干净的核心呢?怎么放东西?Linux 软件一般是如何分发的?只在开源中,有后续编译?还有诸如安装文件、.exe-shniki 之类的东西——通常不使用?
  • 如果只有一台没有安装操作系统的 PC,Linux 内核通常是如何安装在上面的?

目前,仅此而已。提前致谢。

linux
  • 4 4 个回答
  • 10 Views

4 个回答

  • Voted
  1. Best Answer
    Arhadthedev
    2020-06-12T20:45:11Z2020-06-12T20:45:11Z

    我是否正确理解有一个单一且独特的 Linux 内核,所有这些众多发行版(Ubuntu、Debian、Mint 等)都是在此基础上开发的。

    并不真地。只有基础(原始源代码)是一个。也就是说,发行版开发人员下载他们需要的 Linux 版本的源代码,对其进行一些更正(补丁),设置构建选项以启用必要的功能并排除不必要的功能,然后编译内核。换句话说,发行版不仅在存储库和应用程序方面有所不同,而且在内核变体方面也有所不同。

    ...同时可以安装这个非常纯的内核,而不是一些发行版?

    能。但是由于内核以源代码的形式分发,您必须从中编译您自己的版本,专门为您的计算机和可能的需求量身定制 - 标准配置make menuconfig器有丰富的选项:

    菜单配置

    图形 Linux 构建选项配置器的主窗口。资料来源:维基百科

    然而,即使是最小的工作系统也是一个相当漫长且多阶段的过程,需要对 Linux 原理有足够的了解。

    我是否正确理解内核本身本质上已经是一个操作系统,只是没有图形界面(类似于 DOS),并且 GUI 本身已经可以单独安装?

    再一次,不是真的。内核只是程序和硬件之间的一层。对于 Linux,套件中还包含驱动程序。

    要获得 DOS 之类的东西,您至少还需要GNU Coreutils - 一组定义用户环境的程序(ls,cat等su),以及一个引导加载程序(例如 , grub)lilo,它会在计算机打开时加载内核.

    顺便说一句,正是由于Linux内核和GNU Coreutils软件包的共生,操作系统才被称为GNU/Linux。

    听过很多次,内核通常需要先编译再安装。是否可以获得已经编译好的内核,是否以这种形式分发?

    在源代码中分发是内核开发人员的一种策略,因此编译后的内核只能从一些现有的分发中删除。

    尝试在 Windows 上编译相同的 Linux 内核是否是个好主意,这甚至可能吗?

    要构建 Linux,您需要 GCC 编译器和 LD 链接器。理论上,在 Cygwin 下构建时,应该没有问题(如果是编译内核),但是有关于区分大小写文件名的困难的信息,Windows 认为相同。

    我多次听说过各种各样的包管理器,借助它们可以在基于 Linux 的系统上安装各种软件,而每个这样的操作系统(Ubuntu、Debian、Mint 等)都有自己的包管理器。但是干净的核心呢?怎么放东西?

    从源代码编译。也就是说,在纯内核的情况下,您应该总是手头有一个编译器。

    Linux 软件一般是如何分发的?只在开源中,有后续编译?还有诸如安装文件、.exe-shniki 之类的东西——通常不使用?

    只有内核组件(如驱动程序)才需要从源代码构建。应用程序也可以作为二进制文件安装。去开发者的网站,下载一些包。然后,知道任何包都只是一种常见格式的存档,您解压缩它并将其中包含的文件分散到系统中的适当位置。最后,确保您拥有运行该程序所需的所有库。

    如果只有一台没有安装操作系统的 PC,Linux 内核通常是如何安装在上面的?

    要构建 Linux,您需要另一个 Linux 副本。因此,您至少应该获得某个发行版的 live cd。

    • 18
  2. aleksandr barakin
    2020-06-14T00:58:23Z2020-06-14T00:58:23Z

    介绍信息

    什么是 Linux 以及它与什么一起食用。

    linux是一个在许多操作系统上运行内核的程序(库,如果你愿意的话)。

    使用该程序的最著名的操作系统是:

    • GNU/Linux
    • android(实际上是:dalvik /linux,最近是 art /linux)

    gnu操作系统能够使用其他程序作为其内核。最有名的:

    • gnu/kfreebsd
    • gnu/hurd

    分发工具包是一个操作系统加上一组用户程序和库。

    一些问题的答案

    我是否正确理解有一个单一且独特的 Linux 内核,在此基础上开发了所有这些众多的发行版?

    从介绍性信息中可以清楚地看出,并非所有的发行版(俗称“linux 发行版”)都是基于使用linux程序作为内核的gnu操作系统版本构建的。

    我是否正确理解内核本身本质上已经是一个操作系统,只是没有图形界面(类似于 DOS),并且 GUI 本身已经可以单独安装?

    不, linux程序本身对用户来说绝对没用:首先,它不能自己加载:需要一个额外的加载程序(最著名的:gnu/grub,lilo,syslinux),其次,即使加载到内存并运行,它所能做的就是显示消息“内核恐慌。no init found”(一个只有一小部分笑话的笑话)。

    听过很多次,内核通常需要先编译再安装。

    gnu操作系统发行版的绝大多数用户不这样做,而只是使用已经为该发行版构建的程序。

    我多次听说过各种各样的包管理器,借助它们可以在基于 Linux 的系统上安装各种软件,而每个这样的操作系统(Ubuntu、Debian、Mint 等)都有自己的包管理器。

    您列出的所有三个发行版(从不操作系统,请注意)使用相同的包管理器 - apt。

    更重要的不是包管理器,而是不同的发行版(以及同一发行版的不同版本)使用不同的存储库这一事实,即 程序/库的不同程序集。

    如果只有一台没有安装操作系统的 PC,Linux 内核通常是如何安装在上面的?

    linux程序本身的“安装”没有丝毫意义。您还至少需要一个引导加载程序和实际的操作系统。并且最多还需要用户程序/库(以便至少可以做一些有用的事情)。

    对于想要“一砖一瓦”构建自己的系统的爱好者,有一个非常有名的教程:来自 scrtatch 的 linux。

    • 7
  3. Alex Krass
    2020-06-12T20:43:12Z2020-06-12T20:43:12Z

    是的,有一个单一且独特的 Linux 内核。但这并不意味着其他人无法对其进行更改,因此分布可能会有所不同。源码可以从github上获取:https ://github.com/torvalds/linux ,还有各种手册。

    你可以安装一个干净的内核,但你会得到一个基本集(类似于 DOS),其他一切都必须从源代码构建,如果有的话。如果你有兴趣这样做,你可以去Gentoo并尝试构建它,他们有一个多页的 Gentoo 手册(这里是一个例子)关于如何做到这一点。

    是否可以为 Windows 构建 Gentoo?很可能通过为编译器提供一切必要的东西来实现,但这是另一个任务。一般来说,没有人会费心使用虚拟机。

    包管理器访问 Internet 上的 FTP,并从那里下载包中预编译的源代码。同时,Linux 本身提供了对这个列表进行补充和更改的能力。虽然,由于系统的某些差异,并非所有这些都可以正确地站在另一个系统下,即使在同一发行版的不同版本中也是如此。好吧,我认为很清楚 - 手动编译。

    对于第五个问题,Gentoo 提供了一本手册,您可以从中汲取这些知识。

    PS 作为一项规则,没有人从内核学习 Linux,如果你不是 OS 开发人员,学习会通过研究终端、bash、设置用户、研究目录、内置工具、尝试建立网络,通过简单的站点和其他管理来提高服务器。如果您是一名操作系统开发人员,那么从一开始就没有人这样做,因为有 Tonenbaum 的书(其中一本是关于 Minix 并启发 Linus 编写自己的操作系统)。

    • 5
  4. Sergey
    2020-06-13T10:50:18Z2020-06-13T10:50:18Z

    上面说的都对,我想补充一点:

    1. 如果你想体验 linux,那么构建和安装内核是最疯狂的选择。只需获取任何 Linux 发行版的任何实时映像(在 CD 或闪存驱动器上 - Internet 上有很多) - 看,按下按钮。
    2. 如果有兴趣 - 在您的计算机上安装此发行版。通常,当加载所有实时图像时,会弹出一个菜单,其中有一个“安装”项。只需选择此项,您的计算机上就会非常准确地安装此发行版。如果计算机上有 Windows 运营商,那么它不会发生任何事情。安装程序会询问您为 Linux 分配了多少 HD 空间。它将使用操作系统选择菜单设置引导加载程序并安装最流行的应用程序。您将收到一个准备好工作的系统。
    3. 从根本上区分 Linux 和 Windows 的一个非常重要的点是存储库的存在。您不必上网,寻找您感兴趣的程序所在的位置,处理安装过程,检查所需的库,检查更新等等......系统安装程序将完成所有这些为你。实际上,只有两种类型的安装程序——用于 DEB 包和 RPM 包。您在安装过程中选择的(分发类型)就是您将来要处理的内容。相信我 - 与 Windows 相比,这是一个巨大的优势!
    • 3

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5