Linux 学习基本步骤
首先,要学Linux编程,你得会用Linux,也就是得在命令行环境下生存下来。什么叫生存下来呢?就是我现在给你一台主机,键盘,显示器啥的,然后给你一个服务器版的Linux系统的光盘或者其他什么安装盘,你去把这台主机用起来。什么叫用起来呢?你平常用Windows电脑干啥,你现在还用这台电脑干啥。新建文件啊,查看文件,编辑文件,保存文件,复制,移动,删除,打包,解压,联网,下载个什么东西啊等等基本操作你得会。还有软件怎么安装,不仅要熟悉apt-get和yum,还有给你源码的软件怎么安装你得会,另外要熟悉Linux下的文件系统,每个目录是干啥的,目录下的文件是干嘛的,插入一个U盘,如何挂载这个U盘,操作U盘下的文件你得会啊。这个看一本书就行了,《鸟哥的Linux私房菜-基础篇》,记得是基础篇,记得安装Linux系统自己操作一遍,还有一本是服务器篇,你既然是要学Linux编程开发,那就不用看服务器架设篇了。做完这一步,你可以开发了。
Linux下开发,两种基本语言,C和C++咯,至于其他人要说Python,Java,Ruby啥的不讨论,因为就讨论Linux下的开发,什么是Linux开发呢?就是利用Linux的API进行开发咯,首先你得会C语言或者C++语言啊,这个去看丹尼斯的《C程序设计语言》,注意是丹尼斯的,C++的就去看《Essential C++》或者《C++ Primer》,然后在Linux下的程序开发,Linux的API是遵循POSIX标准的,自行谷歌什么叫POSIX。Linux下程序开发几大块,文件操作,这个很重要,你要知道Linux下的一个思想叫一切皆文件,可见文件读写多重要了。I/O模型,五大I/O模型,阻塞,非阻塞,复用,信号驱动和异步I/O,环环相扣丝丝相连,概念和操作都要仔细琢磨,最重要的当属复用,就是select,poll和epoll,面试笔试就问这个东西,要知道他们的适用范围和优缺点。进程和线程,包括进程和线程的概念和区别,进程和线程的建立,同步,通信,互斥等等。网络编程,就是socket编程,Linux编程,这个学不好等于啥都没学,这个估计还得了解一下TCP/IP协议,编程方面主要是那几步,申请socket,bind,listen,accept几步,要熟悉种常见的服务器模型,进程池线程池方式的,多进程方式的,复用方式的,最重要的是复用方式的,这部分可以先只写服务器,测试直接用Telnet就好了,加快速度么。其余的就是数据库,这个东西不属于Linux,但是还得会,要不然啥都做不了,看那本《MySQL必知必会》,当然深入的话还得找本专业的书细细看。这个时候就可以真刀真枪的去干点有意思的事了,比如写个终端下的类似于QQ的软件啊,包括服务器和客户端啊,慢慢的增加并发数,比如可以同时支持五千人在线啊,文件传输啊等等。然后学学Qt,熟悉一下图形界面,可以把你的终端下的QQ完全改成图形界面下的。估计到这个时候,你差不多在Linux下进行像样的开发了吧。在这个过程的学习中,相信你已经学会Makefile的编写啊,编译啊,链接啊等等一些细枝末节的东西了,还得反思一下把零散的东西串一串,要系统化。
接下来就是继续深入了,Linux为什么这么多人用,好处在哪里,你得去稍微的看看内核源码啊,内核的进线程调度啊,我告诉你,Linux内核的一个链表都够你研究好几节课的。哦,这个时候,数据结构啥的又得翻出来加强一下了不是,计算机网络啥的也得看看,操作系统原理啥的也得看看呢不是,把这些东西放在这里是合适的,前面让你知其然,知道怎么编程怎么做,现在要知其所以然了不是。
在学习的过程中,要不断积累和了解最新的东西,最起码要知道个概念,比如分布式,大数据,云计算,机器学习,计算机视觉,JIT等等,形成知识链,这样不会导致你最后不知道学啥。有个建议,一定要学一下Python,一定要学一下Python,一定要学一下Python,重要的事情说三遍。它能极大的提高你的工作效率,也能和C/C++结合在一起用,很nice的语言。
最后推荐几本书(前面的包含在内):
《鸟哥的Linux私房菜 基础篇》
《C程序设计语言》 丹尼斯写的
《Linux C编程一站式学习》 宋劲杉写的
《Eensstial C++》
《C++ Primer》
《Effective C++》
《Linux网络编程》 宋劲彬写的
《Unix环境高级编程》
《Unix网络编程》 两部
《Linux高级程序设计》 华清远见的
《MySQL必知必会》
《数据库系统概念》
《大话数据结构》
《算法导论》
《Linux内核情景分析》
《深入理解Linux内核》
《深入理解计算机系统》
《现代操作系统》
《深入理解计算机网络》
《TCP/IP》的三卷经典书
对于Linux的学习,可以分为四个阶段,Linux初级入门阶段→Linux中级进阶→Linux高级进阶→Linux资深方向细化阶段
第一阶段:初级阶段
初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线。
1. Linux基础知识、基本命令;
2. Linux用户及权限基础;
3. Linux系统进程管理进阶;
4. linux高效文本、文件处理命令;
5. shell脚本入门
第二阶段:中级进阶
中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。
1. TCP/IP网络基础;
2. Linux企业常用服务;
3. Linux企业级安全原理和防范技巧;
4. 加密/解密原理及数据安全、系统服务访问控制及服务安全基础;
5. iptables安全策略构建;
6. shell脚本进阶;
7. MySQL应用原理及管理入门
第三阶段:Linux高级进阶
1. http服务代理缓存加速;
2. 企业级负载集群;
3. 企业级高可用集群;
4. 运维监控zabbix详解;
5. 运维自动化学习;
第四阶段:Linux资深方向细化
1. 大数据方向;
2. 云计算方向;
3. 运维开发;
4. 自动化运维;
5. 运维架构师
第一阶段:初级阶段
初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线。
1. Linux基础知识、基本命令;
2. Linux用户及权限基础;
3. Linux系统进程管理进阶;
4. linux高效文本、文件处理命令;
5. shell脚本入门
第二阶段:中级进阶
中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。
1. TCP/IP网络基础;
2. Linux企业常用服务;
3. Linux企业级安全原理和防范技巧;
4. 加密/解密原理及数据安全、系统服务访问控制及服务安全基础;
5. iptables安全策略构建;
6. shell脚本进阶;
7. MySQL应用原理及管理入门
第三阶段:Linux高级进阶
1. http服务代理缓存加速;
2. 企业级负载集群;
3. 企业级高可用集群;
4. 运维监控zabbix详解;
5. 运维自动化学习;
第四阶段:Linux资深方向细化
1. 大数据方向;
2. 云计算方向;
3. 运维开发;
4. 自动化运维;
5. 运维架构师
嵌入式Linux开发流程
在一个嵌入式系统中使用Linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过如下的过程:
1.建立开发环境
操作系统一般使用RedHat-Linux,版本从7到9都可以,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(例如arm-Linux-gcc、arm-μclibc-gcc),或者安装产品厂家提供的交叉编译器。
2.配置开发主机
配置MINICOM,一般的参数为波特率为115 200bps,数据位为8位,停止位为1,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样的。MINICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络,主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。
3.建立引导装载程序BOOTLOADER
从网络上下载一些公开源代码的BOOTLOADER,如U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据自己具体的芯片进行移植修改。有些芯片没有内置引导装载程序,例如三星的ARM7、ARM9系列芯片,这样就需要编写开发板上Flash的烧写程序,网络上有免费下载的Windows下通过JTAG并口简易仿真器烧写ARM外围Flash芯片的烧写程序,也有Linux下的公开源代码的J-Flash程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是系统正常运行的第一步。如果购买了厂家的仿真器当然比较容易烧写Flash,这对于需要迅速开发自己产品的人来说可以极大地提高开发速度,但是其中的核心技术是无法了解的。
4.下载别人已经移植好的Linux操作系统
如μCLinux、ARM-Linux、PPC-Linux等,如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过的,下载后再添加自己的特定硬件的驱动程序,进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,对于μCLinux这样的系统则需编译进内核进行调试。
5.建立根文件系统
从下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他程序。默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs、genromfs等工具产生烧写映像文件。
6.建立应用程序的Flash磁盘分区
一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性Flash(NOR型)512KB~32MB,有的系统使用非线性Flash(NAND型)8~512MB,有的两个同时使用,需要根据应用规划Flash的分区方案。
7.开发应用程序
应用程序可以放入根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于μCOS-II的方式。
8.烧写内核、根文件系统、应用程序
9.发布产品
买几本很好的书,然后用虚拟机一边看书一边学习,当然用真实机也可以。系统我建议用Red Hat 的,应为红帽企业版是最出名的,也是用得最多的。
学Linux最主要的是动手能力,
虚拟机 《鸟哥的私房菜》 看看 练练 还有就是开始的时候不要急 慢慢来 ,就重装系统开始,先安装个几次
用ubuntu,适合新手。
redhat几年没个人版本了,最烂
泣和瑞素:1.掌握至少50个以上的常用命令. 2.熟悉Gnome/KDE等X-windows桌面环境操作. 3.掌握.tgz、.rpm等软件包的常用安装方法 4.学习添加外设,安装设备驱动程序(比如网卡) 5.熟悉Grub/Lilo引导器及简单的修复操作. 6.熟悉Linux文件系统和目录结构. 7.掌握vi,gcc,gdb等常用编辑器,编译器,调试器. 8.理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程. 9.学习Linux环境下的组网.
蓬安县13321724903: linux学习的步骤? - ?
泣和瑞素: 教你一个快乐中学习linux的方式,就是安装Fedora系统,要自己亲手安装,然后根据 教程用命令配置你的linux系统,这里为什么说让你安装fedora系统呢,就是因为此 系统是命令操作为主的,能让你更好的得到锻炼,系统安装好后,你只要用这个系统 进行各种操作就可以了,例如看电影 听音乐 聊QQ等等,前提是这些软件你要手动去 用命令去linux源安装,在这些玩,用的过程中,你的linux知识不知不觉就提高了.遇 到不会的操作就多找找教程,我觉得这个学习没有步骤,因为你在使用linux系统时,对于linux 的知识已经在不断加深了. 纯手打,比较有诚意,复制一大篇根本没意 义.《linux就该这么学》是一本不错的教程哦
蓬安县13321724903: 如何学习linux以及Linux的学习路线我最近在学习Linux ?
泣和瑞素: 先学习Linux基础教程,然后有所了解了再慢慢确定自己的发展方向,嵌入式这个行业对linux的爱好者很受欢迎的哦~~
蓬安县13321724903: 如何学习linux操作系统??
泣和瑞素: 把我学习linux的方法告诉你吧!很快提升,也是一个很有趣的方法,曾经让我一个不懂linux的朋友快速的学会了哦! 1、先找一本基础的书,我当初用的是鸟哥的linux私房菜,基础篇和服务欺篇,当然了,我介绍我朋友用的也是他哦.貌似网上...
蓬安县13321724903: linux系统怎么学习?? - ?
泣和瑞素: Linux技术其实很好学,只要你找到方法就行,建议你读读linux的书,比如《linux就该这么学》,这本书写的就挺好的 其他回答1、先找一本基础的书,我当初用的是鸟哥的linux私房菜,基础篇和服务欺篇,当然了,我介绍我朋友用的也是他哦.貌似网上有电子版的.2、先大体上浏览一下书.不要很详细的看,看不下去,会烦的.3、安装一个linux的系统.在虚拟机上就可以了.4、把你的基础篇的书,从头到尾的敲上一遍,看看会出什么现象,多做试验哦.5、要做笔记的,把你敲试验的新得体会总结一下,这样就成你的知识了.6、要多出错误,多排除错误,这是通往高手的必经之路哦.7、多与别人交流
蓬安县13321724903: 怎么去学Linux?是不是只要懂命令就OK - ?
泣和瑞素: 学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz、.rpm等软件包的常用安装方法 4. 学习添加外设,安装设备驱动程序(比如网卡) 5. 熟悉Grub/Lilo引导器及简单的修复操作 . 6. 熟悉Linux文件系统 和目录结构. 7. 掌握vi,gcc,gdb等常用编辑器,编译器,调试器 . 8. 理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程. 9. 学习Linux环境下的组网.
蓬安县13321724903: linux要怎么学啊??
泣和瑞素: linux很多应用都是要用命令行配置来实现的,如果这点你无法接受的话就不可能学得下去的!学习方法就是在虚拟机下装个linux操作系统,然后买本linux书,从入门到精通的.然后根据书的内容,一步一步学下去.再加个QQ群或论坛,不懂的问高手,这样坚持一天学两三个小时坚持几个月就能入门了.
蓬安县13321724903: 怎样学习Linux??
泣和瑞素: 1,把电脑装成 Ubuntu 9.10 的操作系统; 2,买个 Linux 系统的手机,比如:MOTOROLA E680I,MOTOROLA A768,现在的二手都很便宜; 3,把一切在 温到死 做的事情搬到 Linux 下面; 4,把所有遇到的问题在网上搜索解决方案,或者购买相关书籍学习.
蓬安县13321724903: 我想学linux,应该怎么学? - ?
泣和瑞素: 起步 你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix 问题1:版本的选择 北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux 开发人员中用debian的最多,其次是redhat,从全球linux各应用领域...
蓬安县13321724903: 谁教教我怎么快速学习linux - ?
泣和瑞素: 1、由于初次安装RedHat,为了避免与WIN98冲突,我特地找个闲置的640M的硬盘,并把它设置为从盘,打算把RedHalt安装到该硬盘上.进入WIN98后,系统自动识别为D盘.(如何在同一硬盘上安装LINUX与WIN98,请参阅主页上中文HOW...