论文可运行mysql的最小linux系统的搭建.docx
- 文档编号:16734261
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:48
- 大小:1.80MB
论文可运行mysql的最小linux系统的搭建.docx
《论文可运行mysql的最小linux系统的搭建.docx》由会员分享,可在线阅读,更多相关《论文可运行mysql的最小linux系统的搭建.docx(48页珍藏版)》请在冰点文库上搜索。
论文可运行mysql的最小linux系统的搭建
论文编号__________________________
河南中医学院
ChinaHenanUniversityofTraditionalChineseMedicine
本科毕业论文
论文题目:
可运行mysql的最小linux系统的搭建
姓名:
汤晨_
院系:
信息技术学院
专业:
计算机科学与技术
年级:
2012级
学号:
_2012187008_
指导老师:
_李瑞昌
评定成绩:
年月日
毕业论文(设计)诚信声明书
本人声明:
我将提交的毕业论文(设计)《》是我在指导教师指导下独立研究、写作的成果,论文中所引用他人的无论以何种方式发布的文字、研究成果,均在论文中加以说明;有关教师、同学和其他人员对本文的写作、修订提出过并为我在论文中加以采纳的意见、建议,均已在我的致谢辞中加以说明并深致谢意。
论文作者(签字)时间:
年月日
指导教师已阅(签字)时间:
年月日
毕业论文(设计)版权使用授权书
本毕业论文《》是本人在校期间所完成学业的组成部分,是在河南中医学院教师的指导下完成的,因此,本人特授权对河南中医学院可将本毕业论文的全部或部分内容编入有关书籍、数据库保存,可采用复制、印刷、网页制作等方式将论文文本和经过编辑、批注等处理的论文文本提供给读者查阅、参考,可向有关学术部门和国家有关教育主管部门呈送复印件和电子文档。
本毕业论文无论做何种处理,必须尊重本人的著作权,署明本人姓名。
论文作者(签字)时间:
年月日
指导教师已阅(签字)时间:
年月日
目录
摘要I
ABSTRACTII
1绪论1
1.1LINUX简介1
1.2Linux的研究现状2
1.3实验的基本环境3
1.4本文的主要研究内容3
2linux内核的裁剪4
2.1什么是内核4
2.2内核的主要组成部分4
2.3Linux内核源代码5
2.4查看本机硬件设备信息11
2.5编译内核12
2.6内核的编译17
2.7启动新内核17
2.8本章小结18
3LINUX系统引导过程19
3.1LINUX系统启动简介19
3.2BIOS(BasicInput/OutputSystem)自检19
3.3启动GRUB/LILO20
3.4介绍BootLoader21
3.5介绍Kernel初始化时所做的工作21
3.6介绍init这个程序在初始化时做了哪些工作22
3.7通过/etc/inittab文件进行初始化22
3.8本章小结24
4Linux的精简与定制25
4.1添加一块U盘25
4.2提供内核25
4.3准备initrd26
4.4安装GRUB27
4.5制作根文件系统28
4.6常用命令的制作30
5linux环境下安装并裁剪mysql32
5.1安装mysql32
5.2裁剪MySQL到目标机32
5.3实验结果34
6总结及展望35
6.1总结35
6.2展望35
参考文献36
致谢37
可运行mysql的最小linux系统的搭建
汤晨
摘要
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统.Linux操作系统诞生于1991年的10月5日(这是第一次正式向外公布的时间)。
Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。
Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机.Linux是一个一体化内核(monolithickernel)系统。
设备驱动程序可以完全访问硬件。
Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设置,并在系统运行期间可直接装载或卸载。
本文在进行该课题需要从分析Linux系统内核和文件系统入手,结合Mysql的需求对系统进行适当的裁剪和改动,在字符界面的前提下,要提供基本的LINUX的命令的支持,如ls、cd、vi、cat、rpm等。
还应包括对基本硬件(显示器,鼠标,键盘,磁盘等)的支持。
课题最终要求实现最小能够运行Linux系统,把系统安装到U盘上,然后在上面安装mysql5.0。
关键词:
linux内核精简文件系统bootloaderMYSQL
BuildtheminimumLinuxsystemrunningMySQL
TangChen
ABSTRACT
LinuxisafreetouseandfreedisseminationofUnix-likeoperatingsystemisbasedonPOSIXandUNIXmulti-user,multi-tasking,multi-threadingandmulti-CPUsupporttheoperatingsystem.Linuxoperatingsystemwasbornin1991,October5(thisisthefirstofficialannouncementoutoftime).Linux,therearemanydifferentversionsofLinux,buttheyallusetheLinuxkernel.Linuxcanbeinstalledinavarietyofcomputerhardwaredevices,suchasmobilephones,tabletcomputers,routers,videogameconsoles,desktopcomputers,mainframesandsupercomputers.Linuxkernelisanintegrated(monolithickernel)systems.Devicedriverscanhavefullaccesstothehardware.Linuxdevicedriverscanbeeasilywithinamodular(modularize)intheformset,andcanbedirectlyloadedorunloadedduringsystemoperation.
ThisarticlerequirestheanalysisofthesubjectduringtheLinuxkernelandfilesystem,combiningMysqldemandonthesystemandmaketheappropriatechangesincroppinginthepremiseofthecharacterinterface,toprovidebasicsupportforLINUXcommandssuchasls,cd,vi,cat,rpm,etc..Itshouldalsoincludesupportforbasichardware(monitor,mouse,keyboard,disk,etc.).TheminimumrequiredtoachievetheultimatetasktorunaLinuxsystem,thesystemisinstalledontheUdisk,andtheninstallontopmysq5.0.
Keywords:
linuxkernelfilesystemtostreamlinethebootloaderMYSQL
1绪论
1.1LINUX简介
1.1.1研究背景
Linux作为最早开发的操作系统之一越来越受到大家的欢迎,国际上有名的硬、软件厂商都与之结盟、捆绑。
这是因为它作为自由软件有两个特点:
一是它免费提供源码,二是爱好者可以按照自己的需要自由修改、复制和发布程序的源码,并公布在Internet上。
这就吸引了世界各地的操作系统高手为Linux编写各种各样的驱动程序和应用软件,使得Linux成为一种不仅只是一个内核,而且包括系统管理工具、完整的开发环境和开发工具、应用软件在内,用户很容易获得的操作系统。
由于可以得到Linux的源码,所以操作系统的内部逻辑可见,这样就可以准确地查明故障原因,及时采取相应对策。
在必要的情况下,用户可以及时地为Linux打“补丁”,这是其它操作系统所没有的优势。
第二,究其根本,Linux是一个UNIX系统变种[1],因此也就具有了Unix系统的一系列优良特性,Unix上的应用可以很方便地移植到Linux平台上,这使得Unix用户很容易掌握Linux。
1.1.2GUN和Linux的关系
GUN是RichardStallman在1984年组织开发的一个完全基于自由软件的软件体系结构,还有叫公共通用许可证的东西产生,英文叫做GeneralPublicLicense,简称GPL.Linux以及相关modules的大量软件在GPL的推动下开发和发布.Stallman一直在传播自由软件的好处,他创立的GUN梦想是:
“自由的思想,而不是免费的午餐”。
在Linux中的Free,其实是自由的意思,而不是免费的意思。
Stallman在传播自由软件的同时,也自己创造了像GCC和GDB这样功能强大的软件,在他的精神倡导下,目前OSS界已经出现了像Perl、Apache、nginx、TCP/IP等地经典软件。
那么这和Linux又有什么关系呢,大家都知道Linux名称来源于有个叫Linus的人,他是一个理想主义者,而Linux的第一个产品Linux1.0就是完全按照自由扩散的版权进行扩散的。
他要求所有Linux的内核源代码必须开放。
而且任何人不得从Linux交易中获利,其实Linux还不能算是产品。
这种绝对的自由软件阻碍了Linux的发展,因为这限制了Linux以拷贝或者CD-ROM等形式的发布的可能,也限制了好些商业公司参与Linux的进一步开发和提供技术支持的目的。
后来Linus转向GPL版权,这样规定了Linux各项许可权以后允许用户出售自己的程序拷贝[2]。
从此,很多商业软件大公司,加入到了原先完全由业余爱好者和网络黑客参与的自由软件运动中来,出现了许多Linux的发行版本,Linux内核功能和GPL的结合,驱动很多软件开发人员加入其中,并参加内核开发工作。
并将GUN项目的C库、gcc、emacs、bash等移值到Linux内核上。
Linuxos的很多重要组成部分直接来自GUN项目,Linuxos的另外一些重要组成部分则来自加利福利亚大学Berkeley分校的BSDUnix和麻省理工学院的Xwindow系统项目。
1.2Linux的研究现状
随着开源软件在世界范围内影响力的日益增强,Linux在服务器、桌面、行业定制等领域获得了长足发展,尤其在服务器领域,Linux已经获得了令人瞩目的成就。
1.2.1Linux发展现状分析
在高端服务器操作系统领域,随着开源软件在世界范围内影响力日益增强,Linux服务器操作系统在整个服务器操作系统市场格局中占据了越来越多的市场份额,并且形成了大规模市场应用的局面。
Linux引起了全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量。
目前国外服务器厂商使用的服务器操作系统主要包括SUN的SOLARIS、IBM的AIX、HP的HP-UX,其中UNIX系列的产品几乎占据了大部分服务器高端市场和部分服务器中低端市场,WINDOWS系列占据了较大部分服务器中低端市场,LINUX由于其成本优势在中低端市场也有良好的表现,并且市场份额上升幅度很大。
目前国内的服务器操作系统情况基本类似于国外,高端服务器操作系统市场基本为UNIX平台所占据,由于国内中低端服务器的市场保有量较大,所以WINDOWS系列产品的实际市场占有率相对较国外高,约占40%,LINUX由于低成本的特点,也取得了大约35%的市场份额。
从2001年以来,基于Linux的服务器操作系统逐步发展壮大。
国内几个主要的Linux厂商和科研机构,国防科技大学、中标软件、中科红旗等先后推出了Linux服务器操作系统产品,并且已经在政府、企业等领域得到了应用。
从系统的整体水平来看,Linux服务器操作系统与高端Unix系列相比差距越来越小,在很多领域已经实现了共存的局面。
1.2.2目前主流产品
目前主流服务器产品:
RHEL是目前Linux服务器产品的标杆,在国内和国际上都占据着主要的Linux服务器市场份额。
RHEL产品功能全面,产品认证齐全,用户的接受度比较高。
RHEL主要依靠技术服务和产品维护获取盈利。
目前流行的桌面操作系统主要包括两大类:
一类是主流商业桌面系统,包括微软的Windows系列、Apple的Macintosh等;第二类基于自由软件的桌面操作系统,特别是Linux桌面操作系统。
近年来,特别在国内市场,Linux桌面的发展趋势非常迅猛。
国内如中标软件、红旗等系统软件厂商推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域得到了广泛应用。
国外的Novell、Sun公司也相继推出了基于Linux的桌面系统。
但是,从系统的整体功能、性能来看,Linux桌面系统与Windows系列相比还有一定的差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件的丰富程度等方面。
1.3实验的基本环境
(1)VMware7.0/windows7
(2)主机系统RedhatEnterpriseLinux
(3)系统内核版本linux-2.6.38
1.4本文的主要研究内容
Linux系统内核和文件系统入手,结合Mysql的需求对系统进行适当的裁剪和改动。
在字符界面的前提下,要提供基本的LINUX的命令的支持,如ls、cd、vi、cat、rpm等。
还应包括对基本硬件(显示器,鼠标,键盘,磁盘等)的支持。
2linux内核的裁剪
2.1什么是内核
内核,即操作系统。
它为底层的可编程部件提供服务,为上层应用程序提供执行环境。
内核裁剪就是对这些功能进行裁剪,选取满足特定平台和需求的功能。
不同的硬件平台对内核要求也不同,因此从一个平台到另一个平台需要对内核进行重新配置和编译。
操作系统从一个平台过渡到另一个平台称为移植[3]。
Linux是一款平台适应性且容易裁剪的操作系统,因此Linux在嵌入式系统得到了广泛的应用。
本章将详细讲解内核裁剪与移植的各项技术。
2.2内核的主要组成部分
Linux内核主要的5个部分:
进程调度、内存管理、虚拟文件系统、网络接口、进程通信。
在系统移植的时候,它们是内核的基本元素,这5个部分之间的关系,如下所示。
图2.1Linux内核子系统及其之间的关系
由调度程序选择最值得运行的进程。
可运行进程实际是仅等待CPU资源的进程,如果某个进程在等待其他资源,则该进程是不可运行进程。
Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。
内存管理(MM):
允许多个进程安全地共享主内存区域。
Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码、数据和堆栈的总量可以超过实际内存的大小,操作系统只将当前使用的程序块保留在内存中,其余的程序块则保留在磁盘上。
必要时,操作系统负责在磁盘和内存之间交换程序块。
内存管理从逻辑上可以分为硬件无关的部分和硬件相关的部分。
硬件无关的部分提供了进程的映射和虚拟内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。
虚拟文件系统(VirtulFileSystemVFS):
隐藏了各种不同硬件的具体细节,为所有设备提供了统一的接口,VFS还支持多达数十种不同的文件系统,这也是Linux较有特色的一部分。
虚拟文件系统可分为逻辑文件系统和设备驱动程序。
逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。
网络接口(NET):
提供了对各种网络标准协议的存取和各种网络硬件的支持。
网络接口可分为网络协议和网络驱动程序两部分[4]。
网络协议部分负责实现每一种可能的网络传输协议,网络设备驱动程序负责与硬件设备进行通信,每一种可能的硬件设备都有相应的设备驱动程序。
进程间通信(IPC):
支持进程间各种通信机制。
从图2.1可以看出,处于中心位置的是进程调度,所有其它的子系统都依赖于它,因为每个子系统都需要挂起或恢复进程。
一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。
例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。
其它子系统(内存管理,虚拟文件系统及进程间通信)以相似的理由依赖于进程调度。
2.3Linux内核源代码
Linux内核是一种单内核模式的系统,因此,内核中所有的程序几乎都有紧密的联系,它们之间的依赖和调用关系非常密切。
所以在阅读一个源代码文件时往往需要参阅其他相关的文件。
因此有必要在开始阅读内核源代码之前,先熟悉一下源代码文件的目录结构和安排。
当我们使tar命令将linux-2.6.28.tar.gz解开时,内核源代码文件被放到了linux/目录中。
其目录结构如图2.2所示。
在图2.2中所显示的模块结构,代表了一种工作分配单元,利用这种结构,我们期望LinuxTorvalds能维护和增强内核的核心服务,即,init/,kernel/,mm/及 ipc/,其它的模块drivers,fs,arch及net也可以作为工作单元。
图2.2Linux内核源代码目录结构
图2.3Linux源代码的分布结构
linux目录是源代码的主目录,在该主目录中除了包括所有的14个子目录以外,还含有唯一的一个Makefile文件[5]。
该文件是编译辅助工具软件make的参数配置文件。
make工具软件的主要用途是通过识别哪些文件已被修改过,从而自动地决定在一个含有多个源程序文件的程序系统中哪些文件需要被重新编译。
因此,make工具软件是程序项目的管理软件。
linux目录下的这个Makefile文件还嵌套地调用了所有子目录中包含的Makefile文件。
这样,当linux目录(包括子目录)下的任何文件被修改过时,make都会对其进行重新编译。
因此为了编译整个内核所有的源代码文件,只要在linux目录下运行一次make软件即可。
2.3.1引导启动程序目录boot
boot目录中含有3个汇编语言文件,是内核源代码文件中最先被编译的程序。
这3个程序完成的主要功能是当计算机加电时引导内核启动,将内核代码加载到内存中,并做一些进入32位保护运行方式前的系统初始化工作。
bootsect.S程序是磁盘引导块程序,编译后会驻留在磁盘的第一个扇区中(引导扇区,0磁道(柱面),0磁头,第1个扇区)。
setup.s程序主要用于读取机器的硬件配置参数,并把内核模块system移动到适当的内存位置处。
head.s程序会被编译连接在system模块的最前部分,主要进行硬件设备的探测设置和内存管理页面的初始设置工作。
2.3.2文件系统目录fs
fs/目录包含了所有文件系统的代码,如:
ext2vfat模块的代码等等。
该目录中的程序可以划分成4个部分:
高速缓冲区管理、低层文件操作、文件数据访问和文件高层函数。
图2.4fs目录中各程序中函数之间的引用关系
对于文件系统,我们可以将它看成是内存高速缓冲区的扩展部分。
所有对文件系统中数据的访问,都需要首先读取到高速缓冲区中[6]。
本目录中的程序主要用来管理高速缓冲区中缓冲块的使用分配和块设备上的文件系统。
管理高速缓冲区的程序是buffer.c,而其他程序则主要都是用于文件系统管理。
在file_table.c文件中,目前仅定义了一个文件句柄(描述符)结构数组。
ioctl.c文件将引用kernel/chr_drv/tty.c中的函数,实现字符设备的I/O控制功能。
exec.c程序主要包含一个执行程序函数do_execve(),它是所有exec()函数簇中的主要函数。
fcntl.c程序用于实现文件I/O控制的系统调用函数。
read_write.c程序用于实现文件读/写和定位3个系统调用函数。
stat.c程序中实现了两个获取文件状态的系统调用函数。
open.c程序主要包含实现修改文件属性和创建与关闭文件的系统调用函数。
2.3.3头文件主目录include
头文件目录中总共有32个.h头文件。
其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个。
a.out头文件,定义了a.out执行文件格式和一些宏。
(1)头文件目录
常数符号头文件,目前定义了i节点中i_mode字段的各标志位。
字符类型头文件,定义了一些有关字符类型判断和转换的宏。
错误号头文件,包含系统中各种出错号。
文件控制头文件,用于文件和描述符的操作控制常数符号的定义。
信号头文件,定义信号符号常量,信号结构和信号操作函数原型。
标准参数头文件,以宏的形式定义变量参数列表。
主要说明了一个类型(va_list)和3个宏(va_start,va_arg和va_end),用于vsprintf、vprintf、vfprintf函数。
标准定义头文件,定义了NULL,offsetof(TYPE,MEMBER)。
字符串头文件,主要定义了一些有关字符串操作的嵌入函数。
终端输入输出函数头文件,定义控制异步通信口的终端接口。
时间类型头文件,主要定义了tm结构和一些有关时间的函数原形。
Linux标准头文件,定义了各种符号常数和类型,并声明了各种函数。
用户时间头文件,定义了访问和修改时间结构以及utime()原型。
(2)体系结构相关头文件子目录include/asm
这些头文件主要定义了一些与CPU体系结构密切相关的数据结构、宏函数和变量。
共4个文件。
分别是
(3)Linux内核专用头文件子目录include/linux。
(4)系统专用数据结构子目录include/sys
文件状态头文件,含有文件或文件系统状态结构stat{}和常量。
定义了进程中运行时间结构tms以及times()函数原型。
类型头文件,定义了基本的系统数据类型。
系统名称结构头文件。
等待调用头文件,定义系统调用w
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 论文 运行 mysql 最小 linux 系统 搭建