【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 教程 » 正文

如何Linux入门?

放大字体  缩小字体 发布日期:2020-04-25 05:00:28    浏览次数:23
导读

  我是一所比较一般的211大学的本科,保送本校马上读研,电子与通信工程专硕方向,觉得电路设计、模拟集成电路啥的都不感兴趣,想学习linux,包括linux嵌入式平台的开发与研究、linux内核的移植等,不知道如何入门。求推荐一些好书,嵌入式的linux开发板,包括需要安装那些发行版本的linux和编译环境。谢谢各位大拿!本人

  我是一所比较一般的211大学的本科,保送本校马上读研,电子与通信工程专硕方向,觉得电路设计、模拟集成电路啥的都不感兴趣,想学习linux,包括linux嵌入式平台的开发与研究、linux内核的移植等,不知道如何入门。求推荐一些好书,嵌入式的linux开发板,包括需要安装那些发行版本的linux和编译环境。谢谢各位大拿!本人有C/C++基础,通信原理、微机原理、电路方向的专业基础,单片机嵌入式的理论入门。

  一般情况下,大部分人接触Linux的机会并不多,对Linux平台下的开发更是一无所知。而现在的发展趋势却越来越表明:无论是作为一个优秀的软件开发人员,或是互联网、IT行业的从业人员,掌握Linux是一种很重要的谋生资源与手段,很多迹象表明这是一个很好的加分项。

  兴趣是最好的老师,建议你去摸索下Linux有些什么优点和特点,了解了这些可以提升你对Linux的好感,尝试着去了解、学习这些优点,掌握一些初级的“黑魔法”,相信你的心会慢慢得被Linux所捕获。

  Linux入门其实是很简单的,问题是你是否能有足够的耐心,花相应的时间和精力来折腾,是否不排斥重装系统这种枯燥且万能的学习手段。如果不愿意折腾可以说是学不好Linux的,要真正了解Linux的分区机制,对LVM使用相当熟练,没有个20次以上的Linux装机经验是积累不起来的,所以一定不要怕折腾。

  由于大家之前都使用Windows,所以我也尽可能照顾这些“菜鸟”。如果你第一次接触Linux,那么首先推荐在虚拟机中尝试安装、运行它,虚拟机Virtual Box、VMware Workstation ,前者开源且免费,而后者则是闭源的、收费的。我两者都使用过,前者免费固然好,性能上不如后者,如果你的Money足够多,可以尝试下正版VMware Workstation 。另外Virtual Box的安装包很小巧,Windows平台下安装包在90MB左右,而VMware Workstation 一般600MB以上

  关于学习什么Linux发行版,其实Linux的基本命令都是通用的,你如果在一种平台上面学好了,在其他平台基本上并不需要花多少功夫来重学。另外我还是推荐一下,如果是软件开发方向呢,Ubuntu是首选,它注重桌面用户的体验,界面绚丽、更新快、功能多,在版本选择最好选择LTS(Long Term Support)版本的。如果是服务器运维方向,或者对性能要求高、稳定性好呢,就选择CentOS和RedHat Enterprise Linux,在国内服务器系统领域,这两个Linux发行版算是份额很高的,具体他们的区别自己搜搜吧。

  接下来,你需要选一本书,然后专心致志的读完并吸收它,我见过很多初学者,一开始就买很多书籍,或者买很多视频,一会看看这个,一会看看那个的。可是呢?技术却丝毫看不见长进,因此初学者要谨记:“切忌这山望那山高,不一而终”。

  是该选书籍呢,还是视频呢?视频的效率真的很低的,比起看书,我认为效率至少要低一半以上了,所以我建议直接看书,或者网上找比较好入门帖子也是可以的。总之,视频不是首选,如果你时间多,也是可以的。

  对于就算一本很普通的书籍,如果你吃透它,对初学者来说都会带来很大的进步。因此,真的要选定一本,抱着这本不学完、不看完就不继续另一本的决心。关于Linux的书籍,我推荐《鸟哥私房菜》,这本书从最基础的安装Linux系统到高级服务部署,并且内容完全100%的覆盖了红帽RHCSA+RHCE认证考试范围,这样对想取得证书的朋友,也是非常有利的。它对Linux方面的知识进行了提炼,为初学者节省了很多的时间,可以少走很多弯路。你可以先百度一下这本书,看看这本书目录,再确定要不要用这本。我相信不会让你失望的,如果你不喜欢也可以选自己喜欢的,但是请坚持吃透它。

  选两三个Linux群,加进去。平时对群友问题认真对待的群友,可以加上,当你有问题的时候可以请教他,另外你在问问题的时候,请自己先试着解决,百度谷歌一下。最后实在解决不了再问,这样:

  二是培养独立解决问题的习惯。关于如何提问,这也是一门学问,不要逮着就乱问一通,你的把你这个问题详细描述一下,你在什么环境遇到什么问题?什么版本?自己做了怎样的尝试,还是不能解决,系统给的提示是什么?这才算是一个完整、高效的提问。有时候你提问不是人家不愿意你,而是你提问的水平太低了,想回答你吧,还得先问你几个问题确认一些情况,多么浪费人家的时间。每个人的时间都是宝贵的,谁都没有义务回答你的问题,因此,提问的时候需要考虑帮助你的人的感受。

  无论是什么技术,如果没有一定的兴趣,天天面对着软件界面、命令行,时间长了就会变得非常的枯燥、乏味,这也是为什么把兴趣放在文首了。一段时间后,你也许是步入佳境,也许是想放弃,我想对那些想放弃的人说:学习,本来就是一种修行。人们往往偏向于选择内心感到舒适的事物,此时想放弃,是因为你内心觉得枯燥得难以忍受,此时从了你的内心,那么你将被自己打败。人在成长的过程中,每一次成长都是你决绝了那个舒适的选择,远离舒适区就会让你成长,在工作中,老是做得心应手的工作,你并不会成长,如果你做高于你能力一点点的工作,你才会得到成长,不断的“一点点”积累,终究一日你会发现你的积累是十分巨大的,这也是数学中的“复利”。

  相信那些能让自己拒绝待在舒适区的朋友,会在这一条学习路上不停的前进,相信你们学习Linux能获得的收获,但是,前提依然是:耐心、坚持、从一而终。

  你想更深入了解学习Linux知识体系,你可以看一下我们花费了一个多月整理了上百小时的几百个知识点体系内容:

  前言:本文记录了自己从一个完全不懂Linux的人如何一步步学会Linux程序开发的过程。当然也希望本文能够达到它的目的,让那些和我一样没有任何基础的人也能快速入门Linux程序开发。

  Arm-Linux程序的开发并不像我们以前接触的Windows程序开发那样,关于平台的搭建就繁琐很多,所以在正式进入程序开发之前先对这种开发模式进行简要介绍,让一个即使没有任何Linux开发经验的程序员也能够看懂后面的内容。

  Windows系统。主要用来文件传送和一些简单的文本文件编辑。这个系统其实并非必需,只是因为目前PC机上最流行的系统仍然是Windows系统,我们的很多关于PC的文件和数据的操作习惯都是在Windows系统上养成的,已经对其形成了严重的依赖,所以Windows系统扮演着的“辅助开发系统”的角色。

  PC-Linux系统。在此系统上安装arm-Linux交叉编译器后,就可以对代码文本文件进行编译,生成可在arm-Linux系统中运行可执行程序。此系统被称为“Linux宿主机”,我们对Linux程序的开发工作(包括代码编写、调试和编译生成可执行文件)基本上就是在此系统上进行的。

  Arm-Linux系统。Arm-Linux程序运行的平台。此系统的硬件载体是一块小型的嵌入式arm板,我们在Linux宿主机上开发好程序并编译生成arm-linux可执行程序后,将可执行程序文件传送到嵌入式arm板中,然后就可以在arm板上直接运行此程序了。

  关于开发语言,因为目前购买的Arm-Linux嵌入式板提供的编译库都是C/C++的,所以一般选择C/C++进行程序设计。

  关于“三系统”的搭建方式,有两种方法:三台分立的单系统机器组合或者一台双系统PC机和一台单系统Arm板机器。但是不管采用哪种组合方式,各种系统的职能都是一样的,而且都是通过FTP、Telnet或者SSH等网络协议进行文件传输交流。

  “两机器”组合模式。在PC机上利用虚拟工作站可以同时运行两个系统,虚拟机上的Linux系统基本可以完成所有的实体PC-Linux机器的所有任务,当然也能够组建局域网。

  如果开发人员对机器性能要求比较高,那么建议采用“三机器”组合模式。因为“两机器”组合模式要求一台机器运行双系统,每个系统都需要分配一定的硬件资源,可能会对每个系统运行的流畅程序都造成影响。

  如果开发人员只进行一些简单的程序开发,则建议采用“两机器”组合模式。这样可以节省硬件设备的投资,而且开发环境的搭建、开发的流程等等都会简单一些。而且下面的内容都是基于这种“两机器”组合的开发模式。

  目前比较流行的虚拟工作站比较多,推荐使用VM-ware WorkStation。建立虚拟工作站的目的就是为了使一台机器同时运行多个不同类型的系统,方便开发人员进行跨平台开发应用程序。

  安装虚拟机的过程和安装实体机一样,唯一的区别是,虚拟机安装是从VMware中打开并安装的。先准备Linux安装文件,一般可以到网上下载到Linux的iso安装文件,然后从VMware中安装此系统。

  1.安装Fedora-10并选择完全安装,即把所以的包和选项都勾上。这样在安装完毕后,系统就自带了很多开发工具和相关的库,避免自己去重新进行烦琐的基本开发平台搭建。

  2.在VMware中为虚拟系统配置硬件资源。建议分配硬盘空间16G,内存1G以上。因为今后主要的Linux程序开发工作是在虚拟机上进行了,所以为了保证虚拟机流畅运行,需要分配比较丰富的硬件资源。

  在第一次从ISO文件中安装完毕虚拟机后,在安装目录下面会生成一系列的文件,将这些文件进行备份后,在其它机器上安装虚拟机的时候就花几个小时去从ISO中安装了,将这个目录下的文件复制到相应的目录下面(在第一次从ISO中安装的时候设定的目录相同),然后只需要从VMware中打开此目录下的文件就行了。

  打开后,就可以看到一个虚拟机的硬件资源配置了。这些参数有一部分是在只能在初次使用iso安装的时候配置的,比如硬盘大小。另外一些参数比如内存大小、共享目录等等可以在后期随时人工更改的。

  安装完毕Fedora后,就可以从虚拟工作站中启动Fedora Linux系统了。系统桌面如下:

  在第一次安装完毕虚拟机后开启虚拟机,默认的分辨率是800*600,同时没有全能共享目录。为了获得比较好的操作界面,同时方便文件共享和转移,需要进行一些基本的配置。

  在同一个硬件PC机上运行的两个系统。Windows实体系统用来做一般的用途,比如联网,处理文档等等;Fedora Linux虚拟系统则用来开发Linux程序并进行编译生成可执行文件。

  共享目录的好处是可以将这些文件在Windows系统中提取出来,然后可以通过我们熟悉的windows系统进行网络传输和一些其它命令操作。这个设置在后面程序开发的时候会提到其使用方法。

  建立共享目录可以方便虚拟机和实体机进行文件交流。例如,我们可以将在Linux机器上编译生成好执行文件放置到共享目录中,然后可以通过Windows机器提取出来并通过网络传送到arm-linux嵌入式板上。

  在VMware工作站中调整虚拟机桌面分辨率。一般默认是800*600,而且现在的显示器,一般是1024*768甚至更高,以我目前使用的电脑显示器为例,分辨率是1440*900。需要将虚拟机桌面分辨率进行适当调整,然后全屏,那么就可以获得比较友好的操作界面。

  虽然Fedora已经自带了一些必要的软件,如Open Office办公软件,gedit记事本软件,Firefox网页浏览器等等。但是既然是操作系统,我们也可以安装一些我们需要的软件。比如中文输入法(如:小企鹅输入法),聊天工具(如QQ)等等。

  Fedora-linux虚拟机安装完毕并进行基本设置后,就可以开始了程序开发环节了。在正式开始程序开发时,还需要对Linux的一些基本编程工具进行简要介绍,当然如果已经有此基础的,可以直接略过这一章。

  熟悉Windows系统的DOS操作界面的人肯定也会对此操作终端也不会陌生。通过在Terminal中输入命令,用户可以很方便地完成Linux下的一系列操作,在正式进入自主程序设计之前,用户有必要对下面一些最基本命令进行熟悉(其它的命令在项目需要的时候再到网上查找相关资料)。

  虽然目前Fedora为用户提供了比较良好的操作界面,但是Linux最初是从命令行的操作系统发展起来的,很多强大的功能都是需要依靠Terminal控制终端来实现的,所以作为开发人员有必要先对这些基本命令进行熟悉并熟练操作。

  如果在安装Fedora的时候,选择的是完全安装,系统会自带很多开发工具。其中Fedora -Eclipse CDT和Qt库及相关设计器Qt Designer是我们今后开发的主要工具。

  然后就是下面就是Eclispe的IDE环境了,有过Windows下的Java编程经验的人来说,这个界面是再熟悉不过了,完全可以直接过渡到Linux下的C/C++程序开发上来,这样就极大地减少了程序员的学习周期。

  因为开源,所以可扩展性很强,Eclipse实际上就是一个万能的程序开发环境,只需要在设置中对相关语言的库进行引用并连接相应的编译器,就可以对基于任何语言的程序进行开发;因为免费,所以省去了注册软件等等琐事。因为跨平台,所以当用户进行跨平台程序设计的时候,可以极大减少学习周期。

  Eclispe在Windows平台下一般都是作为Java的开发环境,用来开发Java桌面应用程序和Jsp网页应用程序甚至目前比较流行的Android手机终端软件。在Linux下面对C/C++的库编译器进行了连接后,则成为Linux下的C/C++开发环境,在Linux下安装JDK后则可以进行Linux下的Java程序设计,如果给Linux系统安装tomcat网页服务器,则可以进行Linux下的网页应用程序开发,如果给Linux安装mysql数据库服务,则可以进行数据库连接操作等等(因为目前我们的目标主要是arm-linux窗口程序开发,所以主要对C/C++进行研究)。

  如果只是编写C/C++控制台软件,则只需要Eclipse CDT就完全可以解决。但是如果要进行窗体化编程,就需要引用一些开源的界面库。例如目前比较流行的Qt库。

  Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但Qt具有优良的跨平台特性、面向对象 、丰富的API、大量的开发文档等优点。

  在Eclipse中对项目Build选项进行设置,对Qt库进行连接,然后就可以进行Linux下的Qt程序进行开发了。

  因为Eclipse没有提供可视化的窗体程序设计器,所以需要借助第三方工具,QtDesigner可以很好的解决Qt的UI设计问题并编译生成对应的*.h和*.cpp文件(具体的操作步骤将在下面的内容中详细介绍)。

  所谓“工欲善其事,必先利其器”,前面花了大量篇幅来介绍,都是为了“磨刀”,现在开始进入“砍柴”环节。下面将以Eclipse CDT作为开发环境来介绍Linux和arm-linux程序开发的一般方法。

  说明:如果是开发控制台程序,则不需要进行任何其它设计,只需要直接编写C++代码即可,不用对编译库和编译器进行设置,Eclipse已经为我们自动完成了这些内容。

  就像在Window环境下,如果要用C++开发窗口程序,我们一般需要使用Windows API或者MFC。同样,在Linux环境下,我们可能在C++项目中引用Qt库来进行Linux下的窗口程序开发。

  编写窗口程序,我们只需要在建立了C++ Project的情况下,对C/C++ Build路径进行设置,指向qt-3.3的库即可。主要开发流程如下:

  第二步:设置Build路径指向Qt。在项目管理器中右击项目文件设置项目属性,在C/C++ Build的Settings的Tool Settings中进行设置。

  【GCC C Compiler】--【Directories】添加包含的文件路径:/usr/lib/qt-3.3/include。这个是设置C语言编译器包含的头文件路径,因为有时候C++中会考虑到兼容一些C语言的语法和关键字,所以最好也进行相关设置。

  总结:通过上面对Linux下面的控制台程序及窗口程序的介绍,我们已经对Linux系统下的简单程序开发流程有了简单了解。下面开始介绍arm-Linux程序的开发。

  Arm-Linux机器采用的是飞凌嵌入式技术公司的FL2440开发板。在飞凌公司购买开发板的时候,会随开发板一起赠送的相关入门教程《飞凌开发板配套教程》并附有一张光盘,里面有各种写FL2440相关的开发资源。

  Arm-linux系统:熟悉利用一些文件系统和网络设置相关的命令。如果你对Linux命令已经有了一定了解,那么arm-linux上的命令也基本一样。

  在早期的开发环境方式中,是先用文本编辑器编写c或者cpp文件,然后再直接在Linux机器上通过交叉编译命令,编译代码文本文件并生成可执行程序,然后将可执行程序传送到arm-linux板上,然后就可以在arm-linux机器上运行程序了。

  现在的开发模式和早期的开发模式一样,只是在编写代码的工具上进行了改进。早期编写代码的工具只要是能编辑文本的软件就可以,甚至在Linux中通过终端的vi命令就可以搞定,Linux机器的职能仅仅是编写代码和编译代码。现在则使用Eclipse CDT,可以在Linux机器上编写C/C++代码并进行调试,Linux机器基本上可以模拟arm-linux系统上除了一些硬件相关度高的应用程序(如驱动程序)之外的绝大部分其它程序的运行环境。

  其实和用Eclipse CDT编写Linux环境下的控制台程序是完全一样。除了在一些特别的场合,比如编写驱动程序,需要注意差别外,其余的功能的实现方法基本上一样。

  虽然生成程序的源码是一样的,但是在Linux机器上编译生成的可执行文件是不能在arm-linux系统上运行的,需要用arm-linux专用的编译器进行编译后,才能生成可在arm-linux系统上运行的可执行文件,当然此时应用程序又显然不能在Linux系统上运行了。

  将交叉编译工具cross-2.95.3.tar.bz2(可以到网上下载,也可以到开发板附带的光盘资源中找到)通过共享目录传送到Linux系统中,然后在Linux系统终端中先进入其文件目录,然后执行解压命令:

  然后在/usr/local/arm文件目录下可以看到解压后的2.95.3的库了,或者如果你解压的是cross-3.4.1.tar.bz2的版本,那么将会在对应目录下生成3.4.1的目录。

  然后设置环境变量。因为Linux机器上存在不止一种编译器,为了避免环境变量冲突,最好新建一个账号,比如新建账号arm-linux-gcc,然后在对应的账号目录中找到.bash_profile文件,设置环境变量,编辑.bash_profile,在最后一行增加路径(vi打开文本文件,按i表示insert修改文本文件,然后Esc退出insert模式,再shift zz表示保存退出文件,详细的命令介绍可以到网上查阅相关资料):

  在编辑好了代码文件并建立好了交叉编译环境后,就开始编译代码生成可执行程序,并移植到arm板上运行程序。

  然后通过SSH服务和FTP服务,将可执行文件从Linux文件系统网络传送到arm-linux文件系统(在此用到了两个小软件SSH Secure和LeapFTP,在后面再对软件的功能进行一下简要介绍)。

  注意:需要先通过chmod +x CppHello来告诉系统此文件是可执行文件,然后再通过./CppHello来运行程序。

  1.如果arm-linux系统的ftp和telnet连接不上,一般情况下是arm-linux默认没有开启相应的服务或者默认ip和windows机器不在同一网段。可以通过串口线将arm板连接到电脑上,然后打开超级终端,输入命令vsftpd&开启ftp服务,输入命令telnetd开启telnet服务,ifconfig eth0 192.168.1.16设置IP到同一网段。

  2.如果Linux系统的SSH连接不上,则一般情况下是Linux系统开启了SSH的防火墙,则只需要在Linux系统中对防火墙进行相关设置,关闭针对SSH的防火墙。【System】--【Administration】--【Firewall】,然后勾选全能SSH。

  还有一些其它软件,比如小组协作时候,需要使用SVN进行代码管理;还有远程桌面VNC Viewer,可以进行远程桌面控制(但是效果不太好,桌面显示的延时好像比较严重)等等。

  在Linux系统中新建目录/root/yizhi,然后将已经编译好的arm-QT库复制到此目录下面。

  在进行arm-linux下的Qt编译的时候,也涉及到环境变量设置问题,所以我们也最好再新建一个账户,专门用于编译arm-Qt程序。

  例如,在Linux系统终端中添加用户zsm,然后进入到/home/zsm中,对.bash_profile进行修改,设置环境变量:

  设置好后最好重新登录此账号,然后在终端中输入echo $PATH来检验环境变量是否设置成功:

  如果出现上面的输出,则表示arm-linux平台下的Qt交叉编译环境的环境变量已经设置成功。接下来就可以进行Qt程序开发了。

  在3.2节中已经写好了一个单文件的项目QtHello,并在项目的src目录下生成了一个QtHello.cpp文件,然后我们要做的就是利用arm-linux下的Qt编译器对其进行编译。

  编译Qt窗体项目比编译普通控制台项目要稍微麻烦一点,需要自己写makefile来建立编译规则,编译如上的QtHello.cpp的makefile有如下模板:

  用zsm账号登录(因为关于arm-Qt库的编译环境变量是在此账号中设置的),然后执行如下步骤:

  2.用eclipse或者其它文本编辑器,修改makefile里面的TARGET一项为当前项目名称

  4.然后会在src目录下面生成一个指定名称相应的QtHello文件,这个就是arm目标板上的运行程序了。

  前面所介绍的不管是控制台还是窗体程序,都属于单文件项目的范围。而当程序的功能比较复杂时,则往往需要很多模块和文件,这样在向arm-linux上移植程序时会更加繁琐一些,需要开发人员自己写makefile,建立多文件的编译规则。

  因为我对此没有进入深入一点的研究,所以只能提供下大致思路和在开发程序时遇到的一些常见问题及解决方案。如果今后有机会有时间的话,则会对makefile进行深入一点的研究,最好是能以Eclipse自己生成的makefile模板为基础进行简单的修改,然后就可以编译生成arm板上的可执行程序。

  多文件的控制台程序的makefile可能会容易一些,自己也没有研究过,以前在使用Magic C++编写C++控制台程序的时候,只需要对Magic C++生成的makefile模块中的编译器进行修改就可以轻松为多文件生成基于arm-linux平台上的控制台程序。

  (关于如何对Eclipse的makefile模板进行修改,目前还没有研究过,今后有时间研究的话,再补充上吧。)

  目前只对简单的多文件项目进行了尝试:一个main函数文件,一个窗体头文件,一个窗体实现文件。

  在Linux系统中打开Qt Designer,然后进行可视化窗口设计。然后点击保存为mydialog.ui文件。

  显然这个文件是不能直接被C++项目引用的,需要使用Qt Designer的编译器进行编译,生成和界面对应的h和cpp文件。

  然后生成的mydialog.h和mydialog.cpp文件就是和mydialog.ui相对应的程序代码文件了。可以在Eclipse项目中直接对此文件进行引用,就可以显示对应的窗体了。

  这是在引用Qt的库时,产生了某些歧义,需要进行一些预先处理,生成和界面文件相对应的moc文件,关于问题的详细介绍可以参考下面的帖子:

  可能的问题是Qt库版本问题,或者是有些Qt运行环境在Linux机和arm-linux机上有所不同,这就需要重新寻找新的代替解决方案。正是因为这些很多不确定的因素,所以在进行arm-linux界面程序开发时,需要经常在编写一段新代码就要在arm板上进行测试,可以避免做太多无用功。

  关于多文件Qt项目向arm-linux系统上的移植,比较核心的技术应该就在makefile上吧,目前自己了解太少,只限于对模板的应用,所以下面的就写不下去了。

  结语:OK,写到这里了。在上个学期就花过一段时间学习Linux,然后中断了半年,这个学期又进行了深入的学习,把以前的内容和现在的内容串接起来了,终于有了比较清晰一点的思路和体会了,所以总结一下,也让将来的自己再回头学习时有一点借鉴吧。感谢胡师兄的一点一滴的指导。

  来源:Linux及Arm-Linux程序开发笔记(零基础入门篇) - 一点一滴的Beer - 博客园

  刚刚学习linux两个月不到,对于这个问题,我有自己切身学习的体会。如果按照楼上大多数人所说的学习linux仅仅单纯学习工具,比如命令行,vim,仅仅为了用工具的来学习linux,linux学习起来枯燥乏味。以下是我两个月来学习linux的一些感想,希望对楼主有帮助。1、开始上手避免工具控,比如为了学习vim,就一直在练习vim的命令,我建议是根据问题来,可以自己要在linux下写个小程序,然后在编码过程中,有针对性的去寻找命令的用法,这样做可以让自己对命令牢记深刻,然后编译程序,调试程序。在这个过程中你自然而然你会去学习gcc、gdb、makefile。这个过程很慢,但你走完一遍,你就会学到很多命令行和工具。2、多在linux下写程序,你的linux方面入门命令之类的基础就有了。接着可以去看看linux相关的书籍,(鸟哥私房菜),反正就是过一遍这个系统基础知识,过一遍是为了以后再用linux时出现问题能够快速定位找答案。3、接着你可以折腾一下自己,可以试着部署服务器,试着去做点和应用有关的事情,从中发现问题,自己想办法解决,逐渐的,linux 系统就熟悉起来。4、如果你有一定的操作系统的基础,算法和数据结构基础,可以尝试着阅读linux内核等知识,然后整个linux内核体系逐渐构建起来。

  首先我不得不承认,我是BSD阵营的。linux 的经验还是来自很多年前体验 RedHat 以及后来安装过几次Fedora……对你说的方面更是没什么经验了。

  从我自己对 Linux 的感觉说起来,你需要做的第一件事情就是把英文练得好好的;其次,就是找一两本你感兴趣的 Linux 书籍,然后从自己感兴趣的方面读一读,无需通读研究整本书。然后,就是要善于找问题,问问题。到相关方面的邮件列表上参与大家的讨论等等。最后就是实践了,早早的开始去做一个实际的项目,在交流和学习中进步。

  本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。

  确保自己的英文阅读能力足够应付满屏满屏的英文文档,多man 或者 info,遇到与发行版相关的问题多查wiki,放心吧,这些英文比考研英语阅读容易多了 - -

  里提供的免费电子书,不要偷懒去买纸质翻译本,译的很渣。。。如果确实要留一本中文纸质书,建议《UNXI&Linux大学教程》 ,译的不错,而且一大厚本读的很轻松。

  刚装完基本系统之后,不要急着去装图形界面折腾各种驱动,先老老实实的在文字界面呆着练熟一些简单的命令。(上网查资料用pad)

  自己感觉良好后装好图形界面,然后随便你折腾。。。。(最后,还是不要建议图形界面开机自启动)

  可能题主对Linux的开发方向还不是很熟悉,你说你不喜欢电路设计、模拟集成电路啥的,但你又说想做Linux内核移植之类的。而你所理解的Linux开发,我感觉应该是偏底层的开发。而一旦涉及到底层,就会跟硬件打交道,就会跟你不喜欢的那些东西打交道。

  文章里提到Linux分三个方向,其实后面两个可以合并,也就是Linux开发一般分为两个方向:

  有没有比《鸟哥的Linux私房菜》更好的书?有没有学习Linux比较好的入门书籍?求推荐学习linux命令的书籍?嵌入式Linux有哪些好书推荐?

  有了书籍,还需要一些资料,我同样也共享了。我自己本身也是自学过来的,所以我把自己自学过程中所使用的资料全部分享出来:

  书籍与资料都有了,现在就可以好好学习Linux了。不管是什么方向的Linux,首先肯定要搭个Linux环境,再学基本命令,再进阶高级命令。然后再根据自己的方向,做更深入的学习,比如应用方向就学进程,线程之类,底层就学内核移植、驱动开发之类。

  装上一个Linux系统,将自己的工作移到Linux的环境下,然后你会发现出现了一连串的问题,试着去查询资料,解决这些问题,并且做下记录。当这些问题都解决得差不多的时候,基本上已经入门了。然后再根据自己的工作性质去看一下Linux系统方面的书,很快,你就能熟练掌握、运用Linux了。当然,也要明确一点,并不是每个Linux的使用者或者开发者都要去读源码的,呵呵。

  这篇文章主要介绍了Linux入门的一些基本知识整理,包括最基本的一些快捷键,基本的文件目录说明以及关机的操作,需要的朋友可以参考下

  Linux预设提供了六个命令窗口终端机让我们来登录。默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 …tty6,你可以按下Ctrl + Alt + F1 ~ F6来切换它们。如果你安装了图形界面,默认情况下是进入图形界面的,此时你就可以按Ctrl + Alt + F1 ~F6来进入其中一个命令窗口界面。当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。如果你用的vmware虚拟机,命令窗口切换的快捷键为 Alt + Space + F1~F6. 如果你在图形界面下请按Alt + Shift + Ctrl +F1~F6 切换至命令窗口。

  Ctrl + C:这个是用来终止当前命令的快捷键,当然你也可以输入一大串字符,不想让它运行直接Ctrl + C,光标就会跳入下一行。

  Tab: 这个键是最有用的键了,也是笔者敲击概率最高的一个键。因为当你打一个命令打一半时,它会帮你补全的。不光是命令,当你打一个目录时,同样可以补全,不信你试试。

  Ctrl + Z: 暂停当前进程,比如你正运行一个命令,突然觉得有点问题想暂停一下,就可以使用这个快捷键。暂停后,可以使用fg 恢复它。

  /dev dev是Device(设备)的缩写。该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  /home用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

  /lib这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

  /media linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

  /mnt系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

  /opt 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  /proc这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

  /selinux 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  /sys 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs,sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统种被创建。

  /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。

  /var这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。/etc:上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。/bin, /sbin, /usr/bin,/usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。值得提出的是,/bin, /usr/bin是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。 /var:这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log目录下,另外mail的预设放置也是在这里。

  其实,在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

  linux和windows不同,在 Linux底下,由于每个程序(或者说是服务)都是在在背景下执行的,因此,在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作,例如浏览网页啦、传送信件啦以FTP传送档案啦等等的,如果你直接按下电源开关来关机时,则其它人的数据可能就此中断!那可就伤脑筋了!此外,最大的问题是,若不正常关机,则可能造成文件系统的毁损(因为来不及将数据回写到档案中,所以有些服务的档案会有问题!)。

  如果你要关机,必须要保证当前系统中没有其他用户在线。可以下达 who 这个指令,而如果要看网络的联机状态,可以下达 netstat -a这个指令,而要看背景执行的程序可以执行 ps -aux这个指令。使用这些指令可以让你稍微了解主机目前的使用状态!(这些命令在以后的章节中会提及,现在只要了解即可!)

 
关键词: linux入门
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:http://www.31duo.com/news/show-171338.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4