linux操作系统实验四--打造自己的Linux发行版

准备工作

1.安装QEMU
2.编译内核
3.制作根系统目录

整合busybox

busybox简介

           BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例如grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。
            BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的或嵌入式系统。

1.安装busybox
1)下载源代码:http://www.busybox.net/
        得到busybox-1.20.0.tar.bz2稳定版。
        解压
tar jxvf  busybox-1.20.0.tar.bz2

2)   终端进入目录执行
    
  cd ./busybox-1.20.0
 make menuconfig
     勾选下面的选项:
     Build Options
     Build BusyBox as a static binary (no shared libs)
     这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作.
3)编译busybox
make

报错:
networking/lib.a(inetd.o): In function `unregister_rpc':
inetd.c:(.text.unregister_rpc+0x17): undefined reference to `pmap_unset'
networking/lib.a(inetd.o): In function `register_rpc':
inetd.c:(.text.register_rpc+0x5a): undefined reference to `pmap_unset'
inetd.c:(.text.register_rpc+0x81): undefined reference to `pmap_set'
networking/lib.a(inetd.o): In function `prepare_socket_fd':
inetd.c:(.text.prepare_socket_fd+0x8a): undefined reference to `bindresvport'
collect2: ld 返回 1
make: *** [busybox_unstripped] 错误 1
通过google:
好像是和glibc版本过高有关,找不到相关函数,这个好办,make menuconfig 去掉如下选项
Networking Utilities  —> [ ] inetd (Internet 超级服务器 )
4)安装busybox
make install
安装好之后在busybox-1.20.0文件夹下出现了一个_install文件夹,编译完成。
如下图:


2.整合根文件系统
linux操作系统实验四--qemu的安装和根目录系统制作之前建立的init文件夹目录下已经存在了rootfs文件夹目录了。
新的文件目录图:

1)进入init目录:
cd ./init
2) 挂载镜像
sudo mount -o loop  initrd.img rootfs/
3)将busybox添加进来

cd ../busybox-1.20.0/
sudo make CONFIG_PREFIX=../init/rootfs/ install
4)查看rootfs中的结构
ls rootfs
5)卸载分区
sudo umount rootfs/
下面介绍下linux系统下的目录: http://wenku.baidu.com/view/718526c9da38376baf1faeee.html
/bin 二进制可执行命令
/dev 设备特殊文件
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本
/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示。
/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件。
/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序。
/tmp 公用的临时文件存储点。
/root 系统管理员的主目录。
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。
/lost+found 这个目录平时是空的,系统非正常关机而留下的“无家可归”的文件。
/proc 虚拟的目录,是系统内存的映射,可以直接访问这个目录来获取系统的信息。
/var  某些大文件的溢出区,比如说各种服务的日志文件。
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。
......
通常情况下,根文件系统所占用空间一般应该比较小,因为其中的绝大部分文件都不需要经常改动,而且包括严格的文件和一个小的不经常改变的文件系统不容易损坏。
除了可能的一个叫/vmlinux标准的系统引导影像之外,根目录一般不包含任何文件。

上面五步的过程如下图:

最后生成的initrd.img文件就是根文件系统。
6)qemu测试
qemu -kernel ../LinuxKernel/linux-3.9/arch/x86/boot/bzImage -initrd initrd.img -append "root=/dev/ram init=/bin/sh"

7)还可以进行一些简单命令的测试:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、 实验目的 1、通过实验了解和熟悉Linux网络服务; 2、掌握Linux下建立Web服务器; 3、掌握Linux下建立FTP服务器。 二、 开发工具和运行环境 1、虚拟机VMware 2、Linux操作系统 三、 实验内容 1、了解和熟悉Linux网络服务 了解NFS网络文件系统,NFS网络文件系统架设及挂载方法,Web服务器的架设方法,FTP服务器的架设方法及访问方法,Samba服务器的架设方法。 2、Linux下建立Web服务器 (1)Apache 服务器的安装及启动 ●检测与安装 Apache rpm -qa | grep httpd ●如果没有检测到软件包,需要进行安装,在安装目录中,执行如下命令: rpm -ivh httpd-tools*. Rpm rpm -ivh mailcap-2.1.31-2.el6.noarch.rpm rpm - ivh httpd-2*. rpm rpm -ivh httpd-manual-2.*.rpm ●重新启动/停止/启动Apache服务: systemctl restart/stop/start httpd.service 或service httpd restart/stop/start ●查看 Apache服务器的运行状态: systemctl status httpd. service 或service httpd status ●测试 Apache服务器运行状态: 在图形界面打开火狐浏览器输入http://127. 0.0.1呈现测试页(CentOS 用户可以在终端使用lynx 浏览器打开,如没有安装,则使用rpm在光盘中安装lynx 浏览器) 在/var/www/html目录下创建test. html页面,使用vi编辑保存内容,重启apache服务 在火狐浏览器输入http://127. 0. 0.1/test. html查看test. html内容 (2)Apache 服务器的配置 Apache主要配置文件为httpd.conf,存储位置在/etc/httpd/conf目录下 (3)个人Web站点配置 RedHat方式: a:修改配置文件,使用vi编辑器修改主配置文件 /etc/httpd/conf/httpd. conf,修改如下配置,去掉原文中的注释符号 UserDir disable root//基于安全 考虑,禁止root用户使用自己的站点.UserDir public. _html//设 置对每个用户的Web站点目录 Allow0verride FileInfo AuthConfig Limit Opt ions MultiViews Indexes SymLinkIfOwnerMatch Inc ludeNoExec Order allow, deny Allow from all Order deny, allow Deny from all 保存文件退出,重启httpd服务 b:用户创建个人Web站点 从root用户身份切换成user1用户(如果没有普通用户,需要先创建普通用户): 在user1主目录下面创建个人站点目录$mkdir public_ html 到/home目录下修改user1目录权限 $chmod 711 user1 进入到public. _html 目录下使用vi创建index. html文件,保存退出重启httpd服务 在浏览器中输入网址http://127.0.0.1/ user1/index. html,查看效果======= CentOS方式: a:修改配置文件,使用vi编辑器修改/etc/httpd/ conf.d/userdir.conf修改成如下配置信息 UserDir disable root//基于安全 考虑,禁止root用户使用自己的站点 UserDir public_ html//设置对每个用户的Web站点目录 Allowverride None #修改为 None options None#修改为None Require method GET POST OPTIONS b:用户创建个人Web站点

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值