标签 LFS 下的文章

英国正在建造第一台商用量子计算机

英国政府宣布投资 1000 万英镑,让企业和研究人员充分利用量子能力。他们说,“我们的雄心是成为世界上第一个量子就绪的经济体,这可以为英国企业和行业提供价值数十亿英镑的机会。”该计划为期三年,由全球唯一一家商业开发量子计算平台的美国企业 Rigetti 负责开发。

来源:zdnet

拍一拍:量子计算就这样商用了?

黑客正在利用一个 WordPress 插件高危漏洞

黑客正在利用 WordPress 插件 File Manager 的一个漏洞在网站上执行命令和恶意脚本。File Manager 的安装量超过 70 万,用于操作本地和服务器上的文件。上传的文件名字有 hardfork.php、hardfind.php 和 x.php。统计显示,70 多万安装的 File Manager 中有 52% 存在漏洞。

来源:solidot

拍一拍:使用一个极其流行的开源软件会得到很多流行的功能,但也会面临更多的攻击面。

Linux From Scratch v10 发布

你可能觉得现有的发行版都不满意,想要打造自己的发行版。但如何从零开始创造定制发行版呢?Linux From Scratch 项目旨在提供必要的知识,帮助你设计和构建自己的发行版,并在此过程中增强 Linux 相关的技能,阅读本书的读者需要掌握一定程度的现有 Unix 系统管理知识。

来源:solidot

拍一拍:LFS 是深入了解 Linux 和操作系统知识的一条很棒的路。顺便提一句,Linux 中国旗下有一支 LFS 翻译小组一直在跟进 LFS 的翻译,以及正在准备推出一本实体书。

很多同学都已经学习了 Linux ,可能已经在自己的机器上安装过 Linux,甚至都能搭建个简单的个人博客,也有可能编译部署过邮件服务器之类的软件,可是感觉仍然对 Linux 有点摸不着,颇有隔靴挠痒的感受。

总是好奇 Linux 内核是怎么回事,究竟里面有点什么?总是好奇 Linux 是怎么启动起来的,那个什么 GRUB 怎么知道读取引导信息?总是好奇设备怎么就可以被当成文件操作,为什么可以从 /proc 读到进程的信息?总是好奇如何才能构建一个操作系统,从无到有的做成一个可引导的 Linux 启动盘?

不用羡慕那些说起这些就头头是道是 Linux 极客们,其实你和他们之间只是差一个 LFS 而已。

什么?请听我娓娓道来~

LFS 是什么?

LFS(英文 Linux From Scratch 的缩写),中文释意为“从零开始构建的 Linux”。好吧!看起来很高大上 OTZ,可它到底是什么东西呢?感觉上它好像经常和 RedHat,Debain 这类发行版混在一起,那它应该也是个发行版吧!

这样理解其实也没有什么不对,但比起发行版来,它其实更像一本书。书本只提供知识,它只教你做,不会帮你做。这才是 LFS 和别的发行版的本质区别。这本书可以教你如何亦步亦趋的从零开始搭建一个具体而微的 Linux 系统,没错,就是从零开始,是不是有一种上帝视角的感觉呢?

那么在哪儿可以找到这本“书”呢?你可以在网上找到电子版,当然,乐意的话,你可以打印出来——不过,我认为这没必要。你只需要按照这本书的指导,一个字母都不要敲错,你就能在它手把手地指导下,打磨出你自己的 Linux 系统啦!

LFS 是本好书吗?

是的,LFS 绝对配得上称为一本好书,或者说一本好教材。市面上,很难再找到一本如此具体又如此精炼的教材了。

首先,它并不是只是讲讲简单概念,它很具体,具体到就是一个例子,一个告诉你怎么亲手构建出属于自己的 Linux 系统的例子。

其次,它很精炼,它的精炼表现在两个方面:系统构建出来不臃肿;文字描述很精炼。

最后还有一点,这一点至关重要。尽管文字的描述非常精炼,甚至是精炼到枯燥,但是作为一本教材,作者无时无刻不再想尽办法,让你学到东西。无论是编译指令下方各个参数的介绍,还是软件包安装小节下方软件包内容的介绍,作者真的是想尽办法的试图把知识传递给读者。

LFS 没有缺点吗?

那自然是有的,可以原封不动的照抄上面的优点。辩证的看待这些优点,你就会发现这些优点是有代价的。

首先,由于这个例子过于生动形象,所以篇幅不小,快则一两天,慢可能要一两周你才能跟着把系统构建完。一次做完你也不见得能把知识完全消化。

然后,刚才我也提到了,为了让内容更精炼,更多的只是叙述和说明,并不会夹杂太多作者的思想和经验,看起来显得很枯燥。

最后,相信大家都不是太喜欢看教科书。

当然,其实还有一个缺点,会给我们的学习带来比较大的阻力,这个我们后面会提到。

LFS 的定位

盘点了优缺点以后 LFS 的定位就很清晰了,它就是一本书,一本教科书。所以你不能要求它像小说般有趣。而这本书的受众是,广大的程序员,学生,Linux 用户,以及任何一个对此感兴趣的人。

如何开始?

如果你英文水平尚可的话,请直达 LFS 官网: http://www.linuxfromscratch.org/lfs/ ,开始你的上帝之旅吧。

如果你希望阅读中文的话,我们 Linux 中国旗下的 LFS 翻译小组,经过了长时间的不断努力,继续更新了最新的 LFS 8.3 版本:https://lctt.github.io/LFS-BOOK/

对于此译本,译者 Martin 有言:愚者琢玉,履薄临深。善人善用,不负光阴。

LFS 中文维护

之前提到,会给我们的学习带来很大的阻力的缺点,就是这本书的原文是英文。

作为母语是中文的大家来说,阅读大段的英文并不是一件多么享受的事。LCTT 之前已经翻译过一版简体中文的 LFS 7.7。时间过的飞快,现在最新的版本已经是 8.3 了。我们也会不断跟进最新 LFS 翻译,喜欢 LFS 也愿意做出翻译贡献的,可以参与我们的翻译项目。

(以下是广告时间……)

对翻译 LFS 手册感兴趣的同学,翻译项目在此: https://github.com/LCTT/LFS-BOOK ,你可以在这里对翻译中出现的问题进行反馈和修正。

那么,你准备成为一名 Linux 极客了吗?

简介

Linux From Scratch,简称 LFS,不同于其它的 Linux 发行版,它是一种给使用者指导建议,由使用者自行从头开始自己构建的发行版。LFS 发行版及其衍生版本,都由其同名的手册提供了完整的指导建议。

《Linux From Scratch》(LFS)是由 Gerard Beekmans 等人编写的。这本书可以从在Linux From Scratch网站上免费下载到,当前最新的版本为 8.1。

尽管目标是安装一个与现有发行版毫无关系的系统,安装LFS仍然不能无中生有,而必须要有一个可以编译软件包的运行中的Linux系统。这个系统一般称为宿主系统。在宿主操作系统上安装LFS,需要的基本步骤如下:

  • 准备新分区(第二章)
  • 软件包与补丁(第三章)
  • 最后的准备(第四章)
  • 构建临时文件系统(第五章)
  • 安装基本的系统软件(第六章)
  • 基本系统配置(第七章)
  • 让 LFS 系统可引导(第八章)

LFS 的官方网站是: http://www.linuxfromscratch.org/

相关项目

该项目有很多相关子项目:

Beyond Linux From Scratch(BLFS)

标准LFS仅仅安装了足够让系统启动的基本软件,以及使新系统能够编译新软件包的开发工具。BLFS包括了更多的软件包,且都有相应指导。

Crosss Linux From Scratch(CLFS)

为需要进行交叉编译(即在一个平台上编译另一个平台的代码)的用户提供指导,正式版本为1.0,另有两个变种

  • CLFS Sysroot 采用Sysroot的方法来进行编译,好处是软件包的编译次数可以减少,坏处是不能支持在编译后对软件进行测试,必须要启动到目标平台上才能测试。
  • CLFS Embedded 一般用于极小系统以及嵌入式系统。为此,它使用uclibc而不是一般LFS使用的glibc

Automated Linux From Scratch(ALFS)

标准LFS只是一本书,用户需要根据书上的指引下载软件包并手动输入指令进行编译。ALFS子项目提供了把这一切自动化的脚本。

Hardened Linux From Scratch(HLFS)

这个子项目致力于打造在安全性上无懈可击的Linux系统。

当前版本

LFS 的当前版本是 8.1,分为采用 systemd 的版本和不采用的版本。

手册

Systemd 版本:

Systemd 版本(简体中文翻译版本):

LCTT 对 LFS 7.1 systemd 版本进行了翻译,并且 LFS 官方网站收录了相应链接:

非 Systemd 版本:

注:部分资料来自维基百科。

您是否想过打造您自己的 Linux 发行版?每个 Linux 用户在他们使用 Linux 的过程中都想过做一个他们自己的发行版,至少一次。我也不例外,作为一个 Linux 菜鸟,我也考虑过开发一个自己的 Linux 发行版。从头开发一个 Linux 发行版这件事情被称作 Linux From Scratch (LFS)。

在开始之前,我总结了一些有关 LFS 的内容,如下:

1. 那些想要打造他们自己的 Linux 发行版的人应该了解打造一个 Linux 发行版(打造意味着从头开始)与配置一个已有的 Linux 发行版的不同

如果您只是想调整下启动屏幕、定制登录页面以及拥有更好的外观和使用体验。您可以选择任何一个 Linux 发行版并且按照您的喜好进行个性化配置。此外,有许多配置工具可以帮助您。

如果您想打包所有必须的文件、引导加载器和内核,并选择什么该被包括进来,然后依靠自己编译这一切东西。那么您需要的就是 Linux From Scratch (LFS)。

注意:如果您只想要定制 Linux 系统的外表和体验,这个指南并不适合您。但如果您真的想打造一个 Linux 发行版,并且向了解怎么开始以及一些其他的信息,那么这个指南正是为您而写。

2. 打造一个 Linux 发行版(LFS)的好处

  • 您将了解 Linux 系统的内部工作机制
  • 您将开发一个灵活的适应您需求的系统
  • 您开发的系统(LFS)将会非常紧凑,因为您对该包含/不该包含什么拥有绝对的掌控
  • 您开发的系统(LFS)在安全性上会更好

3. 打造一个Linux发行版(LFS)的坏处

打造一个 Linux 系统意味着将所有需要的东西放在一起并且编译之。这需要许多查阅、耐心和时间。而且您需要一个可用的 Linux 系统和足够的磁盘空间来打造 LFS。

4. 有趣的是,Gentoo/GNU Linux 在某种意义上最接近于 LFS。Gentoo 和 LFS 都是完全从源码编译的定制的 Linux 系统

5. 您应该是一个有经验的Linux用户,对编译包、解决依赖有相当的了解,并且是个 shell 脚本的专家。

了解一门编程语言(最好是 C 语言)将会使事情变得容易些。但哪怕您是一个新手,只要您是一个优秀的学习者,可以很快的掌握知识,您也可以开始。最重要的是不要在 LFS 过程中丢失您的热情。

如果您不够坚定,恐怕会在 LFS 进行到一半时放弃。

**6. 现在您需要一步一步的指导来打造一个 Linux 。LFS 手册是打造 LFS 的官方指南。我们的合作站点 tradepub 也为我们的读者制作了 LFS 的指南,这同样是免费的。 ###

您可以从下面的链接下载 Linux From Scratch 的电子书:

下载: Linux From Scratch

7. 当前 LFS 的版本是 7.7,分为 systemd 版本和非 systemd 版本。

LFS 的官方网站是: http://www.linuxfromscratch.org/

您可以在官网在线浏览 LFS 以及类似 BLFS 这样的相关项目的手册,也可以下载不同格式的版本。

8. Linux 中国/LCTT 翻译了一份 LFS 手册(7.7,systemd 版本)

经过 LCTT 成员的努力,我们终于完成了对 LFS 7.7 systemd 版本手册的翻译。

手册在线访问地址:https://linux.cn/lfs/LFS-BOOK-7.7-systemd/index.html

CHM 版本: https://img.linux.net.cn/lfs/LFS-BOOK-7.7-systemd.chm

PDF 版本: https://img.linux.net.cn/lfs/LFS-BOOK-7.7-systemd.pdf

其它格式的版本稍后推出。

感谢参与翻译的成员: wxy, ictlyh, dongfengweixiao, zpl1025, H-mudcup, Yuking-net, kevinSJ 。

关于:Linux From Scratch

这本手册是由 LFS 的项目领头人 Gerard Beekmans 创作的, Matthew Burgess 和 Bruse Dubbs 参与编辑,两人都是LFS 项目的联合领导人。这本书内容很广泛,有 338 页之多。

手册中内容包括:介绍 LFS、准备构建、构建 LFS、建立启动脚本、使 LFS 可以引导,以及附录。其中涵盖了您想知道的 LFS 项目中的所有东西。

这本手册还给出了编译一个包的预估时间。预估的时间以编译第一个包的时间作为参考。所有的东西都以易于理解的方式呈现,甚至对于新手来说也是这样。

如果您有充裕的时间并且真正对构建自己的 Linux 发行版感兴趣,那么您绝对不会错过下载这个电子书(免费下载)的机会。您需要做的,便是照着这本手册在一个工作的 Linux 系统(任何 Linux 发行版,足够的磁盘空间即可)中开始构建您自己的 Linux 系统,付出时间和热情。

如果 Linux 使您着迷,如果您想自己动手构建一个自己的 Linux 发行版,这便是现阶段您应该知道的全部了,其他的信息您可以参考上面链接的手册中的内容。

请让我了解您阅读/使用这本手册的经历,这本详尽的 LFS 指南的使用是否足够简单?如果您已经构建了一个 LFS 并且想给我们的读者一些建议,欢迎留言和反馈。


via: http://www.tecmint.com/create-custom-linux-distribution-from-scratch/

作者:Avishek Kumar 译者:wwy-hust 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

很多人对Linux进行了一定的学习之后,都会有一种自己从头搭建一套Linux的想法,在这方面LFS和Gentoo都是不错的起点。不过虽然它们已经尽量提供详细文档了,但对于初学者来说还是存在一定的困难的。

因此本站特邀 PHILO (@看见微软我就跑)和 米油 两位同学将他们自己学习LFS的经验分享给大家,也希望大家一起来参与到LFS之旅中。

前言

LFS(Linux from scratch)是从源代码开始编译Linux操作系统。如果需要深度定制Linux操作系统或者需要更加深入学习Linux的学习者可以从这里开始您的旅途。这份意义的深渊不必多说。 同时也希望您能加入我们一起开始这段旅程: →加入我们←

从7月初开始我们团队里面两个人为了更加深入的学习Linux方面的知识。也为了瞻仰LFS大神们的光辉。 开始了LFS的旅程,因为LFS官方文档写的虽然非常具体,但是多多少少对于一些Linux新手来说造成很多困扰。

因此我们团队做完LFS之后写了这篇辅助性质的说明,对新手遇到问题的时候提供帮助。

进行LFS旅程的前提条件

  1. 比较熟悉Linux操作
  2. 有一定Linux开发基础
  3. 在LFS之前有过从源码编译软件的经验。
  4. 有一定的英文基本功,除了看手册之外,有的时候抛出错误的时候应该有google查找并解决错误的能力。

文档使用方法:

  1. 首先对本辅助文档完整的浏览一遍,这样有助于理解LFS的整个过程做什么
  2. 然后扫一遍LFS官方文档的目录,这样至少知道每个章节的目的。
  3. 当你进行到LFS某一步时,遇到问题后可以对应上本辅助手册的具体问题的解决方案

LFS全过程概括

  1. 对磁盘的准备和用户的准备
  2. 建立temp系统
  3. 编译LFS系统
  4. 最后调整

LFS 编译完成的成果

LFS在编译完成的最后除了Linux基础内核目录结构(bin etc lib proc dev等等这些)还有一个tools这个目录(过程概括中的第2部分),它的存在是为了编译LFS整个系统的。所以在第五章这一部分中,就是利用ubuntu或centos主机系统的编译环境(称之为HOST)来编译出tools这个目录下的编译环境。

提示:其实制作LFS所有用到的工具链接,就是在ubuntu或centos下编译出一个新的交叉编译器(就是/tools目录下的所有工具),而这个新的交叉编译器在编译出来后,就不会依赖于现有操作系统编译器和库文件(ubuntu or centos),此时我们就可以利用这个全新的交叉编译工具(/tools目录下的所有工具)制造属于我们自己的Linux了,利用这个新的工具,从源码开始编译出所有我们需要的软件和库,最后编译Linux内核,设置bash脚本,启动脚本,tmpfs文件系统需要的配置文件,整个LFS的过程就结束了。

A: Linux发行版本的选择

  1. CentOS 6.3 (虚拟机双硬盘)
  2. Ubuntu 14.04 with GCC4.4(64bit) (笔记本电脑+双硬盘+LFS系统构建在SSD硬盘上)
  3. 在以上两种Linux发行版上分别进行编译运行,且最终都取得成功。
  4. 使用LFS官网上LFS7.5的源码进行编译制作

B:前四章的内容:硬盘分区、用户准备篇

主机所用操作系统的准备工作: (ubuntu14.04 64位下需要安装的软件)

1.在ubunt下安装bison(ubuntu下默认没有安装)

sudo apt-get install bison 
#LFS 手册要求

2.不能用gcc4.8,需要换成gcc4.4(ubuntu14.04默认gcc4.8)

 sudo apt-get install gcc-4.4 g++-4.4
 sudo rm `which gcc`
 sudo rm  `which g++`
 sudo ln -sv /usr/bin/gcc-4.4  /usr/bin/gcc
 sudo ln -sv /usr/bin/g++-4.4  /usr/bin/g++

这里CentOS没有什么特别要说的。主要因为全部都用默认的,就可以了。各种依赖C6-Media就可以解决

3.到LFS官网上下载LFS7.5的所有源码: <ftp://ftp.lfs-matrix.net/pub/lfs/lfs-packages/>

1.磁盘分区准备

  1. plan: 准备一个10到20GB的分区,这一步请谨慎操作
  2. action: 创建分区(表)并格式化。创建分区表请使用fdisk , 如果需要图形界面下的请使用GPartion,如果这两种工具都不会请到windows下分区(无需格式化)
#格式化分区
sudo mkfs -v -t ext4  /dev/sdaX #这里的X是填上自己的分区号

PS:因为现在计算机的内存都比较大,所以可以不需要swap分区。(第一次进行LFS,一个根“/”分区就够了,等以后有经验了,在进行多分区的操作)

2.用户准备

直接参考手册上的来就行了。

小建议:

PS1='[[\e[32m]#\##[\e[31m]\u@[\e[36m]\h \w]$[\e[m]'

PS1修改成这个变量看着能舒服点。

注意:每次开机,或是重启后,在进入lfs用户前,都要对 LFS变量进行检查,查看LFS=/mnt/lfs变量是否存在,然后对lfs使用的分区进行挂载

前四章的小结:

  1. 这一部分没有什么难点,准备硬盘分区是因为要让LFS作为独立的硬盘来启动。新建分区、格式化分区、准备lfs用户是Linux操作的基础素质。 注意 :为了下面的编译过程能更快,可以在输入make命令时在后面加入-j4,使用4个进程进行同时编译,在多核处理器上编译的速度有明显提升

开始进入编译代码的环境(每次开机或重启动后需要进行下面步骤进入lfs用户环境)

  1. 首先导入LFS变量
export LFS=/mnt/lfs
#建议放到/etc/profile下方便一直用
  1. 然后挂载LFS的分区
sudo mount -v -t ext4 /dev/sdaX $LFS  #X为你的LFS硬盘分区号
  1. 最后就可以切换到lfs用户了
su - lfs  #注意中间这个 - 符号是一定要的,代表为lfs用户启动一个login shell 

补充:通常我们在开机后,启动的第一个shell称之为login shell,当进入GUI界面后,不需要输入密码启动的shell称之为non-login shell。这两种shell是有区别的。大家都知道shell的运行是需要环境变量的支持的。配置这些环境变量的文件就是配置shell工作环境的文件。两种shell在读取配置文件时有很大的不同,下面是总结它们分别读取哪些配置文件:

  1. login shell 启动--->读取/etc/porfile文件--->读取~/.bash\_profile文件
  2. no-login shell 启动--->读取~/.bashrc文件
  3. exec env -i /bin/bash命令会开启一个全新的non-login shell。

注意:每次重新开机或重启后都需要进行下面的步骤,切换到lfs用户,因为对于新手来说,不可能一天就编译完lfs的所有源,可以把以上步骤保存到一个文件中,每次重启系统进行LFS之前,参照以上步骤进入到LFS编译环境。

C: 第五章的内容:编译得到$LFS/tools/目录下面的工具包

  • 第一步,编译出一个全新的与主机系统无关的工具链。这些工具链包含了:compiler(就是我们常用的gcc,g++),assembler(就是把汇编程序变成a.obj文件的工具),linker(就是把很多*.obj文件和库文件链接成可运行文件a.out的工具),还有各类库文件(为后面编译其它的软件提供基础设施),当然还有大量的其它工具
  • 第二步,得用第一步编译出来的工具,编译其它的工具(这里可以看出,在制作LFS的过程中,编译的先后顺序是非常生要的,因为有了鸡,才能下蛋)
  • 注意 1:上面两步编译出来的工具都会安装到 $LFS/tools目录下面(也就是/mnt/lfs/tools目录下面)。LFS手册中把这个称之为临时的文件系统,就是因为$LFS/tools这个目录在第6章结束时就会被删除,因为$LFS/tools已经使用完了,没有利用价值了。
  • 注意 2:参照LFS手册上的指令进行编译,基本不会遇到错误,因为编译代码的步骤就是老三样:configure && make && make install,但是有一点,一定要注意,所有的安装包一定要打补丁,因为LFS手册没有强调打补丁的过程,所以自己如果发现这个源码包有补丁文件,一定要记得打上。
  • 注意 3:因为需要编译的软件太多,到最后你可能不会愿意自已每个单词都输入到命令行进行编译,所以通常会直接复制LFS手册中的命令。但是复制时,请一定注意先把指令复制到一个空的文件编辑器中,然后检查一下,复制过来的内容是否正确,因为从PDF文件复制到文本中的内容,格式会发生很大的变化。这一点在你尝试的过程中就会发现了。然后在文本编译器或是vim中进行编辑后,在复制到lfs用户的命令行中。
  • 注意 4:在编译perl时,按照官方文档打补丁会出现readonly的错误,下面是是正确的操作命令:
cd /mnt/lfs/sources
tar xvf perl-5.16.2
cd perl-5.16.2/hints
cp linux.sh linux.sh.org
cd ..
patch -Np1 -i ../perl-5.16.2-libc-1.patch
cd hints
diff linux.sh linux.sh.org   #输出打补丁情况,则为正常打补丁,编译过程参考手册
  • 注意 5:手册上的configure的位置一定刚要注意有三种情况,第一种是在源代码目录之外进行configure,第二种是在源代码目录里面进行configure,第三种(特殊情况)是libstdc++是在gcc源码目录的子目录里面进行configure。所以在执行命令之前一定刚要看好执行命令的前提条件,不妨思考一下LFS的笔者为什么这么写。
  • 温馨提示: 第一次编译GCC时可能会遇到环境问题,不要气馁,失败是正常的(我失败了10次以上)。不过我们可以保证LFS手册上的命令质量是非常高的。经过亲身测试绝对没有错误。