摘 要:针对便携式移动办公的需求,提出了在USB 接口的移动存储设备上构建Linux 微型桌面 *** 作系统的方法,分析了整个微型桌面系统的构成,并对构建过程中的内核编译、LFS、Squashfs、AUFS、Grub、Initrd、 XFCE等关键技术进行了研究,介绍了移植进USB 盘的方法、系统的启动过程和实现。本系统小型便捷、启动速度快、占用空间低、安全可靠的特点具有较高的应用价值。
1 引言
随着USB 3.0 标准的发布,存储容量为8GB 至128GB 的USB 接口移动存储设备成为主流。由于USB盘体积小、携带方便、同时具有热插拔功能,给移动数据存储带来了便利。而开源的Linux *** 作系统具有的高可靠性和安全性、广泛的硬件支持、灵活实用的可定制性等特点,使得Linux 桌面系统在办公应用方面也逐步受到人们的青睐。如果在USB 接口的移动存储设备上实现一个Linux 微型桌面系统,将是一个不错选择。然而,将标准的Linux 发行版系统安装在USB盘上,将占用近2G 的存储空间,其中有许多软件我们移动办公并不需要。同时,人们从数据安全性角度的考虑,希望在不使用原有宿主机 *** 作系统和数据的前提下进行便捷的移动办公。因此本文将从LFS 系统开始,在USB 盘上搭建Linux 微型桌面系统,实现 *** 作系统与办公娱乐软件的一体化,并采用squashfs 文件系统压缩技术,对整个系统进行压缩,最后通过grub和initrd 实现系统的启动。
2 微型桌面系统的构成
本文是在LFS Live CD 6.3 宿主系统上,通过LFS技术构建基本Linux 系统后,使用chroot 命令转入基本系统,完成后续整个桌面系统的搭建。
基于USB 盘的微型桌面系统构成如图1 所示,由以下几部分组成的:
①启动引导管理器:选用Grub 0.97.Grub 程序是计算机加电启动,引导到USB 盘设备后运行的第一个程序,其目的是将Linux 内核从USB 盘加载到内核中。
然后转由内核执行后续 *** 作。
②内核:作为Linux *** 作系统的核心,它负责管理进程调度、内存管理、虚拟文件系统、网络接口、进程间通信,并提供对主板、显卡、网卡、声卡、存储器、USB 设备等驱动的支持。由于是移动系统,面临硬件平台多样性的问题,所以需要将一些常用基本驱动和USB 相关驱动编译进内核,而将squashfs、aufs、声卡、显卡等相关支持以模块的形式动态加载,这样在减少内核镜像大小的同时,提高了系统启动时间。
③基本Linux 系统:包括能够正常启动字符界面的基本文件系统结构、最常用的应用程序、基本函数库和相关的配置文件。
④图形桌面系统:桌面系统采用xfce4.6.2,并安装如下应用软件:永中office 2009 办公应用软件(集Word、Excel、PowerPoint 于一体);fcitx 中文输入法;MPlayer 媒体播放软件;网络配置工具软件;远程桌面连接控件软件;QQ;Vnc;实验室自主研发的播放浏览一体化的网络浏览器Hfox[2];其他软件:图片查看器、文本编辑器、PDF 阅读器、解压缩软件等。
图1 基于USB 接口的微型桌面Linux 系统的组成
整个微型桌面系统安装完成后要占用大约1.7GB磁盘空间,通过运行mksquashfs 命令压缩成只读系统镜像system.squashfs(约495MB)。
3 关键技术
3.1 内核编译
采用版本为2.6.27.27 的Linux 内核。为使系统更精简,部分模块将不会被编译进内核:声卡驱动模块等。系统将由U 盘引导,需要将SCSI 设备、Usbcore、Usb-storage 、Loopback device support 、RAM disksupport 和Initrd 等编译到内核中。
将Squshfs、AUFS 编译成模块,通过Initrd 引导加载。
常见的硬盘接口为IDE 和SATA,在Linux 中通常将这两类硬盘标识为不同的盘符名。为了避免内核挂载U 盘根系统出现盘符名不一致的情况,需要将IDE 和SATA 硬盘中盘符统一成/dev/sdX,在内核编译时需要加如下的选项:
编译出来的内核会将这两类硬盘同等对待。从而使不同接口硬盘的盘符名在Linux 中都统一为sdX,方便本系统的挂载。
3.2 LFS 构建系统
LFS(Linux From Scratch 的缩写),是从源代码开始搭建的Linux 系统。LFS 有以下几个优点:
①LFS 是非常灵活的,可以根据自身需求定制。
②构建的LFS 系统是一个非常紧凑的系统,可以大大节省磁盘空间。
③LFS 可自定义安装相关的安全补丁,系统有保障。
本文目的是设计一款微型桌面系统,根据其小巧灵活实用的特点,与使用标准的Linux 发行版和使用精简的Linux 系统相比,LFS 更适合。
3.3 SquashFS+LZMA 只读压缩系统
构建一个小型或嵌入式Linux 系统,存储设备(软盘、U 盘等)的空间资源非常有限,因此压缩应尽可能用在各个方面。
SquashFS 是一种在Linux 下使用的只读压缩文件系统,是目前最好的压缩文件系统之一,它的目的是为通用只读文件系统使用。目前,SquashFS 压缩文件系统应用很广,已在Linux Live CD 各发行版、嵌入式系统、以及在服务器及桌面系统中都有着大量的应用。
LZMA(Lempel-Ziv-Markov chain-Algorithm 的缩写),是一个Deflate和LZ77算法改良和优化后的压缩算法,是目前最好的压缩算法之一。
SquashFS 默认的压缩算法是GZIP,本文中采用给SquashFS 打补丁,使其支持LZMA 算法压缩。实验证明,通过LZMA 算法压缩比GZIP 算法压缩率更高,而压缩时间比GZIP 算法稍长。通过对整个系统采用GZIP 和LZMA 算法进行Squashfs 压缩,在压缩时间和存储空间的比较如表1 如示。
表1 两种压缩算法的比较。
目前Linux 内核还不支持LZMA,在编译内核时需要将CONFIG_SQUASHFS*中所有值置为N;再单独将带LZMA 支持的Squshfs 编译成模块,通过动态加载方式运行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)