当前位置:首页 » 编程软件 » nanopi自编译linux

nanopi自编译linux

发布时间: 2022-09-09 02:05:42

‘壹’ linux 下自编译的可执行文件(假如test),怎么设置使得在终端直接输入test(而非./test)就能执行

这要加在 PATH环境变量中,运行:
export PATH=$PATH:'./'

注意:
1 能运行当前目录下的程序有很大安全隐患,试想如果有人在当前目录放一个黑客软件,改成ls之类常用命令名……
2 已经有一个很常用的程序叫test,不要用这个名字。

‘贰’ 如何在windows下或者linux下对树莓派编程(C语言或C++)

硬件的没玩过
树莓派 是不是那个 教学型 ARM编程主板?

建议你去 他们官方论坛看下
我同学他们毕业搞ARM的 都是 自己焊接板子的
然后用 winCE或者 unix linux 的嵌入式系统

他这种定制的包装过的,一般都把很多底层的 原理封装了,只需要 学号他官方提供的 支持文档和事例程序,就能实现 很多功能。而且
如果 你直接去学C/C++ windows编程 以及通信编程 SSH协议 等 反倒离目的远了。
我估计你应该是个 爱好者,或者学生。

论坛里有很多 爱好者 发的 相关项目及 细节

比如:我刚才在 论坛里看到一个帖子说

做了一个工具,在windows下面和pi 进行ssh 交互

http://bbs.ickey.cn/index.php?app=group&ac=topic&id=2573

‘叁’ 拿到了linux的内核 应该用什么软件 怎么去编译

1、你可以把linux内核代码放到你的ubuntu或redhat之类的具有linux内核的操作系统里面,然后在你指定的目录里面解压你的内核源码
2、在主目录里面找到Makefile文件,修改里面的“ARCH = ”和“CROSS_COMPILE”,也就是你的编辑器路径,保存退出;
3、输入make menuconfig配置你的内核参数,保存退出;
4、执行make zImage,你会看见屏幕哗啦哗啦的在运行,这是在生成内核zImage文件;
5、进入你的arch/(cpu型号)/root/里面,你会看到zImage文件,这个就是你要的。
以上是最简单的步骤,若想详细了解,在网络里面搜索“linux内核编译”,会得到一大堆结果,记得一般只看文库或者博客里面的文章,因为质量比较好。

若需帮助,请追问!

‘肆’ 有没有谁了解nanopi2 fire的稳定性如何

编译安装内核 载并解压内核 内核载: 解压内核:tar xf linux-2.6.XX.tar.xz 定制内核:make menuconfig 参见makefile menuconfig程讲解 编译内核模块:make 内核模块vmlinuz

‘伍’ μClinux的μClinux下的系统开发环境

了解了μClinux操作系统的基本技术细节,对于网管人员在完成基本管理职能的基础上,使用开发环境进一步完善和提高自身的网络管理技能,具有非常重要的指导意义。目前在具有嵌入式开发支持功能的路由器等网络产品方面,经常使用的μClinux开发平台是GNU开发套件。
该开发套件包括:
(1)常规C编译器GCC,可以使用标准C进行系统功能的二次开发。
(2)C++编译器GCC++,可以使用面向对象开发模式完成系统功能的二次开发。
(3)汇编器AS和链接LD,可以使用汇编语言进行系统功能的二次开发。
(4)其它工具软件,包括:二进制转换工具(OBJCOPY,OBJDUMP),软件调试工具(GDB.GD BSERVER,KGDB)和基于不同硬件平台的开发库。
上述开发环境的技术特点如下:
(1)代码效率高。在GNU GCC/GCC++语言环境的支持下,用户可以使用流行的C/C++语言开发应用程序。该开发模式下,网络管理人员可以轻松介入到开发工作中,并可以生成高效率运行代码。
(2)灵活性强。GNU开发工具都是采用命令行的方式,用户掌握起来相对比较困难,不如基于Windows系统的开发工具好用,但是GNU工具的复杂性是由于它更贴近编译器和操作系统的底层,并提供了更大的灵活性。
(3)丰富的网上免费资源。上述工具都是按GPL版权声明发布的,任何人都可以从网上免费获取全部的源代码,无需任何费用的投入,对于一般小型单位的网络质量的提升可以起到投入少、见效快的神奇效果。GNU开发套件作为通用的Linux开放套件,包括一系列的开发调试工具。
(4)易学易用。网络管理人员一般都具有计算机以及相关专业的背景,都经历过软件的初步培训过程,这些技术人员一旦学习和掌握了相关工具后,就可以掌握网络系统设计和二次开发的基础知识。运行于Linux操作系统下的自由软件GNU gcc编译器,不仅可以编译Llnux操作系统下运行的应用程序,还可以编译Linux内核本身,甚至可以作交叉编译,编译运行于其它CPU上的程序。

‘陆’ 如何配置编译在mini2440开发板上运行的linux内核

参考:http://www.it165.net/os/html/201409/9334.html

系统ubuntu12.04(非虚拟机下)
mini2440
CPU型号: S3C2440AL-40
Nanflash型号:K9F1G08
Norflash型号:SST39VF1601
LCD: 统宝 240 x 320
$: 普通账户
#:root账户
*当shell下输入路径时可使用tab键自动补全

(一)建立交叉编译环境

1.将mini2440光盘中的linux文件夹拷贝到 /home/lianghuiyong 并改名为Linux_share
(其中两个文档为我后面添加进去的)

2.Ctrl+Alt+T打开shell
3.$ su - root (切换root权限)
4.# cd /home/lianghuiyong/Linux_share
5.解压安装arm-linux-gcc编辑器
# tar xvzf arm-linux-gcc-4.4.3.tar.gz –C / //注意:C后面有个空格
执行该命令,将把 arm-linux-gcc 安装到/usr/loca/arm/4.4.3 目录。这句来自mini2440用户手册,我发现其实是安装到 /opt/FriendlyARM/toolchain/4.4.3 目录

6.# vim /root/.bashrc
7.在最后一行添加:export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin //opt/FriendlyARM/toolschain/4.4.3/bin 为arm-linux-gcc 环境变量
:wq保存退出。
# source ~/.bashrc
8.# sudo gedit /etc/environment
games后面添加标记部分

9.# arm-linux-gcc -v //gcc后面有空格

测试hello.c(这是在安装了第二部分的linux示例程序才有examples/hello目录)
# cd /opt/FriendlyARM/mini2440/examples/hello
# arm-linux-gcc -o hello hello.c
# ./hello

(二)安装源代码及其他工具
创建工作目录(以下都为root环境下):
# mkdir -p /opt/FriendlyARM/mini2440

1>>解压安装linux内核源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/linux-2.6.32.2-mini2440-20100106.tar.gz

2>>解压安装嵌入式图形系统qtopia源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/x86-qtopia.tgz
# tar xvzf /home/lianghuiyong/Linux_share/arm-qtopia.tgz

3>>解压安装嵌入式图形系统 QtE-4.6.1 源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/arm-qte-4.6.3-20100802.tar.gz

4>>解压安装busybox 源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/busybox-1.13.3-mini2440.tgz

5>>解压安装 Linux 示例程序
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/examples-20100108.tgz

6>>解压安装 vboot 源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/vboot-src-20100106.tar.gz

7>>解压安装 bootloader 源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/bootloader.tgz

8>>解压创建目标文件系统
# cd /opt/FriendlyARM/mini2440
#tar xvzf /home/lianghuiyong/Linux_share/rootfs_qtopia_qt4-20100816.tar.gz

9>>解压安装目标文件系统映象制作工具 mkyaffs2image
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/mkyaffs2image.tgz –C /

10>>解压安装LogoMaker
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/logomaker.tgz –C /

(三)定制linux内核及制作文件系统

config_mini2440_x35 – 适用于 Sony 3.5” LCD 的内核配置文件
config_mini2440_t35 – 适用于统宝 3.5” LCD 的内核配置文件
config_mini2440_l80 – 适用于 Sharp 8” LCD(或兼容)的内核配置文件
config_mini2440_n35 – 适用于 NEC3.5” LCD 的内核配置文件
config_mini2440_h43 – 适用于 4.3” LCD 的内核配置文件
config_mini2440_a70 – 适用于群创 7” LCD 的内核配置文件
config_mini2440_vga1024x768 – 适用于 VGA 显示输出(分辨率 1024x768)模块的内核
配置文件

1.配置缺省文件config_t35 (统宝240x320)

# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# cp config_mini2440_t35 .config
# make menuconfig
出现界面
不做更改,exit退出。这样做是为了生成相应配置(统宝240x320)的头文件。

2.编译内核

在/opt/FriendlyARM/mini2440/linux-2.6.32.2 目录下编译内核
#make zImage
编译结束后,会在 arch/arm/boot 目录下生成 linux 内核映象文件:zImage(zImage 可下载到开发板测试)

3.定制linux内核(根据用户手册来走一遍)

# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# make menuconfig
出现配置选项:

3.1配置cpu
主菜单-->System --> Type S3C2400 Machines --> FriendlyARM Mini2440 development board
3.2配置lcd驱动
主菜单-->Device Drivers-->Graphics support-->Support for frame buffer devices-->Backlight-->LCD select-->3.5 inch 240x320 Toppoly LCD

3.3配置触摸屏
主菜单-->Device Drivers-->Input device support-->Touchscreens-->Samsung s3c24410 touchscreen input driver

3.4配置usb鼠标和键盘
主菜单-->Device Drivers-->hid devices-->USB Human interface Device

3.5 配置优盘
主菜单-->Device Drivers-->SCSI device support--> SCSI disk

3.6配置万能驱动USB摄像头
主菜单-->Device Drivers-->Multimedia devices-->Video capture adapters -->V4L USB devices-->GSPCA based webcams-->ALi USB m 5602 Camera Driver

3.7 配置CMOS摄像头驱动
主菜单-->Device Drivers-->Multimedia devices-->Video capture adapters-->OV9650 on the s3c2440 driver

3.8配置网卡驱动
主菜单-->Netwoking support-->Networking options -->选择Unix和TCP/IP

主菜单-->Device Drivers-->Network device support-->Ethernet (10 or 100Mbit)-->
选择 <*> Generic Media Independent Interface device support
<*> DM9000 support

3.9 配置USB无线网卡驱动
主菜单-->Netwoking support-->wireless-->IEEE 802.11

主菜单-->Device Drivers-->Netwoking device support-->wireless LAN-->Wireless LAN(IEEE 802.11)-->Ralink driver support-->

3.10 配置音频驱动
主菜单-->Device Drivers-->Sound card supprt-->OSS Mixer API -->ALSA for Soc audio support-->SoC Audio for the samsung S3Cxxxx Chips

3.11 配置SD/MMC卡驱动
主菜单-->Device Drivers-->MMC/SD/SDIO card-->samsung S3C SD/MMC card

3.12 配置看门狗驱动支持
主菜单-->Device Drivers-->Watchdog Timer-->s3c2440 Watchdog

3.13 配置LED驱动
主菜单-->Device Drivers-->Character devices-->LED support for Mini2440

3.14 配置按键驱动
主菜单-->Device Drivers-->Character devices-->Buttons driver

3.15 配置PWM控制蜂鸣器驱动
主菜单-->Device Drivers-->Character devices-->buzzer driver for

3.16 配置AD转换驱动
主菜单-->Device Drivers-->Character devices-->ADC driver for

3.17 配置串口驱动
主菜单-->Device Drivers-->Character devices-->Serial drivers-->samsung S3C2440/S3C2442

3.18 如何配置RTC实时时钟驱动
主菜单-->Device Drivers-->Real Time Clock-->samsung S3C series SoC RTC

3.19 配置I2C-EEPROM驱动支持
主菜单-->Device Drivers-->I2C support -->I2C Hardware Bus support-->S3C2410 I2C Driver

3.20 配置yaff2s文件系统的支持
主菜单-->Device Drivers-->MTD-->NAND Device Support -->NAND FLASH Support
主菜单-->File systems-->Miscellaneous filesystems -->YAFFS2 file system support

3.21 配置EXT2/VFAT/ NFS等文件系统
主菜单-->File systems-->Network File Systems -->root file system on NFS

为了支持FAT32 文件系统.
主菜单-->File systems-->DOS/FAT/NT Filesystems -->VFAT (windows-95) fs support

关于mini2440 linux内核裁剪到此为止,退出后有一个是否保存提示,选择保存!

3.22 制作Linux logo

本来想使用Logomaker,结果生成的图片都是无数据的,这可能和系统内一些参数有关
使用命令方式制作logo:
在图片(open_show.png)目录下
# pngtopnm open_show.png > temp.ppm
# ppmquant 224 temp.ppm >temp2.ppm
# pnmnoraw temp2.ppm > logo.ppm
将目录下生成的logo.ppm改成linux_logo_clut224.ppm,替代linux2.6.32.2/drivers/video/logo 目录下的同名文件

‘柒’ 为什么自己编译的linux内核和驱动比系统自带的要大的多

1、配置中有很多调试选项(不一定带“debug”字样),而且位置也很分散;
2、发行版自带内核往往经过长期、仔细的配置,会比个人十几分钟的配置更全面。
这两个原因对内核及模块的大小有影响,但不大。

编译出的内核模块中包含多个运行时用不到的段(编译连接时可能要用,不是错误),发行版中一般会删掉,这很有可能是原因所在。

可以考虑用 [strip -S mod_name.ko] 来处理一下内核模块(注意:这里选项要用大写S,小写s或不写会连符号表一起删掉,导致模块无法加载),看看文件有没有变小(别对内核本身这么干)。
如果以上命令明显减小了文件,可以考虑在编译内核前定义环境变量INSTALL_MOD_STRIP为1(数字),这样make moles_install后的内核模块都是经 strip 处理过的了。

‘捌’ Linux系统下用什么工具做安装包

【享】linux安装程序

初者都知道何linux安装程序面简单说
Linux系统安装软件见两种:
种软件源代码您需要自手编译种软件安装包通用gzip压缩tar包(缀名.tar.gz)
另种软件执行程序要安装种软件安装包通RPM包(RedHat Linux Packet ManagerRedHat软件包管理器)缀名.rpm 用RPM格式打包源代码、用gzip压缩执行套装程序要您理解思路两种形式安装包

源代码编译安装

Linux软件源代码发指提供该软件所程序源代码发布形式需要用户自编译执行二进制码并进行安装其优点配置灵随意掉或保留某些功能/模块适应种硬件/操作系统平台及编译环境;缺点难度较般适合初者使用

各软件源代码包般都各软件项目主页提供载例:等

1.*.src.rpm形式源代码软件包

安装:

rpm -rebuild *.src.rpm

cd /usr/src/dist/RPMS

rpm -ivh *.rpm

卸载:

rpm -e packgename

说明:rpm --rebuild *.src.rpm命令源代码编译并/usr/src/dist/RPMS二进制RPM软件包再安装该二进制包即Packgename前所述

2.*.tar.gz/*.tgz/*.bz2形式源代码软件包

tar.gz或tgz或tar.bz2等格式结尾软件包般都源代码式发布软件安装类软件首先需要软件进行解压:

# tar zxvf filename.tar.gz

# tar xvfz filename.tgz

# tar xvf j filename.tar.bz2

解压进入解压目录:

# cd filename/

于类文档见安装步骤:配置、编译安装3步其麻烦配置所软件安装相关配置都步指定:比软件安装位置等

配置:./configure

编译:make

安装:make install

卸载:make uninstall 或手删除

说明:建议解压先阅读说明文件(ReadMeInstall)解安装需求必要需改编译配置些软件包源代码编译安装用make uninstall命令进行卸载提供功能则软件卸载必须手进行由于软件能文件散安装系统目录往往难删除干净应该编译前进行配置指定软件要安装目标路径:./configure --prefix=目录名使用rm -rf 软件目录名命令进行干净彻底卸载与其安装式相比需要用户自编译安装难适合于使用Linux已定经验般推荐初者使用

RPM格式软件包安装

RPMRedHat公司发软件包管理器使用容易RPM形式软件包进行安装、升级、卸载、验证、查询等操作安装简单卸载软件安装处目录文件删除干净推荐初者尽能使用RPM形式软件包软件包往往特定命令规范名字由文件名+版本号+.rpm组字串例apache-3.1.12-i386.rpmapache-devel-3.1.12-i386.rpm软件包名称别apacheapache-devel各支持RPM格式Linux见软件RPM包网站rpmfind.net找

1.安装

命令格式:

rpm-i(or--install) options file1.rpm ... fileN.rpm

参数:

file1.rpm...fileN.rpm指要安装RPM包文件名

详细选项:

-h(or—hash)安装输hash记号;test安装进行测试并实际安装;--percent百比形式输安装进度;--excludedocs安装软件包文档;--includedocs安装文档;--replacepkgs强制重新安装已经安装软件包;--replacefiles替换属于其软件包文件;--force忽略软件包及文档冲突;--noscripts运行预安装安装脚本;--prefix NEWPATH软件包安装由NEWPATH指定路径;--ignorearch校验软件包结构;--ignoreos检查软件包运行操作系统;--nodeps检查依赖性关系;--ftpproxy HOST用HOST作FTP代理;--ftpport PORT指定FTP端口号PORT

通用选项:

-v显示附加信息;-vv显示调试信息;--root DIRECTORY让RPMDIRECTORY指定路径作根目录预安装程序安装程序都安装目录;--rcfile FILELIST设置rpmrc文档FILELIST;--dbpath DIRECTORY设置RPM资料库所路径DIRECTORY

2.删除

命令格式:

rpm -e(or--erase) options pkg1 ... pkgN

参数:

pkg1...pkgN:要删除软件包

详细选项:

--test执行删除测试;--noscripts运行预安装安装脚本程序;--nodeps检查依赖性

通用选项:

-vv显示调试信息;--root DIRECTORY让RPMDIRECTORY指定路径作根目录预安装程序安装程序都安装目录;--rcfile FILELIST设置rpmrc文档FILELIST;--dbpath DIRECTORY设置RPM资料库所路径DIRECTORY

3.升级

命令格式:

rpm -U(or--upgrade) options file1.rpm ... fileN.rpm

参数:

file1.rpm...fileN.rpm指软件包名字

详细选项:

-h(or—hash)安装输hash记号;—oldpackage允许旧版本;--test进行升级测试;--excludedocs安装软件包文件;--includedocs安装文件;--replacepkgs强制重新安装已经安装软件包;--replacefiles替换属于其软件包文件;--force忽略软件包及文件冲突;--percent百比形式输安装进度;--noscripts运行预安装安装脚本;--prefix NEWPATH软件包安装由NEWPATH指定路径;--ignorearch校验软件包结构;--ignoreos检查软件包运行操作系统;--nodeps检查依赖性关系;--ftpproxy HOST用HOST作FTP代理;--ftpport HOST指定FTP端口号HOST

通用选项:

-v显示附加信息;-vv显示调试信息;--root DIRECTORY让RPMDIRECTORY指定路径作根目录预安装程序安装程序都安装目录;--rcfile FILELIST设置rpmrc文件FILELIST ;--dbpath DIRECTORY设置RPM资料库所路径DIRECTORY

4.查询

命令格式:

rpm -q(or--query) options

参数:

pkg1...pkgN:查询已安装软件包

详细选项:

-p PACKAGE_FILE查询软件包文件;-f FILE查询FILE属于哪软件包;-a查询所安装软件包;--whatproVides CAPABILITY查询提供CAPABILITY功能软件包;-g group查询属于group组软件包;--whatrequires CAPABILITY查询所需要CAPABILITY功能软件包

选项:

-i显示软件包概要信息;-l显示软件包文件列表;-c显示配置文件列表;-d显示文件列表;-s显示软件包文档列表并显示每文件状态-;-scripts显示安装、卸载、校验脚本;--queryformat(or--qf)用户指定式显示查询信息;--mp显示每文件所已校验信息;--proVides显示软件包提供功能;--requires(or-R)显示软件包所需功能

通用选项:

-v显示附加信息;-vv显示调试信息;--root DIRECTORY让RPMDIRECTORY指定路径作根目录预安装程序安装程序都安装目录;-rcfile FILELIST设置rpmrc文件FILELIST;--dbpath DIRECTORY设置RPM资料库所路径DIRECTORY

5.校验已安装软件包

命令格式:

rpm -V(or--verify,or-y) options

参数:

pkg1...pkgN要校验软件包名

软件包选项:

-p PACKAGE_FILE校验PACKAGE_FILE所属软件包;-a校验所软件包;-g group校验所属于组group软件包

详细选项:

--noscripts运行校验脚本;--nodeps校验依赖性;--nofiles校验文档属性

通用选项:

-v显示附加信息;-vv显示调试信息;--root PATH让RPMPATH指定路径做根目录预安装程序安装程序都安装目录;--rcfile FILELIST设置rpmrc文件FILELIST;--dbpath DIRECTORY设置RPM资料库所路径DIRECTORY

6.校验软件包文件

语:

rpm -K(or--checksig) options file1.rpm...fileN.rpm

参数:

file1.rpm...fileN.rpm软件包文件名;Checksig--详细选项;--nopgp校验PGP签名

通用选项:

-v显示附加信息;-vv显示调试信息;--rcfile FILELIST设置rpmrc文件FILELIST

7.其RPM选项

--rebuilddb重建RPM资料库;--initdb创建新RPM资料库;--quiet尽能减少输;--help显示帮助文件;--version显示RPM前版本

喜欢字符接口安装或卸载些软件包完全安装基于X-Window图形接口软件包管理程序glint, xrpm图形接口或使用KDEKPackage(单击【始】→【运行命令】其输入KPackage即启KPackage)等软件包安装、升级、卸载、验证查询通单击鼠标轻松完图所示

需要注意每RPM软件包格式软件并定独立各RPM软件包间定依赖关系删除某RPM软件包能导致别软件能使用升级删除应该注意
本载安装linux发现版本都几百兆我觉系统都没款点软件能用或者说用起问题啊我直觉安装包越越

‘玖’ 如何构建自己的 Linux 发行版

风格的书籍,深入研究了调度、内存管理、多进程和线程、文件系统,以及用户与内核之间的交互。写作 Linux 书籍的作家相对于 UNIX 作家来说有一个优势:尽管团体发生了剧变,但是 Linux 内核不可能分成几个相互竞争的分支,由于 GNU Public License (GPL)、集中式研究实验室 Open Source Development Lab (OSDL) 和 Linus Torvalds 不可动摇的地位,使得 Linux 有幸成为一个缓慢移动的目标(slow-moving target)。为什么 UNIX 内核很重要除了某些方面具有一定的相似性之外,不同的 Unix 内核并不怎么相同。各种 UNIX 风格也具有一个 Linux 所缺少的优点:所有 UNIX 风格都被假定是完全的操作系统。Linux 通常被描述为“只是一个内核”(如果有这样的定义的话,也是一个武断的定义),它给出公共功能和实现的核心,不管内核是运行在不太强大的 Pentium? II 机器上还是 Symmetric Multiprocessing (SMP) 系统上,这些公共功能和实现都不会发生本质上的改变。为了更加简化,有人可能会说,离 Linux 内核越远,就会发现更多的变化,而 UNIX 系统则趋向于是各种 UNIX/POSIX 标准的离散实现。事情并没有这么简单。检测 Linux 内核和系统级代码可能是一件很费时间的事情,并且在现实世界中会限制使用。LFS 项目旨在解决 Linux 上有限的系统级可理解性问题。关于内核需要大量的库和工具来让 Linux 系统执行最基本的任务这一事实,已经做过讨论了,但是如果一个比较熟练的用户具有一个 slim-line Linux 发行版,他不想下载几吉字节不让他优化系统、也不让他抛开所有这些麻烦且不必要的工具的二进制代码,那该怎么办?如果一个非常熟练的用户拒绝接受各种社团发行版的 苛刻条件(diktat),而想要运行一个来自 CD 的 Linux/Apache/MySQL/PHP (LAMP) 类型的应用程序堆栈,那该怎么办?LFS 可以解决这些问题。回页首Linux From ScratchLFS 项目显然建立于那些对于构成基本的 Linux 系统来说充分而不必要的源文件的基础之上。它已经超越了 Linux 内核和设备驱动程序,因为要产生一个可工作的 Linux 系统,您必须添加一个完整的编译器工具链、许多 Linux 汇编程序实用工具、glibc 系统库、系统配置工具和连接到 userland shell 访问的工具。LFS 建立在这样一个假设的基础之上,即 Linux 或 UNIX 允许具有一些脚本编写知识的用户,了解一个完全有用的系统的工作方式,而不用深入研究内核代码本身。为了了解 Linux 系统的工作方式,LFS 的创建者们确定,通过遵循模块依赖性来编译系统,可能是了解一般操作系统和特定的 Linux 的机制最自然的方式。用户掌握了编译过程之后,就可以开始消除依赖性树的那些连接到与支持操作系统基本目的无关的系统组件的部件。例如,在编译完成之后,消除编译器工具链本身是可行的。在没有全套的命令行实用工具时,可以凑合使用嵌入式 LAMP 堆栈。配置实用工具也可以被丢弃,大多数用户可以凑合着用一个而不是太多 Linux 将会支持的文件系统。Linux 部件LFS 系统的一个重要部件是,可以作为 tar ball 得到的大量源文件。文档是另一个重要部件,并且是最重要的。实际上,很有可能利用一个最新的 LFS 书籍文件并创建一个 LFS 发行版,因为 LFS 书籍中详细描述了每个下载位置和每个源文件及其依赖性的特征。用于从内核到编译器到 shell 编译每组源文件的过程都是已经写好了的,如果可能,您也可以在描述具有不同特征的系统的 LFS 书籍中找到替代的例程。LFS 系统的另一个不太可能出现在一般用户工具箱中的部件是,在基本 LFS 系统组合在一起之后引导系统所需的引导脚本。现在对 LFS 发行版的最大警告是:勇敢的发行版构建者所需的是一个可工作的 Linux 发行版,包括一个完整的编译器工具链和一套文件系统创建实用工具。自然,所有基于源代码的 Linux 发行版都需要使用各个发行版都完全不同的特定编译器版本来引导。LFS 不是该领域的惟一系统,但它是惟一允许您直接处理单个源文件的系统。大多数其他基于源代码的 Linux 系统,比如 Sourcemage 和 MyGeOS,提供一个完整的下载,建议用户使用。LFS 不作这样的假设,并且鼓励拆开 LFS 框架。预先假设起作用的 Linux 发行版已安装在非外来的(nonexotic)硬件上,即使 LFS 可能没有配置工具和脚本那么受关注。要编译 LFS,您需要准备一个分区和一个文件系统,还需要编译一个编译器和系统库。如果用手工完成的话,这是一个相当伤脑筋的过程,但是也的确可以增加您在处理其余安装方面的自信。整个系统的编译要花一小时到四天的时间,具体时间取决于底层硬件的年代和您的命令行技术熟练程度。作一个相当大的假设,如果您愿意很大程度上保留书籍安装,并使对 LFS 书籍中提议的安装的更改保持最小,您也可以使用自动化的安装例程来安装基于 LFS 的发行版。安装例程没有在 LFS 书籍中给出,但是可以在名称 Automated Linux from Scratch (ALFS) 之下作为基于 XML 的发行版得到。活动安装可以作为基于 C 的脚本得到,该脚本使用 ncurses 来模拟图形安装。该安装也叫做 nALFS 并给出一个极为灵活的包安装框架。工作需要一个起作用的 Linux 系统,并带有可以工作的 C 编译器和 XML 解析器。一个可以工作的 LFS 系统就足够了。Automated Linux From ScratchALFS 的目的是超越 LFS 本身。LFS 自己指导基于 Linux 的操作系统的内部工作,但是它不具有单个图形用户界面 (GUI)。LFS 既不允许连接到网络,也不允许连接到 Internet。ALFS 可以简化系统的扩展,例如,通过添加支持 Internet 访问的库,或者通过安装图形桌面所需的 X 库。回页首超越LFSLFS 的创建者们认识到了对其他各种基于源代码的 Linux 系统的需求。为了这些想要超越 LFS 并添加 X Window System、GNOME 和网络支持的人,创建了另一个 LFS 派生物:Beyond Linux From Scratch (BLFS)。 第三版 LFS 书籍(让我们不会忘记是在谈论书籍而非发行版),形成一个以一个角为基础的三角形:对于自动化编译和完全的基于源代码的 Linux 发行版,基本的 LFS 版本是基础。BLFS 将基本的 Linux 系统转化成一个完全的用户广泛接受的 Linux 系统。AFLS 简化基于源代码的 Linux 安装的安装和扩展。整个基于源代码的系统的编译是由一个脚本指导的,您在针对运行脚本的硬件调整脚本之后,就可以让脚本自己运行了。在您(或安装工程师)确定需要运行哪些包,也即特定的办公应用程序套件之后,您就可以容易地扩展安装顺序了。ALFS 也迟早会派上用场,因为它适用于从源代码进行网络范围的安装。回页首Hardened LFSLFS 家族的最后一个成员解决基于源代码的 Linux 的一个特别重要的方面:安全性。对于不想依赖于所选的 Linux 发行版服务器交付的补丁的那些人,安全性的普通方法是,针对所选的核心库和应用程序跟踪安全报告。对于 LFS 实现人员来说,问题有些不同:尽管不是不可能,但是也难以审计 Linux 内核代码,也许还包括集中于基于 Linux 的操作系统的内部机能的很多库和实用工具。代码审计相当费时,并且只有当补丁服务器是由专门人员集中维护的时,添加大量补丁才是明智的。但是可以取代一些为反映安全问题的新方法而重新编写过的库。一个好的例子是,通过从一个适当大的随机数池中随机分配数字,使得猜测进程标识符极为困难。OpenBSD 项目最先采用了该方法,随后,各种 UNIX 风格和 Linux 发行版都采用了该方法。一个相当新的项目叫做 Hardened Linux From Scratch (HLFS),在 Linux 下采用了这一安全方法。该项目假设相当正规地掌握了 LFS 和 BLFS 的一些部件,并使用了不会成为大多数 Linux 系统中的标准的几个实用工具和库。添加到 HLFS 中的最重要的部件可能是 Stack-Smashing Protector (SSP),通过使用 gcc 指令可以启用该功能。SSP 开发来防御 stack-smashing 攻击,这类攻击属于影响 Linux 系统的一类最常见的安全威胁。其他安全措施包括一流的随机数生成器和位置独立的可执行程序的编译,其中通常转化成静态链接对象代码的可执行代码作为共享库出现,而位置独立的可执行库通过将地址随机化可以隐藏这些地址。当然,可从 HLFS Web 站点得到大量补丁,并可查看其源代码。回页首日益壮大的 LFS 家族在许多方面,Linux 版本的 LFS 家族是一个方法,给予黑客以构造基于 Linux 的操作系统的能力。但是对于 LFS 的创建者们来说,最重要的结果似乎是:通过 LFS,所有 Linux 发行版对于所涉及的用户都成了智能的了。通过允许用户一部分一部分地构建 Linux 发行版,并帮助用户将一个基于 Linux 的操作系统看作一个由许多部件组成的系统,还可以用另外的方法构建 Linux 发行版。更一般来说,用户要更改构建 Linux 发行版的方式,不必要是程序员:只要从构建 LFS 系统学到的一点脚本编写能力就足够了。LFS 专家可以改变和扩展 Linux 发行版的完美组合,而不会影响它的基本结构。对于有人员和专家维护 Linux 系统,但没有资金从咨询机构和公司购买商业支持的机构来说,该功能特别重要。已经针对教学目的和大型网络,演示了基于 LFS 的 Linux 系统。它们也有可能用于其他领域。参考资料 您可以参阅本文在 developerWorks 全球站点上的 英文原文。
最新LFS 版本的门户是 LFS 下载站点。它提供从几个方面可用的 LFS 书籍。
LFS 家族的最新成员是 HLFS 或Hardened LFS 风格。
如果愿意,LFS 狂热者们可以创建 自动化的 安装。
如果基本的 LFS 安装还不够,那么可以继续安装更加复杂的 extended Linux From Scratch,也叫做 BLFS。
为了防御 stack-smashing 攻击,SSP 指令使得 gcc 可以编译针对该类型威胁而保护的代码。
位置独立的代码在关于 position-independent executables 的一章中作了简短介绍。
在developerWorks Linux 专区 可以找到更多为 Linux 开发者准备的资源。
访问developerWorks 开放源码专区,获得广泛的 how-to 信息、工具和项目更新,以帮助您利用开放源码技术进行开发,并将它们与 IBM 产品一起使用。
利用IBM 试用软件 革新您的下一个开放源码开发项目。可从下载或 DVD 得到试用软件。
通过参与 developerWorks blogs 加入developerWorks 社区。
关于作者Frank Pohlmann 以前研究的是中东宗教历史,后来各基金会认为研究宗教辩证历史与当今世界相去甚远,从此他便专攻自己热爱的领域 —— 免费软件。他获准成为英国的 LinuxUser and Developer 的技术编辑。您可通过 [email protected] 与他联系。关闭[x]关于报告滥用的帮助报告滥用谢谢! 此内容已经标识给管理员注意。关闭[x]关于报告滥用的帮助报告滥用报告滥用提交失败。 请稍后重试。关闭[x]developerWorks:登录IBM ID:需要一个 IBM ID?忘记IBM ID?密码:忘记密码?更改您的密码 保持登录。单击提交则表示您同意developerWorks 的条款和条件。 使用条款 当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。所有提交的信息确保安全。关闭[x]请选择您的昵称:当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。昵称:(长度在 3 至 31 个字符之间)单击提交则表示您同意developerWorks 的条款和条件。 使用条款. 所有提交的信息确保安全。为本文评分评论回页首

热点内容
scons编译时间长吗 发布:2025-03-29 13:38:48 浏览:486
物理机服务器怎么配ip 发布:2025-03-29 13:37:52 浏览:740
编程好贵呀 发布:2025-03-29 13:36:30 浏览:888
怎么把东西上传到网上 发布:2025-03-29 13:18:37 浏览:627
cmd数据库连接 发布:2025-03-29 13:18:31 浏览:890
android投影屏幕 发布:2025-03-29 13:18:22 浏览:285
qq邮箱传文件夹 发布:2025-03-29 13:12:46 浏览:443
安卓用哪个刷机工具 发布:2025-03-29 13:12:34 浏览:882
php判断php版本 发布:2025-03-29 13:11:18 浏览:439
topn算法 发布:2025-03-29 13:11:14 浏览:689