关于linux:EDA和工具00GNU-Linux使用基础

53次阅读

共计 3818 个字符,预计需要花费 10 分钟才能阅读完成。

GNU/ Linux 应用根底

这篇博客没有任何用意成为一个大而全的应用教程, 在这里只是记录一下这几天做个小我的项目所用到 / 回顾到的基础知识, 不便疾速入门. 文中的正文为理解内容, 文末为一些好的学习材料链接.

[TOC]

作为普通用户, PC 端常见的操作系统有: Windows, Mac OS, 及类 Unix 零碎(GNU/Linux).

1. GNU/ Linux 选用

  • 作服务器 | Fedora 系列: CentOS, RedHat, Fedora
  • 集体开发 | Debian 系列: Ubuntu, Debian (树莓派 -Raspbian)
  • 喜爱折腾 | Arch Linux
  • 搞嵌入式 | 自行裁剪 Linux

嵌入式设施的 OS(可能的学习程序): 裸机开发 -> uCOS-II -> uClinux -> Linux 内核 -> Roadmap

其它: RT-Thread, Free RTOS, VxWorks, Windows CE

2. 零碎装置

这一节是个别教程间接略去的中央, 我这里简述.

2.1 零碎装置计划

集体开发, 我选用的零碎为 Ubuntu. 当初个别有两种支流的版本, 18.04 和 16.04. Linux 的版本号是有考究的, 这里不赘述. 我应用的是 Ubuntu 18.04 作为我开发深度学习的环境, 而 Ubuntu16.04 作为我装置 Synopsys EDA Tools 的环境. 零碎装置, 个别有三种计划:

  1. 新买一台电脑, 折腾

    不事实.

    然而能够有另外一个计划: 买一个树莓派, 配置 Raspbian, 学习基本操作.

  2. 给本人电脑装置双系统

    没问题, 然而最好有肯定的电脑折腾教训, 否则操作不好可能会失落原操作系统文件.

  3. 应用 VMware 一类的软件创立一个 GNU/ Linux 虚拟机应用

    举荐.

  4. 其它计划: 云服务器, 老手不举荐.

2.2 零碎装置参考

如果选用计划 1 :

  • 自购 PC: (因为是土豪玩家 ->)间接叫卖电脑的帮你装好 / 朋友圈 50 块大洋求助
  • 树莓派: 参考视频进行树莓派的选购与零碎装置, 或自行谷歌

如果选用计划 2 :

  • 我的主力机是联想援救者 Y7000, 装置 Windows 和 Ubuntu 18.04 双系统的参考链接, 亲测可行

磁盘调配过程中, 如果碰到 ”Windows 零碎压缩卷时可压缩空间远小于理论残余空间 ” 状况参考.

我的电脑配置为: 8G + 8G DDR4, 100G + 375G Disk. 双系统次要是为了训练深度学习模型. 总共划分了 100G 给 Ubuntu 零碎, 子项为:

/         20G;    //     主分区, 蕴含零碎和软件, 尽量大
Swap     20G;     /*    相似 Windows 虚拟内存, 
                    物理内存为 512Mb-2G 时, swap 设置为物理内存的 2 倍; 
                    物理内存为 2G-4G 时, swap 设置为物理内存的 1.5 倍; 
                    物理内存在 4G-8G 时, swap 设置等同物理内存; 
                    物理内存更大时, 设立为 0.75 倍; */
boot     512M;     //    启动分区, 蕴含操作系统内核和启动的程序, 200M - 1G
/Home     59.5G;    //    逻辑分区, 相似于 Windows 我的文档, 尽量大

如果选用计划 3 :

  • 能够网上找相干教程自行下载 VMware 装置
  • 我装置 Synopsys EDA Tools 的环境是 Ubuntu 16.04, 应用的是虚拟机计划, 参考链接

3. 根本应用

GNU/ Linux 在输出明码时是不会显示的, 输出时不要认为字没有打上去. 简略输完回车即可.

默认读者在零碎装置步骤中曾经实现了用户, 明码的设置, 并且胜利进入了图形界面(这里指桌面).

GNU/ Linux 零碎提供两种交互方式:

  • GUI, 图形用户界面

    零碎向用户提供图形的界面, 用户能够通过鼠标点击和键盘输入实现操作.

  • CLI, 命令行界面

    零碎向用户提供用于操作的 Shell, 用户通过输出命令实现操作.

GUI 的操作形式与 Windows 和 Mac OS 简直统一, 用于解决一些通用的工作(文档, 聊天, 视频, 游戏 …). 而 CLI 操作才是 GNU/ Linux 零碎的学习重点, 学习的话, 关上终端, 直面 CLI 即可.

这里又假如读者有一些简略的需要, 而后想应用 CLI 实现.

3.1 工作环境的概念

察看终端光标闪动的那一行, 结尾为 Your_User_Name@Host_Name ~$. 其中, ~ 代表的是以后的工作环境. 为了了解这个工作环境, 咱们能够进行一个简略的小试验.

首先咱们晓得有两个命令:

  • ls代表 list, 即列出当前工作环境下的所有文件
  • cd代表 convert to, 即切换以后的工作环境

于是咱们首先输出

cd Desktop

而后回车. 能够看到闪动光标的那一行的 ~ 曾经变成了 ~/Desktop, 阐明咱们曾经来到了~ 下的 Desktop 里了.

这里这个 Desktop 等价于咱们的桌面. 而后咱们输出

ls

而后回车. 能够看到, 什么都没有返回. 这是因为咱们的桌面目前还什么货色都没有. 于是咱们先最小化咱们的终端程序, 而后在桌面鼠标右键, 新建一个文件夹, 取上一个本人的名字. 而后再关上终端程序, 再输出

ls

而后回车. 此时咱们就能够看到它返回了咱们桌面新建的文件的名字.

于是, 咱们能够晓得, 工作环境这个概念, 其中就是指, 咱们以后处于那个文件夹内.

3.2 根本命令构造

终端里的输出的指令次要由三局部形成, 比方文件复制命令cp:

cp -r Desktop/test Desktop/test2

这个命令中, cp代表 copy, 指的是一个应用程序,

-r是对程序进行指定的参数, 这里用于指定文件夹内的文件,

前面的 Desktop/testDesktop/test2能够看作是应用程序的操作对象.

这个语句代表的意思是, 将桌面的 test 内的所有文件夹复制到桌面 test2 文件夹里.

这个能够本人先在桌面创立两个文件夹本人测试一下.

Anyway, 根本的命令构造为:

应用程序 - 程序参数 一个或者多个操作对象

于是, 接下来的学习, 就能够是, 学习更多的命令, 意识它们的参数, 成为 Linux 达人, 然而这样究竟是无聊的, 因为没有工作驱动.

所以, 咱们下一步应该做的, 其实是给本人找个什么货色折腾一下,

  • 比方尝试一下用 Linux 下的 C /C++ 工具链(GCC, G++, GDB);
  • 又比方配置个深度学习环境玩玩(Anaconda+Python+OpenCV+Pytorch+TensorFlow-GPU);
  • 比方搭建一个简略的基于 LAMP(Linux, Apache, MySQL, PHP)的集体小网站, …

折腾的时候, 基本上做的就是, 找个看起来靠谱的教程, 而后一行一行地跟着敲键盘.

可能很多命令都不晓得怎么回事, 然而这个敲的过程, 首先就能纠正很多习惯性的 Typo…

4. 略微零碎一点学习 GNU/ Linux 的应用

之前的折腾都是跟着他人的教程始终敲, 多上手练习手感, 也强制本人去查一些根本的指令. 反正整多几次后, 常见的比如说ls, mv, cd, rm, mkdir, nano, su… 这些应该都差不多有的印象了, 即收到某个简略的工作, 可能本人独立查找相干的帖子解决了.

而持续学习它的应用, 动机可能在于, 工作变得复杂了; 或者本人的需要比拟特地, 网上没有现成的; 再或者, 开始踏入某个具体的畛域, 那个畛域里的人的分享, 都是默认你会应用 GNU/ Linux 的.

这个时候, 举荐的书籍为: 鸟哥的 Linux 私房菜. (倡议买当下最新版本)

举荐的网络学习材料为: Linux 不入门到入门

这个阶段学习的时候, 如果呈现看不懂的状况, 那是非常失常的, 起因在于, 这时候才是真正地开始学习一个操作系统. (之前应用 Windows 和 Mac OS 时都是应用的他人建设在操作系统上的利用零碎 !)

如果真的对这块产生趣味了, 能够自行翻阅 深刻了解计算机系统 书籍, 进行计算机根底的扫盲.

再业余一点, 能够走这条路: 计算机组成原理 -> 操作系统原理 -> 计算机网络 -> (并行) 计算机体系结构

GNU/ Linux 的命令查问网址能够为: 查问

这个阶段学习重点能够是: 文件系统, 文本编辑器, 权限治理, Git+GitHub, 还能够再去理解几个近程拜访工具.

5. 脚本语言

能够说, 学习完 4 中的根底后, 读者曾经能够熟练地应用 GNU/ Linux 进行日常的工作了, 然而这并没有体现出应用 CLI 的劣势. 此时应该再学习一种叫做脚本语言的货色, 它的次要作用在于, 可能疾速地帮忙用户疾速地实现一系列繁琐的操作. 说到脚本语言, 最风行的, 肯定非 Python 莫属. 次要的脚本语言有:

  • Python
  • Csh
  • Bash
  • Makefile
  • Perl
  • TCL

对于普通用户, 学完 Python 和 Csh 足够. 而做运维或者嵌入式前端可能得多学个 Bash 和 Makefile. 而后做数字 IC 设计的话, 可能得学完.

6. 深刻

到这一大节, 就不属于这篇博客题目 ”GNU/ Linux 应用根底 ” 所可能涵盖的范畴了.

说到底, GNU/ Linux 也只是一个操作系统而已, 所以咱们能够从这些方面思考:

  • 向下看: GNU/ Linux 的移植与驱动开发

    对于嵌入式软件工程师, 一部分工作是, 基于操作系统进行利用的开发; 而另一部分的工作是, 对 GNU/ Linux 这个零碎的内核进行裁剪和移植, 或者是为某种设施开发驱动. 前者须要对开发平台的软硬件都具备相当高的了解, 后者更是须要, 粗浅地了解 Linux 内核的源码, 以及对操作系统所基于的硬件零碎的相熟.

  • 向上看: 网络应用, 服务器与运行保护

    如果咱们不是嵌入式场景, 而换成大规模服务器集群的场景, 即成为了互联网公司的运维工程师, 则此时咱们须要思考的事件是, 怎么搭建一个更好的网络通信与开发平台, 供咱们的后端 / 前端同学大展身手. 这种场景一方面须要对服务器架构非常纯熟, 也须要很扎实的网络根底.

当然, Linux 内核的源码也是美极, 能够学习他人的写代码的形式.

正文完
 0