1. 首页
  2. 操作系统
  3. Linux
  4. 深度探索Linux操作系统-系统构建和原理解析

深度探索Linux操作系统-系统构建和原理解析

上传者: 2019-05-15 00:47:50上传 PDF文件 7.29MB 热度 21次
深度探索Linux操作系统-系统构建和原理解析3安装 Linux系统33 D Oracle VM Virtual Box管理器稳明细()回备份⑤新建(N)设置(S)启动()清除常规在运行名称: ubuntu11.10系统类型: Bunt已关闭围系蟯ubuntu11.10内存大小512MBubuntu11.10启动顺序:软驱,光驱,硬盘硬件加速:VT×AMDV嵌套分页, PAE/NX回显示显存大小12 MB远程桌面服务器:禁用②存储控制器第二DE控制器主通道(光没有盘片SATA控制器SATA端口0ubuntu11.10vdi(普通,800GB)p声音图1-2新建的虚拟裸机o Ubuntu11.10-设置回常规存储系统回显示存储树(s)属性◎存储◆DE控制器分配光驱0:(第二DE控制器主通):伊声音没有盘片□演示(Lve光盘(L⑤网络会SATA控制器明细g Ubuntu1110vd类型②UsB设备容量大小共享文件夹位置分配到选择用于虚拟驱动器的虚拟光盘或物理光驱。虚拟机将会看到插入的光盘上的数据「帮助(1暇消G确定⑨图1-3载入虚拟光盘映像在图1-3中,首先在左侧的列表中选择“存储”。在默认情况下,我们会看到虚拟机已经添加了一个空的虚拟光驱。如果Ⅴ irtualBox没有自动添加,读者手动添加即可。至于是SATA接口还是IDE接口,是没有关系的,毕竞是虚拟的。然后,选中虚拟光驱,即图1-3所示的IDE控制器下的“没有盘片”,然后单击“分配光驱”文本框旁的带有光盘图片的按4第1章准备基本环境·…钮。 Virtualbox将打开一个文件选择对话框,读者找到 Linux操作系统的光盘映像即可。这个过程与我们将物理光盘放入光驱道理完全相同。在将光盘映像放入虚拟光驱后,在图1-2所示的界面中单击工具栏上的“启动”按钮,启动 Linux系统的安装过程。鉴于现在的发行版的安装过程非常友好且全程自动化,我们就不再浪费太多版面逐一介绍。其中需要读者重点关注的是一定要从硬盘中为我们即将构建的系统划分出一块分区,基本上2GB就足够了,并将其格式化为EXT4类型,当然后面这一步也可以在系统安装完成后进行。在安装过程中,在选择安装类型( installation type)这一步,务必要选择“ Somethingelse”,如果选择了使用中文简体安装,这里显示的可能是“其他选项”,总之,要选择这个允许我们为硬盘分区的选项,如图1-4所示。s InstallInstallation typeThis computer currently has no detected operating systems. What would you like to deErase disk and install ubuntuWarning: This will delete any Files on the disk.Something elseYou can create or resize partitions yourseLF or choosemultiple partitions For Ubuntu.Continue图1-4选择安装类型单击图1-4中的继续( Continue)按钮,将出现硬盘分区的界面。基本上划分两个分区就可以了,一个用来安装操作系统,另外一个作为“实验田”,留给我们构建的操作系统用于实验。划分好的分区大致如图1-5所示。另外,还有一处需要提醒读者,在安装的后期,安装程序可能会通过网络更新系统,因为这个虚拟机上的系统只是一个桥梁,没有太多工作要做,一个基本的系统就足够了,所以完全没有必要浪费时间等待其下载更新,直接略过(skip)即可。●1.5启用自动登录5x InstallInstallation type口sda1(ext4)口sda2(ext4)6.0GB2.6GBDevice Type Mount point Format? SizeUsed/dev/sda1 ext45998 MB unknown/dev/sda2 ext42588 MB unknownNew Partition Table. Add.Change.Delete RevertDevice for boot loader installation/dev/sda ATA VBOX HARDDISK(.6 GB)Quit Back Install Now图1-5硬盘分区1.4使用root用户很多发行版由于安全原因,默认使用普通用户登录,因此当要执行一些需要特权的操作时,往往需要通过“sudo”命令使自己临时成为root用户。但是这对于我们希望研究操作系统的人来说,当然有点不方便了,所以,笔者建议使用root用户登录。既然打算使用root用户,当然要知道root用户的密码了,但是 Ubuntu默认的root用户密码是什么呢?不必理会这个问题,直接改成我们自己的即可。以普通用户登录虚拟机后,启动一个终端,执行如下命令修改root用户密码:sudo passwd root然后就可以使用root用户了,或者使用命令“su”切换用户,或者登录时使用root用户1.5启用自动登录在安装步骤中,在添加用户这一步的界面中,有一个可选项,即“自动登录”( log inautomatically),这个选项默认是没有选中的。如果没有选中,那么在启动时,每次登录都需要输入登录密码,非常麻烦。所以,建议读者开启自动登录。如果安裝时没有选中,也不必重新安装。读者可以修改登录管理器 lightd的配置文件lightdm. conf,在其中添加下面一行/etc/lightdm/lightdm conf6第1章准备基本环境autologin-user=root如果读者实在不愿意敲击键盘输入这几个字母,那么可以在系统设置中,打开“用户账户”( User Accounts),将普通账户的“自动登录”( Automatic Login)开启,然后在配置文件ghtdm conf中将多出类似下面一行:/etc/lightdm/lightdm confautologin-user=baisheng读者将其中的普通用户的登录名改为root即可。如此,即可免除每次登录时输入密码之苦,也无需手动切换用户,而是自动以root身份登录。1.6挂载实验分区假设在虚拟机上为构建的操作系统划分的分区是/ dev/sda2,那么我们使用如下命令将其挂载在根目录的vita下:mkdir /vitamount / dev/sda2/vita为了避免每次开机后都需要手工挂载,我们将其写入 fstab文件中,开机后由操作系统自动挂载:/etc/fstab/dev/sda2 /vita ext4 defaults o o1.7安装ssh服务器我们使用ssh服务从宿主系统向虚拟机复制构建的实验系统。因此,在虚拟机系统上需要安装ssh服务器。ssh服务器需要通过网络从源服务器下载。以笔者使用的Ⅴ irtualBox版本为例,默认其为虚拟机开启了网络,并且使用的是NAT模式,要访问互联网,无需设置IP、路由等,但是要自己设置DNS。或者直接可以进入设置,将虚拟机的网络改为桥接模式,这样在DHCP的网络环境中,无须做任何修改即可访问互联网。确保虚拟机可以访问互联网后,我们就可以安装sh服务器了。当然首次从源安装软件时,需要更新源。更新源和安装sh服务的命令如下apt-get updateapt-get install openssh-server●1.8更改网络模式71.8更改网络模式在Ⅴ irtualBox的各种网络模式中,允许宿主机和虚拟杋通信的常用网络模式是桥接模式和 Host-Only模式。但是桥接模式有两个问题,一个是宿主机一定要时刻连网,因为在桥接模式下,虚拟机在局域网内被模拟为与宿主机同等地位的一台主机,所以如果宿主机没有接入局域网,何谈虚拟机和宿主机通信?虽然现在网络很普及,但是毕竟会存在未接入网络的情况。另外一个问题是,我们也不想让开着ssh服务器的虚拟机暴露在互联网上。所以,笔者建议虚拟机的网络使用Host-Only模式,设置方法如图1-6所示。o Ubuntu11.10-设置旦常规网络围系统网卡1网卡2网卡3网卡4◎存储启用网络连接(E伊声音网络连接方式(A:仅主机( Host-Ol)适配器串口界面名称N: boxnetoUsB设备v高级(g回共享文件夹控制芯片①:ntep/1000桌面(82540EM)混杂模式(:拒绝MAC地址(:09002737151了接入网线(g口转发(P)从左边的列表中选择设置类别,将鼠标移到设置项上可获得更多信息。「帮助()取消(Q确定图1-6设置虚拟机网络模式在图1-6中,首先选中左侧列表中的“网络”,然后将“连接方式”更改为“ Host-Only模式确定后,宿主系统将多岀一个网络接口,用于与虚拟机通信,默认一般是 vboxneto,其地址被设置为192.168.56,1,虚拟机的地址被设置为192.168.56.101。当然读者可以自己修改,但是这没有任何必要。然后在虚拟机上我们就可以使用如下命令启动sh服务器了:/usr/sbin/sshd在宿主系统上,我们可以远程登录到虚拟机,命令如下sh192.168.56.101也可以将宿主系统的文件(比如a)复制到虚拟机,命令如下:scpa192.168.56.101:/root/8第1章准备基本环境·…1.9安装增强模式当没有安装增强模式时,虚拟机只能使用固定的分辨率,那么可能不支持全屏这样的功能。如果需要全屏功能,可以选择安装 irtualBox的增强功能来解决这一问题。在Ⅴ irtualBox的菜单中,首先选择“设备”菜单;然后在下拉菜单中选择“安装增强功能”。增强功能也在一个光盘映像中,所以如果是首次安装增强功能, Virtualbox将首先从网络上下载这个光盘映像到宿主机。下载完成后,这个光盘映像一般会被自动装入到虚拟光驱,如果没有自动挂载,需要读者手动将其放入到虚拟光驱,然后,运行其中的VBoxLinux addtions.run”即可。当然如果是为 Windows系统安装增强功能,需要运行相应的 Windows版本。1.10使用 Xephyl在宿主系统上使用 Zephyr调试桌面环境,要更方便一些。所以这一节,我们介绍如何在宿主系统上调试桌面环境。如果尚未安装 Zephyr,则首先通过如下方法安装 Zephyr:root@baisheng: apt-get install xserver-xephyr然后使用如下命令启动 Zephyrroot@baisheng:-# Xephyr -ac -screen 800x480: 1.0在另外的终端中,将 Display定向到 Zephyr:root@baisheng: -# export DISPLAY=: 1.0如此,在这个终端中,所有需要Ⅹ服务器渲染程序都将使用Ⅹ ephyra当然,为了方便,我们可以开启任意个终端,并将它们的 Display都定向到 Zephyr比如我们可以在一个终端中运行窗口管理器 winmanroot@baisheng: - export DISPLAY=: 1.0root@baisheng: /vita/build/winman/src#./winman在另外一个终端中运行任务条root@baisheng: - export DISPLAY=: 1.0rootabaisheng: /vita/build/taskbarsrc#.taskbar而在第三个终端中运行 Desktop程序root@baisheng:-# export DISPLAY=: 1.0root@baisheng: /vita/build/desktop/src#./ desktop图1-7就是在笔者的宿主机上运行 winman以及一个gedt后的 Zephyr.1.10使用 Zephyr9se Xephyr on 10.0(ctrl+shift grabs mouse and keyboard)-|口文件(F)编辑(E)查稻()索(s)工具(T)文档(D)帮助(H)新建打开复制枯贴查找替换□无标题文档1纯文本v制表符宽度:8图1-7 ZephyrHZBDOKS第2章工具链软件的编译过程中由一系列的步骤完成,每一个步骤都有一个对应的工具。这些工具紧密地工作在一起,前一个工具的输出是后一个工具的输入,像一根链条一样,因此,人们也把这些工具的组合形象地称为工具链在本书中,我们将从源码开始,逐步构建一个基本的Linx操作系统。显然,工具链是我们首先需要考虑的,因为工具链是编译包括内核在内的操作系统各个组件的基础。正所谓“物有本末,事有终始,知所先后,则近道矣。”因此,在本章中,我们并没有匆忙切入正题——构建工具链,而是首先结合具体的例子,借助宿主系统中的工具,尽可能地将工具链的工作过程更具体地展示给读者。希望通过这个探讨过程,读者可以明白工具链包含哪些组件以及这些组件的基本工作原理。然后基于GNU工具链的源码,手工从源码构建一套工具链。后面,我们将会使用这一章构建的工具链编译内核以及操作系统的各个组件。21编译过程在 Linux系统上,通常,只需使用gcc就可以完成整个编译过程。但不要被gc的名字误导,事实上,gcc并不是一个编译器,而是一个驱动程序( driver program)。在整个编译过程中,gcc就像一个导演一样,编译过程中的每一个环节由具体的组件负责,如编译过程由ccl负责、汇编过程由as负责、链接过程由ld负责。我们可以通过传递参数“y”给gcc来观察一个完整的编译过程中包含的步骤,下面是个典型的编译过程中gcc的输岀信息,为了更清楚地看到编译过程中的主要步骤,对输出信息进行了适当删减。root@baisheng: - /demo# gcc -v main.c/usr/lib/gcc/1686gnu/4. 7/ccl -quiet -v-imultiarch1386-linux-gnu main c -quiet -dumpbase main c -mtune=genericmarch=1686 -auxbase main -version -fstack-protector -o
用户评论