《边学边干-Linux内核指导》学习笔记一
深入理解linux内核笔记1
郑重声明:未经本人允许,不得用于商业或非商业的转载和使用,如有需要请联系:yrj1978@hotmail.com引子为什么要写这个笔记:1,这本书的中文版翻译了太垃圾,没法阅读。
阅读英文原版,可以很好的理解作者的思路。
作此笔记备忘2,一直以来学习LINUXkernel的知识缺乏系统化,借对这本书的学习,系统化的学习一下LINUXkernel。
3,自己一直在做一个toosmall,toosimple的单进程,特权模式,64bit保护模式的称不上OS的OS,已经做完了bootloader,构思kernel的实现的时候,困惑在内存管理的实现上,阅读这本书,希望能有利于自己的OS的编写。
4,克服惰性,多读书,希望一天能阅读5页,争取半年内阅读完这本原版700多页的巨著。
不足:我不可能完全理解LINUX内存管理的精髓,肯定有很多地方理解错误。
希望大家能够指正,以便提高,谢谢。
学习方法:可能您第一次阅读的时候很多地方都不理解,不用担心。
那您可能需要阅读一些文件系统的知识。
或者阅读全部笔记后,再回头阅读,有些地方您就理解了。
言归正传:一、概要可用工具CodeViz:生成代码调用关系图的工具,这个工具我现在还没有去使用,有兴趣的可以自己试试去建立调用关系图。
http://www.csn.ul.ie/ ̄mel/projects/codeviz/Linuxcrossreference(LXR):以web的方式阅读和查找LINUX内核源代码的工具。
这个工具安装相当麻烦,我建议直接到它的官方网站直接读代码。
http://lxr.linux.no/linux+v2.6.24/模块LINUX内存管理代码模块主要分为4个部分:1.Outofmemory代码在mm/oom_kill.c貌似用于杀进程的时候对内存的操作2.虚拟内存的分配代码在mm/vmalloc.c3.物理内存页面分配代码在mm/page_alloc.cVMA(virtualmemoryaddresses)的创建和进程内的内存区域的管理4.这些模块,贯穿与其他kernel代码之中,形成更复杂的系统模块,如页面替换策略,buffer的输入输出等中间插段广告Linux文化T恤,淘宝销售,有兴趣的可以购买。
linux笔记全(无图版)
linux笔记全(⽆图版)1、ls 查看当前⽬录下的所有内容⿊⾊的是⽂件,蓝⾊的是⽂件夹,也就是⽬录2、rm -f anaconda-ks. cfg 彻底删除⽂件(如不确定,则需要先保存备份,也就是快照)3、ifconfig 查看⽹卡的配置信息(ip地址等)4、ifconfig ens33 192.168.18. 201 /24(⽹络地址/⼦⽹掩码)更改ip地址5、systemctl restart network 重启⽹络服务6、桥接模式,直接可以进⾏通信(同⼀⽹段,配置ip)7、能不能通信的2个条件:在同⼀个物理⽹络内,ip地址也在同⼀⽹段内8、仅主机模式,虚拟机和物理机不能进⾏通信,相当于虚拟机和物理机进⾏了隔离与笔记本(真机)通信截图9、NAT模式,⾃动分配⽹络地址和⽹关,以及dns,可以直接上⽹可以访问互联⽹内的主机,但互联⽹内的主机不能访问本机(max特点)10、route -n 查看⽹关11、cat /etc/resolv. conf 查看dns(注意cat后⾯有⼀个空格,空格不可少)12、验证nat模式可以直接上⽹13、shell:通常指linux的字符界⾯,图形界⾯和字符界⾯都属于shell,但图形界⾯的shell常称为gui,字符界⾯的shell常称为cli14、cat /etc/shells 查看⽂件内容(linux⾥⾯提供的所有的shell)15、linux默认使⽤的shell是bash的shell16、echo $SHELL 查看当前使⽤的shell17、shell默认指的是bash,它的应⽤是最⼴泛的18、linux是彻底的多⽤户多任务,它可以直接多个⽤户同时进⾏操作19、ctrl+alt+f2-f6 对应5个shell ctrl+alt+f1 开始图形界⾯shell 作⽤:如何开始shell(也就是如何打开命令界⾯)20、虚拟终端的缩写为tty, 在字符界⾯下执⾏“tty"命令就可以显⽰⽤户⽬前所在的终端编号(终端名称)。
教你如何学习linux内核
教你如何学习linux内核毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件。
基本上,Linux 内核中每一个目录下边都会有一个Kconfig文件和一个Makefile文件。
对于一个希望能够在Linux内核的汪洋代码里看到一丝曙光的人来说,将它们放在怎么重要的地位都不过分。
我们去香港,通过海关的时候,总会有免费的地图和各种指南拿,有了它们在手里我们才不至于无头苍蝇般迷惘的行走在陌生的街道上。
即使在内地出去旅游的时候一般来说也总是会首先找份地图,当然了,这时就是要去买了,拿是拿不到的,不同的地方有不同的特色,只不过有的特色是服务,有的特色是索取。
Kconfig和Makefile就是Linux Kernel迷宫里的地图。
地图引导我们去认识一个城市,而Kconfig 和Makefile则可以让我们了解一个Kernel目录下面的结构。
我们每次浏览kernel寻找属于自己的那一段代码时,都应该首先看看目录下的这两个文件。
利用Kconfig和Makefile寻找目标代码就像利用地图寻找目的地一样,我们需要利用Kconfig和Makefile来寻找所要研究的目标代码。
比如我们打算研究U盘驱动的实现,因为U盘是一种storage设备,所以我们应该先进入到drivers/usb/storage/目录。
但是该目录下的文件很多,那么究竟哪些文件才是我们需要关注的?这时就有必要先去阅读Kconfig和Makefile文件。
对于Kconfig文件,我们可以看到下面的选项。
config USB_STORAGE_DATAFABbool "Datafab Compact Flash Reader support (EXPERIMENTAL)"depends on USB_STORAGE && EXPERIMENTALhelpSupport for certain Datafab CompactFlash readers.Datafab has a web page at </>.显然,这个选项和我们的目的没有关系。
linux操作系统课程学习笔记,我的Linux学习笔记·Linux操作系统基础
linux操作系统课程学习笔记,我的Linux学习笔记·Linux操作系统基础今天的笔记主要是关于Linux操作系统根底的相关学问。
那就从我⾯前的电脑开端讲起。
计算机和操作系统计算机主要包括五个部分:运算器,控制器,存储器,输⼊设备和输出设备。
通常,运算器,控制器再加上其他⼀些部件如寄存器等构成了我们通常所说的CPU(central processing unit),存储器则主要是内存。
运算器,控制器和存储器可以实现数据的处理.但是数据从何⽽来,运算之后的结果去往哪⾥?这就需要输⼊设备和输出设备(I/O设备)。
我们通常⽤到的输⼊设备包括键盘⿏标等,输出设备为屏幕,打印机等。
值得⼀提的是,计算机中有个叫做硬盘的东西,它并不是存储器,⽽是⼀个I/O设备。
在将数据读取到内存时,它是⼀个输⼊设备;⽽将结果保存到磁盘时,它就变成了⼀个输出设备。
这么多设备整合在⼀起,就成了⼀台计算机。
它可以接收我们的指令(键盘⿏标),通过运算(CPU),把结果展⽰给我们(屏幕,硬盘等)。
但是这么多硬件是如何协调作⽤,共同完成⼀个任务⽽不会我⾏我素地乱来呢?我们需要⼀个东西,它可以控制硬件有序地⼯作,各⾃执⾏⾃⼰的任务,这个东西就是操作系统(Operating System)。
操作系统是⼀个特殊的软件,它的任务就是硬件管理—控制CPU的运算,控制内存的分配,控制计算机的⼏乎⼀切。
假如⼀台电脑没有操作系统,它可能只是⼀个艺术品,或者⼀堆废铁。
⼀个完整的操作系统包括内核和⼀些辅助软件。
内核的主要任务就是进⾏硬件管理,它是⼀个操作系统最基础最底层的东西。
内核若想很好地控制硬件并使其发挥相应的功能,需要和硬件相识相知相爱,他俩可以成为完美的⼀对,全都仰仗于驱动的帮忙。
驱动是硬件的灵魂,它向操作系统提供了访问和使⽤硬件的接⼝,以便在某项任务中最⾼效地调⽤硬件。
什么是LinuxLinux就是⼀个操作系统,它可以管理整个计算机硬件,并且可以接收我们的指令,来指挥硬件完成相应的任务,并把结果反馈给我们。
《跟老男孩学Linux运维:核心系统命令实战》读书笔记PPT模板思维导图下载
01
3.13 uniq: 去除重复 行
02
3.14 wc: 统计文件 的行数、 单词数 或...
03
3.15 iconv: 转换文件 的编码格 式
04
3.16 dos2uni x:将 DOS格 式...
05
3.17 diff: 比较两个 文件的不 同
06
3.18 vimdiff: 可视化比 较工具
06
3.6 tail: 显示文件 内容尾部
01
3.7 tailf: 跟踪日志 文件
02
3.8 cut: 从文本中 提取一段 文字并 输...
03
3.9 split: 分割文件
04
3.10 paste: 合并文件
05
3.11 sort: 文本排序
06
3.12 join: 按两个文 件的相同 字段...
04
2.4 mkdir: 创建目录
05
2.5 touch: 创建空文 件或改变 文件...
06
2.6 ls: 显示目录 下的内容 及相关属 性...
01
2.7 cp: 复制文件 或目录
02
2.8 mv: 移动或重 命名文件
03
2.9 rm: 删除文件 或目录
04
2.10 rmdir: 删除空目 录
01
8.1 fdisk: 磁盘分区 工具
02
8.2 partpro be:更新 内核的 硬...
03
8.3 tune2fs: 调整 ext2/e. ..
04
8.4 parted: 磁盘分区 工具
05
8.5 mkfs: 创建 Linux文 件系统
06
8.6 dumpe2f s:导出 ext2/...
学习Linux的心得(精选6篇)
学习Linux的心得学习Linux的心得(精选6篇)在平日里,心中难免会有一些新的想法,应该马上记录下来,写一篇心得体会,这样能够给人努力向前的动力。
一起来学习心得体会是如何写的吧,以下是小编为大家整理的学习Linux的心得,希望对大家有所帮助。
学习Linux的心得篇1本学期对于Linux系统的学习,让我对Linux有了一定的了解。
我知道了Linux只是个内核。
现在的Linux操作系统,都是用这么一个内核,加上其它的应用程序构成的。
Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一,使其在金融、安全等部门有很重要的应用。
学习Linux,首先我们应该从基础开始学起。
对Linux操作系统的功能、版本、特点,以及Linux系统安装和图形环境有较全面的了解。
Linux命令是必须学习的。
虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。
Linux是一个命令行组成的操作系统,精髓在命令行,学习如何在安全的环境中执行系统命令,包括有关文件、目录、文件系统、进程等概念,如何使用相应的命令对文件、目录、进程等进行管理,了解遇到问题时,如何找到帮助信息等。
Linux常用命令,有echo 命令、date命令、passwd命令、file命令、ls命令、touch命令等。
要明白学好Linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在学习初期。
要增加自己的Linux技能,只有通过实践来实现。
只要多动手,就一定会有收获。
遇到问题时要自己去寻找答案,在寻找答案的过程中,会学到更多知识。
应该说目前我们对于Linux的学习只是入门而已,学习Linux是一个长期的过程,很耗时间。
作为电子信息工程专业的学生,对我们来说,Linux将来主要应用于嵌入式Linux系统的开发,这非一日之功,我们还需要不断深入地学习它。
最后,衷心感谢唐磊老师一学期来的辛苦教学,唐老师幽默风趣的教学方式给我们的课堂带来很多欢乐。
linux学习笔记
目录第一章 LINUX简介及安装 (2)一、LINUX介绍 (2)二、LINUX安装 (2)三、LINUX目录 (2)四、总结来说: (4)第二章常用命令及帐户管理 (4)一、linux命令格式 (4)二、常用命令 (4)三、用户管理命令 (5)使用技巧: (7)第三章 vi 编辑器 (8)一、Linux 系统中的编辑器知识 (8)二、vi 的模式 (8)三、命令: (8)第四章 SHELL的使用 (8)一:Shell的环境 (8)二、Bash的主要功能 (9)三、Shell变量 (9)第五章、应用程序安装与管理 (11)一、Linux应用程序组成 (11)二、RPM(Redhat Package Manager)包管理 (11)三、应用程序的编译安装 (11)第六章Linux系统管理 (12)一、启动过程: (12)二、运行级别: (12)三、系统服务的启动状态: (13)四、磁盘空间配额: (14)五、压缩命令: (14)第7章Linux基本网络配置 (15)第八章 NFS文件系统: (15)一、NFS的概述和安装 (15)二、NFS服务器的配置 (16)三、图形界面的NFS服务器配置工具: (16)第一章 LINUX简介及安装一、LINUX介绍1Linux:Linux是由芬兰大学的Linus Torvalds 李納斯发起创建的开源软件项目。
2版本号xx.yy.zz :①.xx表为主版本号,yy为次版本号,zz为修订的版本号。
②.次版本号中,单数代表测试版,双数代表正式发行版3开源软件:①源代码开放。
②GPL协议:主要是以源代码形式发布,任何人都可以得到源代码,但是不提供任何的担保,不限制商业性质的发行和包装。
③LGPL许可协议:允许在使用者自己的应用程序中使用程序库,即使不公开自己的源代码。
二、LINUX安装1RHEL4是由RED HAT公司发布的2Linux硬盘概念:①可以分为主分区、扩展分区、逻辑分区。
韩顺平老师Linux 视频笔记
学习LINUX的两个方向:LINUX系统治理员:LINUX程序员:PC平台开发LINUX软件工程师,LINUX嵌入式开发(单片机,芯片)开发,学完本书可以完全可以胜任LINUX系统管理员开源,免费,稳定,安全,处理多并发得到业界...学习LINUX的两个方向:LINUX系统治理员:LINUX程序员:PC平台开发LINUX软件工程师,LINUX嵌入式开发(单片机,芯片)开发,学完本书可以完全可以胜任LINUX系统管理员开源,免费,稳定,安全,处理多并发得到业界认可LINUX学习流程(xue xi liu cheng):1、LINUX平台上的开发,包括VI,GCC,GDB,MAKE,JDK,TOMCAT,MYSQL,和LINUX基本操作2、加厚C语言功能或者JAVA语言3、学习UNIX环境高级编程4、LINUX应用开发或才嵌入式开发工具书(需要几本工具书,如新华字典)思索----实践-----再思考----再实践一周课程:基础部分: LINUX基础知识,80个常用命令,LINUX分区/VI/权限..实用部分:samba柏靼,LINUX网络环境配置,crontab使用,JDK,apache柏靼,LINUX下JAVA网络编程,SHELL初步介绍三本书:鸟哥的私房菜,LINUX从入门到精通,LINUX内核完全剖解LINUX实战第一天(共五天)1、LINUX的初步介绍2、L的第一次接触3、L的用户管理4、L的常用命令(80左右)5、L下所有者,所在组和其它组的介绍6、L下文件和目录权限机制吉祥物:小企鹅(想起小时侯被企鹅咬了一口),芬生学生创建,微软反LINUX 广告(四个变形动物),L的特点:1、FREE ,免费/开源,代码公开2、支持多线程,(_zhi1 chi2 duo1 xian4 cheng2 _)能不能允许多个用户并发/多用户3、安全性好,4、对内存和文件管理优越缺点:操作相对困难,无界面操作 (轻易的东西不值难)NEC 在手机使用LINUX,03年,日本的一家公司,嵌入式开发LINUX最小只需要4M (参看鸟哥)----- 导致嵌入式开发可以很多东西看一看,但要学精一门。
154页linux学习笔记,Linux大神超详细全面总结,学完快速掌握
154页linux学习笔记,Linux大神超详细全面总结,学完快速掌握之前一直以为Linux和Windows差不多,但是学习了Linux基础入门之后才发现两种操作系统之间差距非常大。
Linux只是在硬件之上的内核和系统调用,就连我们在Windows 里习以为常的图形界面都是Linux上的软件。
在使用Linux的时候,我们都习惯于使用终端和命令行进行操作,而不是像Windows那样的图形界面里的鼠标键盘的共同操作。
近年来,Linux 系统已经渗透到 IT 领域的各个角落,作为一名 IT 从业人员,不管你是专注于编程,还是专注于运维,都应该对Linux 有所了解,甚至还要深入学习,掌握核心原理。
今天给大家分享一份精心整理的154页《linux笔记》,这份入门笔记最大的特点是通俗易懂,并且非常详细,学习完这份笔记即可快速了解 Linux,建议收藏保存。
目录展示•一、常用命令•二、磁盘管理•三、用户管理•四、文件权限•五、目录结构•六、软件安装•七、时间管理•八、启动引导•九、运行级别•十、进程管理•十一、资源监控•十二、系统服务•十三、环境管理•十四、网络管理•十五、配置文件•十六、计划任务•十七、 VI/VIM编辑器•十八、压缩打包•十九、常见问题一、常用命令•终端快捷键•gnome快捷键•窗口操作快捷键•文件浏览器•关机和重启命令•grep和管道符三、用户管理•1、用户和用户组操作命令•2、finger 工具:用来查询用户信息,侧重用户家目录、登录SHELL 等;•3、查询登录主机的用户工具:w 、who 、users•4、groups 用户所归属的用户组查询;四、文件权限•1、文件类型•2、文件权限•3、超级权限控制•4、权限命令五、目录结构六、软件安装•1.RPM•2.YUM。
Linux Kernel 0.11学习
(第一章)att汇编语法格式的笔记1寄存器引用寄存器引用要在寄存器号前加% 例如:mov %eax,%ebx2操作数顺序操作数排列是从源(左)到目的的(右) 例如:mov % eax(源),%ebx(目的)3 常数/立即数的格式使用立即数。
要在数前面加$,例如:mov $4,%ebx (变量前加$则表示该变量数值对应的地址);符号常数直接引用,如mov value,% ebx,引用符号地址在符号齐前加$,如mov $value,%ebx4 操作数长度操作数长度用加在指令后面的符号表示,b=byte(8bit) w=word(16bit) l=long(32bit),如movw %ax,%bx5跳转在 AT&T 汇编格式中,绝对转移和调用指令(jump/call)的操作数前要加上'*'作为前缀,而在 Intel 格式中则不需要。
6远跳转远程转移指令和远程子调用指令的操作码,在AT&T 汇编格式中为"ljump" 和"lcall",7远程返回指令8内存操作数的寻址方式计算方法是:base + index(索引)*scale(比例因子) + disp(偏移地址)例子:9 内嵌汇编9.1 内嵌汇编格式:_asm_("asm statements":outputs:intput:registers-modified);这四个字段的含义是:asm statements -是汇编语句表达式,AT&T 的结构, 每新行都是分开的。
outputs - 修饰符一定要用引号引起来, 用逗号分隔,输出的寄存器inputs - 修饰符一定要用引号引起来, 用逗号分隔,输入的寄存器registers-modified - 名字用逗号分隔,汇编代码会修改的寄存器outputs,inputs,register-modified都是可选参数,以冒号隔开,且一次以0~9编号,如outputs 的寄存器是0号,inputs寄存器是1号,往后依次类推。
Linux学习笔记整理
Linux学习笔记整理Linux笔记第一部分:基础一、概述登录::root 密码或普通用户登陆后用su - 来切换成系统管理员身份注销:logout开始X桌面:startx (可以在X桌面上注销切换到终端)关机:shutdown -h now重启:shutdown -r now 或reboot切换到超级用户(切换root到帐号):su (效果:[root@localhost zsj]# ,#为管理员级别)su - (效果:[root@localhost ~]$ ,$为用户级别)登出超级用户:logout(回到当前用户)-----------------------------------------------------------------------------------------------------Vi编辑器 (可编辑java 、c、cpp程序)Ⅰ编辑Java1.新建进入Vi: Vi Hello.java2.进入到插入模式:i3.编辑(比如 HelloWorld.java)4.保存: [Esc]键进命令模式输入:冒号保存(写入)退出:wq 不保存退出q!5.列(列表)出文件ls参数-l 详细看ls -l6.编译:Javac HelloWorld.java //这个通用(此时可ls再看,可看到HelloWrold.class)7.运行:java HelloWorldⅡ编辑C命令:vi Hello.cpp //new file编程:#includeint main(){Printf("hello!");Return 0;}编译(gcc):gcc hello.cpp(默认编译生成a.out)gcc -o my1 hello.cpp (编译生成的文件叫my1) 运行: ./a.out (绿色的那个) ./my1二、文件目录:/ (根目录)/root (存放root用户的相关文件)/home (存放普通用户的相关文件)/ bin (存放常用命令的目录)/boot (存放引导相关的文件)/sbin (要具有一定权限才可以使用的命令)/mnt(默认挂载光驱和软驱及其他文件系统的目录)/etc (存放配置相关文件)/var (存放经常变化的文件)/usr (软件默认安装的地方,相当于win的program files文件夹) 做个例子来说明文件目录结构cd / (切换到根目录)ls (查看) (dir命令也可以在Linux下用)cd bin/ (或cd bin)ls -l (详细查看)ls -a (查看隐藏项目)显示当前绝对路径:pwd 命令(Print Work Directory)三、用户管理添加用户(useradd命令):只有root或具有root权限的用户才可以操作例:(1)创建用户 useradd star (添加用户star)(2)设密码/ 改密码(好习惯) passwd star (设密码passwd,对象为star)若没有指定用户,则是给当前用户设密码(3)新密码(new password,输两次)删除用户(userdel命令):例:userdel star (删除用户star,但文件夹和文件保留)userdel -r star (删除用户star及star用主目录)文件夹(目录)名按“Tab”可补全四、常用命令指定运行级别0:关机1. 单用户2.多用户状态无网络服务3.多用户状态有网络服务(常用)4.系统未使用保留给用户5.图形界面(常用)6.系统重启常用运行级别是3和5,要修改默认的运行级别可改文件:/etc/inittab的id:5:initdefault:这一行中的数字例:把运行级别设为6,则系统会不断重启。
linux学习笔记(系统管理篇)
shell 命令的敲法: 命令 参数 1 参数 2 参数定界:用到” ‘ ‘”(单引号) 用单引号括起的如’abc def ‘是告诉 shell 消 除语法歧义 如要建一文件叫 jack’s daily 却不能用单引号了 ,此时得用 ”\”应写为: 例 如: touce jack\’s\ daily “\”为转意字符,取消反斜杠后一个字符的特殊含义 文件系统 在 unix 中”.”无特殊含义 unix 下区分文件类型的命令 file unix 下是靠文件的头部说明来区分文件格式,所以操作系统不会理会扩展名的 (exe 文件头两字母是 MZ) mount 直接回车是显示当前所 mount 的状态 df 察看磁盘利用状态 磁盘分区 du –h +子文件名 检测文件系统子目录所占空间 pwd 查看当前子目录 unix 下一个文件可以不可读而可执行,对于子目录而言 x 就是另外一层含义了, 称之为检索。对子目录而言 r 就是列表权 (经验:不要安装基于文本界面的多媒体应用程序) 如何修改权限 修改属主: chown [-R] 新属主 文件 -R: 将文件夹中的所有文件也更改掉 修改属组: charp [-R] 先属组 文件 修改权限: chmod [-R] 新权限 文件 新权限有两种表示方法: (1) 直观: 如 rw-r—r— 数字 6 4 4 110100100 (2)字母法: 如 rw-r--r-u g o 修改文件的访问权限不必非得是 root,文件属主也可以 windows 文件权限策略是 ACL,侧重与灵活性; unix 文件系统策略是权限位, 侧重用效率; linux 所有权限都放于一个 16 位的短整数里 linux 特有功能(ext2 ext3 所体现的) :列出所有权限命令:lsattr 设置特殊权限: chattr 连接: 硬连接: 硬连接本质使一个文件有两个文件名和 windows 不同 windows 中文
Linux学习笔记系列(1)
Linux学习笔记系列(1)据说linux很厉害;⼀、 Linux的发展史。
了解⼀个东西,⾸先就要了解他的历史,emmmm,了解,就是不⽤记得,所以,我也只是知道个⼤概,于是乎,我去别⼈的博客复制⼀下他的历史来这⾥放着。
UnixUnix操作系统是⼀个强⼤的多⽤户、多任务操作系统,⽀持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。
⽬前它的商标权由国际开放标准组织所拥有,只有符合单⼀Unix规范的Unix系统才能使⽤Unix这个名称,否则只能称为类Unix(Unix-like)。
GNUGNU是⾃由软件之⽗Richard Stallman在1984年组织开发的⼀个完全基于⾃由软件的软件体系,与此相应的有⼀分通⽤公共许可证(General Public License,简称GPL)。
Linux以及与他有关的⼤量软件是在GPL的推动下开发和发布的。
⾃由软件之⽗ - Richard Stallman 像⼀个神态庄严的传教⼠⼀样喋喋不休地到处传播⾃由软件的福⾳,阐述他创⽴GNU的梦想:“⾃由的思想,⽽不是免费的午餐”。
这位⾃由软件的“顶级神甫”为⾃⼰的梦想付出了⼤半⽣的努⼒,他不但⾃⼰创作了许多⾃由软件,如:GCC、和GDB,在他的倡导下,⽬前⼈们熟悉的⼀些软件如BIND、Perl、Apache、TCP/IP等都成了⾃由软件的经典之作。
如果说Richard Stallman创⽴并推动了⾃由软件的发展,那么,Linus Torvalds毫不犹豫奉献给GNU的Linux,则把⾃由软件的发展带⼊到⼀个全新的境界。
BSD386BSD因为法律问题直到1992年还不能发布,NetBSD和FreeBSD是386BSD的后裔,⽐Linux早。
Linus Torvalds说,当时如果有⾃由的基于386的Unix-like操作系统,他就可能不会创造Linux。
linux学习笔记
4、rm命令(常用)
作用:删除文件或目录,相当于dos下的delete命令;
格式:rm [option] file...
常见形式:rm file1 file2 file3(删除文件123)
f 指明操作对象;
eg:tar cvf /dev/rmt0 file_list
tar cvf a.tar /usr/a(将/usr/a目录下的文件打包成一个文件a.tar)
tar xvf a.tar (将tar文件解开)
16、ftp命令(常用)
eg:chmod a+x file (a+x所有的(u,g,o)都设置可执行的属性)
chmod +r file (为用户(u)设置可读的属性)
chmod u=rwx,g=rx,o-r file (分别为不同的用户和组设置不同的属性)
12、chmod命令(常用)
格式:more filename
eg:more mirro.txt(把文件mirro.txt送到屏幕分屏显示)
3、cp命令(常用)
作用:复制文件或目录,相当于dos下的copy命令;
格式:cp [option] source_file dest_file
常见形式:cp source_file dest_file(拷贝文件)
格式:touch filename
13、prtconf命令(常用,用于sunos)
作用:显示系统的配置信息,包括存储器和外围设备配置;
格式:prtconf
14、lsconf命令(常用,用于AIX)
传智 韩顺平 linux 课程笔记1(吐血整理)
Linux视频教程(韩顺平)听课笔记1(RedHat)1、老师联系方式:hanshunping@2、linux for工作(1)linux系统管理员——linux系统的维护、配置等(2)linux程序员——需c/c++、java,php、jsp等①linux软件工程师(pc)②linux嵌入式开发(单片机、芯片)3、学习linux的步骤(1)第一阶段:linux平台上的开发,包括vi,gcc,gdb,make,jdk,tomcat,mysql...和linux基本操作(2)第二阶段:加厚c语言功底《c专家编程》或是java语言(3)第三阶段:学习unix环境高级编程《unix环境高级编程》(4)第四阶段:linux应用系统开发/linux嵌入式开发4、计算机学习的正确道路5、推荐书籍-《鸟哥的Linux的私房菜基础学习篇》鸟哥、许伟、林彩娥等编著-《Linux编程从入门到精通》宫虎波编著-《Linux内核完全剖析》赵炯编著6、关机命令shutdown -h now立即进行关机shutdown -r now现在重新启动计算机-t sec : -t后面加秒数,即”过几秒后关机”-k: 不是要真的关机,只是发送警告信息-r: 在将系统的服务停掉之后就重新启动-h: 将系统服务停掉后,立即关机-n: 不经过init程序,直接以shutdown关机-f: 关机并启动之后,强制略过fsck的磁盘检查-F: 系统重新启动之后,强制进行fsck的磁盘检查-c: 取消已经在进行的shutdown命令内容reboot 现在重新启动计算机7、用户登录登录时尽量少用root账户登录,因为它是系统管理员,最大的权限,难免操作失误。
可以利用普通用户登录,登录后再用“su -”命令来切换成系统管理员身份。
8、进入桌面(命令行界面进入图形界面)startx9、用户注销在提示符下输入logout即可。
10、vi进行开发java和c/c++程序-java程序-vi Hello.java-输入i,进入到插入模式,写好代码-输入Esc键,进入命令模式-输入冒号:[wq 表示退出保存,q!表示退出不保存]-编译javac Hello.java-运行java Hello-c程序-gcc o自定义文件名Hello.cpp[参数o表示可自定义生成的out文件名,否则默认为a. out]-./Hello[./是linux中的执行/运行命令]11、linux文件目录-/,根目录-root,存放root用户的相关文件-home,存放普通用户的相关文件-bin,存放常用命令的目录,如vi,su-sbin,要具有一定权限才可以使用命令-mnt,默认挂载光驱和软驱的目录-etc,存放配置的相关文件-var,存放经常变化的文件,如网络连接的sock文件-boot,存放引导系统启动的相关文件-usr,安装一个软件的默认目录,相当于windows下的program files注:pwd,显示当前工作目录pwd -p,显示出实际路径,而非使用link路径12、linux的用户管理-useradd用户名:添加用户-passwd用户名:为新用户设密码-userdel用户名:删除用户但保存其主目录userdel -r用户名,删除用户及其主目录注:logout,当前用户退出who am i,显示当前用户13、指定系统运行级别init [0123456],指定系统运行级别,类似windows的正常运行模式或安全模式。
学习韩顺平Linux系统笔记(经典)
韩顺平LINUX系统笔记第0天开山篇1、linux是一个开源免费的操作系统。
2、学习linux的流程:(1)linux平台上的开发和linux基本操作(2)加强C语言功底:《C专家编程》或者Java语言(3)学习unix环境高级编程(4)Linux应用系统开发/linux嵌入式开发3、书籍推荐:鸟哥的linux私房菜、linux入门到精通、linux内核完全剖析4、学习方法推荐:(1)高效而愉快的学习(2)先建立一个整体框架,然后细节学习(3)用到什么再学什么(4)计算机是做了、练了才会(5)适当的跳过(6)学习linux系统是在琢磨别人怎么做,而不是我认为怎么做第一天1、linux的特点:(1)linux系统时免费开源的(2)linux支持多线程,多用户(3)安全性优良(4)内存和文件管理性能优越2、Linux用户:root(相当于windows的administrator),建议使用普通用户登录,通过su–root切换为身份为管理员3、startx:启动图形用户界面,ctrl+alt+break:切换到控制台环境下4、shutdown now:立即关机shutdown–r now和reboot:立即重启计算机5、注销:logout6、熟悉vi编辑器:vi相当于windows的记事本7、在linux下进行简单的java开发:(1)vi hello.java//创建一个hello.java的文件(2)按"i"进入insert状态,进行文档编辑//编辑一个java文档(3)按"Esc"键退出编辑状态,转换为命令行模式(4)按shift输入冒号,在输入"wq"保存退出,若不保存退出则输入:q!(5)编译java文件:javac hello.java(6)运行java文件:java hello8、ls:列举当前文件夹,参数-l:显示当前目录的详细信息9、ccp程序的编译:编辑过程同上面的java程序,下面只记录编译和运行方式:(1)编译:gcc hello.cpp(2)运行:./a.out//默认编译出的文件为a.out(3)编译时更名:gcc–o hello.out hello.c,编译后的名字变为:hello.out10、set nu:在文件中每行行首加入行号set nonu:取消行号输入数字:直接输入数字,按"Esc"键,将光标移至该行行首/字符串:查找特定字,按"n"继续查找?字符串:查找特定字,按"n"继续查找11、linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录,详细结构图解:12、linux显示当前路径:pwd13、用户管理:(1)添加用户:只有root用户或者拥有root权限的用户才能创建useradd用户名passwd用户名(2)删除用户:只有root用户或者拥有root权限的用户才能删掉userdel用户名(保留用户相关的文件)userdel–r用户名(删除用户及其相关的文件)14、Linux运行级别:init[0,1,2,3,4,5,6]注释:(1)0:关机(2)1:单用户(3)2:没有网络服务的多用户状态(4)3:有网络服务的多用户状态(5)4:系统未使用保留给用户(6)5:图形界面(7)6:系统重启常用级别为3和5,修改运行级别:vi/etc/inittab,修改id:5:inittabdefault中的数字,即可修改运行等级。
Linux管理基础教程_学习笔记
第三章安装软件3.1 RPMRPM(RedHat Package Manager):RPM软件包管理器是一种用于Internet下载包的打包及安装工具,为二进制已编译文件,与之对应的开源代码的格式为SRPM。
RPM命令中,长命令格式--query与缩写命令格式-q相对应。
下面是简单的命令说明:命令行选项--install 安装一个软件包--upgrade 升级或将当前已安装软件更新到最新版本--erase 移出或删除一个已安装软件包--query 查询软件信息--force 强制进行安装。
-h 使用符号“#”指示安装进度,与-v参数同时显示效果更好。
--percent 显示已完成百分比进度。
-nodeps 不进行依赖关系检查--test 测试安装是否能成功完成。
-V 检验系统中的RPM包或文件。
-v(/--verbose,详细的) 通知RPM报告每一步操作的详细信息。
例:rpm -qi bash,显示bash包详细信息rpm -ql bash,列出bash包包含的所有文件rpm -qc bash,列出bash包中配置文件rpm -q --qf “[%{INSTALLTIME:date}% \n]” bash,查找bash包安装至系统中的时间使用RPM安装软件包1)# mount /media/cdrom,插入Fedora光盘,将在CDReadOnlyMeida中的文件挂载至/media/cdrom/中;2)# cd /media/cdrom/Fedora/RPMS/,并#ls joe*确定文件是否在其目录下;3)# rpm –install –verbose –hash –test joe*,测试软件依赖关系;4)# rpm –ivh joe*,安装软件;5)# rpm –q joe,查询命令以确认应用安装至系统中。
删除RPM软件包# rpm –e –vvv joe,删除joe软件包并显示详细信息。
linux学习笔记
切换X Window与命令行模式:linux login :rootTab 按键具有命令补全与文件补全在线帮助:man page /info page[root@linux^]LANG="man"[root@linuxx]#man dataDATA(1)以root的身份封入Linux之后输入“ls-al”-rwx rwx文件拥有者与文件所属用户组对文件的权利。
linu的发展主要分为哪两种核心版本、文件属性-rwxrwxrwx表示这个文件的意义是什么?要将一个文件的属性改为-rwxr-xr--采用什么命令?若需要更改一个文件的拥有者与用户组,该用什么命令?linux传统的文件系统是什么?常用的文件登陆格式是那些?文件和目录管理:cd切换目录dmtsai 用户的家目录是/home/dmtsai,root家目录是/root,假设一root身份在linux 系统中,这儿个特殊目录的意义是:[root@linux~]# cd【相对路径或绝对路径】[root@linux~]#cd ~dmtsai#表示去dmstai用户的家目录,及/honme/datsai[root@linux~]#[root@linux~]#[root@linux~]#[root@linux~]#[root@linux~]#[root@linux~]#[root@linux~]#pwd(显示当前所在多的目录)[root@linux~]#pwd [-p]参数:-p :显示出十几路径,而非食用连接(link)路径dmtsai用户的家目录是/home/dmtsai root家目录是/rootpwd显示当前所在目录例:[root@linux~]#pwd [-p]pwd显示当前所在目录mkdir(建立新目录)rm 删除文件或目录mv移动文件与目录,或重命名[root@linux~]#mv [fiv]source dmstination[root@linus ]#mv [options] source1 souroe2 souroe2 .....directory-f;force,强调的意思,强制直接移动而不询问。
linux系统学习笔记
linux系统学习笔记==============================智能娱乐系统===================硬件:中控:UI,⾳视频数据处理能⼒操作:显卡,声卡、LED、游戏机、触控屏ARM :cortex - A软件:开发环境:vmware + linux(ubuntu)程序开发:linux C程序移植:交叉开发效果:⾃动处理程序⼀、Linux 命令linux : 图形简陋---> 追求效率⾼移植性强,开源性linux :命令⾏形式进⾏交互ls: 查看全部⽂件名/ --->根⽬录pwd: 打印当前的路径/home/gec 等于~ ---> 家⽬录cd : 直接回到/home/geccd / : 回到根⽬录/cd ..: 回到上⼀级的⽬录ls -l类型权限链接数创建者⼯作组⼤⼩⽇期⽬录名d rwxrwxr-x 2 gec gec 4096 Jul 2 2013 Desktop d:⽬录(第⼀个字母:-:普通⽂件d:⽬录)rwxrwxr-x:⽂件的权限r:读权限w:写权限x:执⾏权限⽤户权限:rwx(创建者的权限)rwx(同组⼈)r-x(其他⼈)clear: 清除屏幕信息touch 创建⽂件touch xxxx ----> 因为⾝份是gec,所以必须在/home/gec中创建rm 删除⽂件/⽬录rm xxxx(⽂件名) ----> 因为⾝份是gec,所以必须在/home/gec中删除rm xxxx(⽬录名) -rfgedit 编辑⽂件gedit xxxxcat 查看⽂件内容cat xxxxmkdir 创建⽬录mkdir xxxx ----> 因为⾝份是gec,所以必须在/home/gec中创建cp 拷贝命令cp ⽂件名⽬录名---> cp abc.c 123/chmod 修改⽂件的权限-rw-rw-r-- 1 gec gec 20 Apr 14 19:43 abc.c4214214216 6 4希望三个⼈都是可读可写可执⾏7 7 7chmod 777 xxxxchmod 777 abc.c-rwxrwxrwx 1 gec gec 20 Apr 14 19:43 abc.c⼆、linux与windows间的共享⽬录1,在windows系统中的D:\创建⼀个名字为share的⽬录2, "虚拟机" --- "设置" ---- "选项" --- "共享⽂件夹" --- "总是启⽤" ---"确定" 3,在linux系统输⼊以下命令来进⼊共享⽬录cd /mnt/hgfs/share/4,在linux与windows分别创建⽬录和⽂件,观察两个系统的变化=====================开发板的使⽤=========================⼀、核⼼板CPU:ARM - cortex -A8名字:S5PV210内存:4块4 * 128MB = 512MBnandfalsh: 1G ---〉linux系统⼆、底板电源线插⼝:5V按键⾳频输⼊(红⾊)输出(绿⾊)串⼝:连接PC机与开发板⽹⼝:快速传输数据三、使⽤GEC210板⼦1,接上电源线2,串⼝线⼀端接在开发板上,另⼀端接在USB转串⼝上,USB⼝接在电脑的USB⼝上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
写在前面的话:刚毕业,找的工作是嵌入式开发,在学校自学了几年Windows平台下的C/C++开发,可现在工作是在Linux平台下,所以一切都要从头开始(当然语言基础还是有用的)。
从操作系统应用开始学,再到开发,经过几个月的学习,现在基本能胜任工作。
在这个几个月之中,自己感觉大学里面荒废了太多时间。
在学校时,总是认为学的东西没用(我想大概现在很多在校的学生还是这么认为吧),到现在才感觉自己基本功不够扎实。
所以,决定好好研究一下linux内核,一方面是为了对操作系统有更深层次的理解,另一方面在研究内核的同时,学习linux底层编程。
我用的教材是浙江大学出版社《Linux内核情景分析》上下册还有就是现在看的这本。
希望有相同兴趣的朋友多多交流。
第一章了解Linux内核
这一章是对Linux内核的总体概括,我把我学会以及自己在实践过程中的理解并且觉得比较容易用的到东西分别叙述如下:
一、重新编译内核
1. 首先要确认你系统里面是否有linux的源代码,在Linux安装的时候有选项是否安装源代码。
如果你在安装时没有选,不用担心,你可以到/pub/linux/kernel 去下载你的系统对应的内核源代码。
2. 下载以后当然是将源代码包解压到你所要放的目录下,书上用的是下面两个命令:
#mv linux-2.4…. your directory
#tar zxvf linux-2.4…
3.配置内核
配置内核的过程可以分为以下几步:
a.清除目录下所有配置文件和先前生成核心时产生的中间文件,在你的源代码目录执行如下命令:
#make mrproper
注意:Kernel HOWTO对上面这个命令是这样解释的:
`make mrproper' 将会做更广泛的`清除' 工作.这个动作有时候是必须的,所以你可能会希望在每次修补的时候执行它.`make mrproper' 还会将你的配置文件杀掉,所以如果你认为它重要的话应该先做一备份(在.config).
b.对内核进行配置,有以下几种方法可供选择:
#make config(基于文本的传统界面)
#make menuconfig(基于文本的选单式配置界面,书中推荐的方式)
#make xconfig(基于图形的配置界面)
#make oldconfig(用于在原来配置的基础上作些小的修改)
注:我在我的机器上(redhat 9)执行make oldconfig这个命令的时候,系统根本没有让我配置内核,而是自动执行了配置,那我要怎么样用这个命令来配置内核呢,希望知道的朋友可以告诉我。
在Kernel Howto中对这个命令的解释是:
make oldconfig' 会尝试由一旧的配置文件来配置你的核心.它会为你执行`make config'。
如果你还未曾编译过核心或没有旧的配置文件,那么你可能不该做这个,因为你几乎确定会更改缺省的配置。
c.对每一个配置项,用户有三种选择:
“Y”——将该功能编译进内核;
“N”——不将该功能编译进内核;
“M”——将该功能编译成可以在需要时动态插入到内核中的模块。
d.编译内核和模块
接下来需要运行下面两条命令:
#make dep(对内核源代码文件的依赖性和完整性进行检验,确保关键文件在正确的位置) #make clean(清除目标文件,自己写过makefile或通过源码包装过软件的,这个命令应该很熟悉了)
下面的命令将编译产生压缩形式的内核文件:
#make zImage 或#make bzImage(压缩率更高)
编译后产生的内核文件的位置在:/usr/src/linux/arch/i386/boot目录下(假定你CPU的是Intel X86,内核源代码所在的目录为/usr/src/linux)
如果选择了可加载模块,编译完内核后需编译选择的模块:
#make modules
或用下面的命令编译模块并安装到标准的模块目录中:
#make modules_install
模块在系统中的标准目录位于/lib/modules/x.y.z,后面的x.y.z是版本号,为了安全起见在运行这个命令之前最好对/lib/modules进行备份(#lsmod 可以了解当前内核中已经装载了哪些内核)。
e.配置启动文件
执行以下命令
#cp /usr/src/linux/arch/i386/boot/zImage /boot/zImage-2.4.18
#cp /usr/src/linux/System.map /boot/System.man-2.4.18
#ln –sf /boot/System.map-2.4.18 /boot/System.map (相当于Windows中创建一个快捷方式)
如果你是使用lilo启动Linux,请修改/etc/lilo.conf来加载新内核;
如果你是使用grub启动Linux,请修改/etc/grub.conf来加载新内核,具体的修改请参照这个两个文件的中的例子。
现在,你可以试试按照上面的方法,根据你的需求,编译内核啦。
这就是Linux比Windows爽的地方——你可以很清楚的知道操作系统在干什么。