Gnu/Linux的学习探索
1.Gnu/Linux是一个基于POSIX和UNIX的多用户多任务 支持多线程多CPU的类UNIX的操作系统. 继承了UNIX以网络为核心的设计思想 是性能稳定的多用户网络操作系统.
1991年10月5日Linus Torvalds在usenet的comp.os.minix新闻组中发布了第一个Linux的公告宣布诞生.
基本思想:1.一切都是文件 2.每个软件都有确定的用途
2.桌面环境
GNOME:与传统UI分道扬镳之后构建了更加现代化的桌面外观Gnome Shell 以简洁著称
KED:用于UNIX和Linux工作站的网络透明的现代化桌面环境
UNITY:运行在Gnome桌面环境上并使用Gnome应用程序的所有内核
LXDE:自由桌面环境 可在UNIX上以及POSIX等兼容平台运行
XFCE:是一个在UNIX和UNIX-like操作系统上上运行的桌面环境
MATE:是许多大众发行版的默认桌面环境
Cinnamon:
Deepin:
Budgie Desktop:
备注:
*UNIX操作系统:
特性:多用户多任务的分时操作系统 支持多种处理器架构.
UNIX系统结构分为操作系统内核 系统调用(供程序开发者开发应用程序时调用系统组件) 应用程序(所有应用程序都在Shell的管理和控制下为用户服务)
大部分是由C语言编写的这使得系统易读易修改易移植
提供了功能强大的可编程的Shell语言作为用户界面具有简洁高效的特点
采用树状目录结构具有良好的安全性保密性和可维护性
采用进程对换的内存管理机制和请求调页的存储方式实现了虚拟内存管理大大提高了内存的使用效率
提供多种通信机制如:管道通信 软中断通信 消息通信 共享存储器通信 信号灯通信
UNIX-like操作系统:
AIX(Advanced Interactive eXecutive):IBM开发的UNIX操作系统
Solaris:SUN公司研制的类UNIX操作系统
HP-Ux:惠普公司以System V为基础研发的类UNIX操作系统
IRIX:硅谷图形公司以System V与BSD延伸程序为基础发展成的UNIX操作系统
Xenix:
A/UX:(Apple UNIX)苹果公司开发的UNIX操作系统
*MINIX操作系统:基于微内核架构的类UNIX操作系统
Minix最有名的学生用户是Linus Torvalds 并以Minix为样本开发了原始的Linux内核
设计哲学上Minix采用了为内核的原则而Linux和UNIX都采用红内核的概念
*GNU计划:
由Richard Stallman于1983年9月27公开发起.1985年创立自由软件基金会
目标是创建一套完全自由的操作系统GNU
GNU核心精神:自由与分享
GNU(GNU's Not Unix)通用公共许可证(GNU General Public License)缩写为GPL
*POSIX:可移植操作系统接口 POSIX标准定义操作系统应为应用程序提供的接口标准是IEEE为各种在UNIX上运行的软件定义的一系列API标准的总称 正式称呼为IEEE 1003 国际标准名称为ISO/IEC 9945.
3.演化进程梳理
4.Linux下的目录结构
1./bin二进制可执行命令 目录包含了引导启动所需的命令或普通用户所需的命令 放置系统必备的执行文件
2./boot 目录存放引导加载器(bootstrap loader)使用的文件 如果有许多核心映像目录会变得很大此时最好使用单独的文件系统 确保核心映像必须在硬盘ide的前1024柱面内
3./dev设备特殊文件 目录存放设备文件即设备驱动程序
/dev/console 系统控制台 也就是直接和系统连接的监视器
/dev/hd ide硬盘驱动程序接口
/dev/sd scsi磁盘驱动程序接口
/dev/fd 软驱设备驱动程序
/dev/stscsi
* /dev/tty 提供虚拟控制台支持
/dev/pty 提供远程登录伪终端支持
/dev/stty
/dev/mouse 访问鼠标的输入
* /dev/null 所有写入该设备的信息都将消失
* /dev/zero
* /dev/lp*
* /dev/hd*
* /dev/sd*
4./etc系统管理和配置文件 目录存放各种系统配置文件 只有root有权修改
/etc/rc或/etc/rc.d或etc/rc?.d启动的配置文件和脚本 系统初始化文件 启动或改变运行级时运行的脚本或脚本目录
/etc/passwd 用户信息文件
/etc/fdprm 软盘参数表用以说明不同的软盘格式 可用setfdprm进行设置
* /etc/fstab 启动时需要自动安装的文件系统列表 也包括swapon-a启用的swap区的信息
/etc/group
* /etc/inittab init的配置文件
* /etc/init.d 所有服务的默认启动脚本
/etc/issue 用户在登录提示符前的输出信息 通常包括系统的一段短说明或欢迎信息具体内容由系统管理员确定
/etc/magic "file"的配置文件 "file"基于它猜文件类型 包含不同文件格式的说明
/etc/motd "message of the day"的缩写 用户成功登录后自动输出 内容由系统管理员确定 常用于通告信息
* modprobe.conf
/etc/mtab 当前安装的文件系统列表 由脚本初始化并由mount命令自动更新
/etc/shadow 安装了影子口令软件的系统上的影子口令文件 影子口令文件将/etc/passwd中的口令文件移动到只对root用户可读的/etc/shadow中增加系统的安全性.
* /etc/sysconfig
/etc/login.defs login命令的配置文件
/etc/printcap
/etc/profile
/etc/securetty 确认安全终端即哪个安全终端允许超级用户登录
/etc/shells 列出可以使用的shell
/etc/termcap 终端性能数据库 说明不同的终端用用什么"转义序列"控制
* /etc/X11/
5./home系统默认用户主文件夹
6./lib标准程序设计库或动态链接共享库 目录是根文件系统上的程序所需的共享库 存放了根文件系统程序运行所需的共享文件
/lib/modules 系统核心可加载模块文件尤其恢复损坏的系统时重新引导系统时所需要的模块
7./media放置可删除的设备 包括软盘 光盘 DVD等设备暂挂于此.
8./mnt用户临时挂在其它的文件系统 系统管理员临时安装(mount)文件系统的安装点 下面可以分许多子目录
/mnt/dosa msdos文件系统软驱
/mnt/exta 使用ext2文件系统的软驱
/mnt/cdrom 光驱
9./opt存放可选的程序
10./root系统管理员的主目录
11./sbin系统管理命令 存放着系统管理员使用的管理程序. 存储二进制文件 其中的大部分文件多是系统管理员使用的基本的系统程序普通用户必要且允许时可以使用但一般不给普通用户使用
12/tmp共用的临时文件存储点 目录存放程序在运行时产生的信息和数据但引导程序后运行程序最好使用/var/tmp(可能拥有更大的磁盘空间)
13./usr (unix software resource)的缩写
/usr/X11R6 存放x window的目录
/usr/bin 主要放置应用程序工具必备的执行文件 集中了几乎所有用户命令是系统的软件库
/usr/sbin 主要放置网络管理的必备程序. 根文件系统不必要的系统管理命令
/usr/man 帮助文档
/usr/doc 放置linux文档
/usr/info
包含所有手册页 gnu信息文档和各种其它文档
/usr/indude linux下开发和编译应用程序所需的头文件
/usr/locol
/usr/lib 常用动态链接库和软件包的配置文件
/usr/src linux内核的源代码
/usr/locol/bin 本地增加的命令
/usr/locol/lib 本地增加的库根文件系统
14./var系统一般运行时要改变的数据 某些大文件的溢出区
/var/catman 包括了格式化过的帮助(man)页
/var/lib 存放系统正常运行时要改变的文件
/var/locolhttp://i.cnblogs.com/EditPosts.aspx?postid=5406476
/var/lock 锁定文件 许多程序遵循产生一个锁定文件的约定来支持它们正在使用的某个特定的设备和文件
/var/log 各种程序的日志文件 login(/var/log/wtmp log)记录所有系统登录和注销 syslog(/var/log/messages)记录存储所有核心和和系统程序信息 应定期清除.
/var/run 保存下一次系统引导前有效的关于系统的信息文件
/var/spool 放置假脱机(spool)程序的目录
/var/tmp 比/tmp文件更大的或保存时间较长的临时文件
15./proc是一个伪的文件系统 它并不存在于某个磁盘上而是由核心在内存中产生用来提供关于系统的信息 虚拟目录 是系统内存的映射可直接访问这个目录查看系统信息
/proc/x 关于进程x的信息目录 每个进程在/proc 下有一个名为自己进程号的目录
/proc/cpuinfo 存放处理器的信息
/proc/devices 当前运行的核心配置的设备驱动列表
/proc/dma 显示当前使用的dma通道
/proc/filesystems 核心配置的文件系统信息
/proc/interrupts 显示被占用的中断信息和占用者的信息以及被占用的数量
/proc/ioports 当前使用的i/o端口
/proc/kcore 系统物理内存映像
/proc/kmsg 核心输出的消息
/proc/ksyms 核心符号表
/proc/loadavg 系统"平均负载"
/proc/meminfo 各种存储器使用信息 包括物理内存和交换分区
/proc/modules 当前加载了哪些核心模块信息
/proc/net 网络协议状态信息
/proc/self 主要便于程序得到它自己的进程目录
/proc/stat 系统的不同状态
/proc/uptime 系统启动的时间长度
/proc/version
16.lost+found目录平时是空的 系统非正常关机所留下的文件存放此处
4.深度剖析
1. 开源软件与自由软件区别?
自由软件:信息技术发展引发信息革命所推动的以开放创新 共同创新为特点的创新2.0模式在IT行业的具体体现. 是一场要求尊重他人自由的道德运动
本质:不受限制地自由运行 拷贝 修改 再发行但不允许修改后和衍生的代码做为闭源的商业软件发布和销售
理念:知识共享
意义:有利于人类共同意义上的交流 合作 发展
开源软件:开放源代码并授权更改/自由再散布/衍生著作. 是一种开发模式 开源不是做慈善而是更多的人参与完善软件缺陷不抵制软件授权收费
GPL通用公共许可证主宰着开源世界
用户角度:
软件本身:
软件行业:
商业软件:
免费软件:免费提供给用户使用
常见的许可协议:
GPL:GNU通用公共许可证 使用者必须接受软件的"软件授权" GPL精神:自由 分享 互惠
BSD:BSD许可证被认为介于copyright和copyleft之间 鼓励代码共享但要尊重代码作者的著作权 允许使用者修改和重新发布代码和在BSD代码基础上开发商业软件发布销售
Apache License:非营利开源组织Apache采用的协议 鼓励代码共享和尊重原作者的著作权同样允许代码修改再发布为开源或商业软件
<!------------------------------------------------------------------------------------------------------->
圆梦园:年轻人只为书写一个梦. peter.ali
第一课题: