当前位置: 技术问答>linux和unix
菜鸟对linux的N多疑惑以及设想
来源: 互联网 发布时间:2016-08-16
本文导语: linux 应该算是软件,但和硬件联系也紧密,我以后要做底层的驱动开发。 linux 开源,整个系统对于开发者而言都是开放的,所以可以结合系统写出更有效率的应用软件。 驱动程序是这么个原理么?把...
linux 应该算是软件,但和硬件联系也紧密,我以后要做底层的驱动开发。
linux 开源,整个系统对于开发者而言都是开放的,所以可以结合系统写出更有效率的应用软件。
驱动程序是这么个原理么?把自己的写的模块加入到系统的Makefile中,我编译过内核源码,在make menuconfig后出现了很多的选项,难道这就是传说中的系统剪裁么?看了个视频,这个时候自己加载的驱动也会出现在里面,选上就行。然后把这个编译好了的东西下载到开发板里面。里面的bootloader我估计就像windows的bios,与最底层的硬件打交道,从而启动。好像这个bootloader都是汇编写的么?那么开发板里面还要有自己的编译器了,这个是怎么装的呢?下载的时候是通过交叉编译环境的,我现在的虚拟机装的linux是否可以进行这个操作呢?
linux全部都是命令行操作,这个感觉很难记住的。
我的fedora 12系统里面是没有内核源码的,这里也有菜鸟问过这个问题,然后自己下载个内核源码进行编译,内核和linux系统之间存在什么联系?既然没有内核源码,那为什么我的fedora 也能够顺利的进行工作呢?
睡觉去了先,希望菜鸟在此提问(经典问题也能得高分的),也希望高手点到为止一针见血的说清问题。多谢。
linux 开源,整个系统对于开发者而言都是开放的,所以可以结合系统写出更有效率的应用软件。
驱动程序是这么个原理么?把自己的写的模块加入到系统的Makefile中,我编译过内核源码,在make menuconfig后出现了很多的选项,难道这就是传说中的系统剪裁么?看了个视频,这个时候自己加载的驱动也会出现在里面,选上就行。然后把这个编译好了的东西下载到开发板里面。里面的bootloader我估计就像windows的bios,与最底层的硬件打交道,从而启动。好像这个bootloader都是汇编写的么?那么开发板里面还要有自己的编译器了,这个是怎么装的呢?下载的时候是通过交叉编译环境的,我现在的虚拟机装的linux是否可以进行这个操作呢?
linux全部都是命令行操作,这个感觉很难记住的。
我的fedora 12系统里面是没有内核源码的,这里也有菜鸟问过这个问题,然后自己下载个内核源码进行编译,内核和linux系统之间存在什么联系?既然没有内核源码,那为什么我的fedora 也能够顺利的进行工作呢?
睡觉去了先,希望菜鸟在此提问(经典问题也能得高分的),也希望高手点到为止一针见血的说清问题。多谢。
|
2. bootloader有部分代码是ASM, 大部分代码是C,可以看看一些开源的boot loader, 例如u-boot(它比较复杂).
3. linux既支持CUI,也支持GUI,在文本用户界面下,常见的shell都支持tab键补齐命令,查看命令的帮助方法也有很多,像man, info, pinfo.
4. kernel source code, 可以在 www.kernel.org上下载,像最新的Fedora core似乎装系统时都不安装源码了,在ISO镜像里有内核源码的安装包,也可以在kernel.org上下载。
5. 源代码经过编译和链接后,变成了机器码,即01二进制数据,CPU只认机器码。
6. kernel和操作系统之间的关系是kernel是OS的核心,kernel加上根文件系统和shell就组成了一个完整的OS,shell是一个user space的应用程序,负责解释用户输入的命令,显示处理结果等。例如bash, busybox(用于嵌入式环境).
|
大部分你的问号 回答都是正确或可以 以下额外说明一些例外的
- bootloader也是个程序 跟Linux一样交叉编译 环境基本相同
- linux系统是包括了内核和用户使用环境和工具软件
- 因为你的fedora内核是已经编译好的 如果你需要在你的系统里做内核或驱动开发才需要下载其源码
- bootloader也是个程序 跟Linux一样交叉编译 环境基本相同
- linux系统是包括了内核和用户使用环境和工具软件
- 因为你的fedora内核是已经编译好的 如果你需要在你的系统里做内核或驱动开发才需要下载其源码
|
linux全部都是命令行操作,这个感觉很难记住的。
--------------------------------
刚开始肯定感觉很难记住 但是学习 使用 熟练都有一定的过程 当你坚持使用一段时间后 什么操作该用什么命令你会自然而然的知道 当然一个命令的参数也有很多 当你不会的时候你man一下就可以了 当然linux那么多命令全部记住也不太可能 偶尔google一下 也未尝不可呀
我的fedora 12系统里面是没有内核源码的,这里也有菜鸟问过这个问题,然后自己下载个内核源码进行编译,内核和linux系统之间存在什么联系?既然没有内核源码,那为什么我的fedora 也能够顺利的进行工作呢?
-----------------------------------------------------------------------------------------------------------
其实内核源码 他也是源码呀 举个简单的例子 你下个apache的源码 你编译安装之后 那么源码还需要吗?
但是你突然发现你安装的apache缺少一些功能或者支持 你是不是要用源码来重新编译安装呀?
那同样内核源码通过编译安装之后 生成的启动文件放到了/boot 内核模块被放到了/lib/modules 等等
个人观点 仅供参考
--------------------------------
刚开始肯定感觉很难记住 但是学习 使用 熟练都有一定的过程 当你坚持使用一段时间后 什么操作该用什么命令你会自然而然的知道 当然一个命令的参数也有很多 当你不会的时候你man一下就可以了 当然linux那么多命令全部记住也不太可能 偶尔google一下 也未尝不可呀
我的fedora 12系统里面是没有内核源码的,这里也有菜鸟问过这个问题,然后自己下载个内核源码进行编译,内核和linux系统之间存在什么联系?既然没有内核源码,那为什么我的fedora 也能够顺利的进行工作呢?
-----------------------------------------------------------------------------------------------------------
其实内核源码 他也是源码呀 举个简单的例子 你下个apache的源码 你编译安装之后 那么源码还需要吗?
但是你突然发现你安装的apache缺少一些功能或者支持 你是不是要用源码来重新编译安装呀?
那同样内核源码通过编译安装之后 生成的启动文件放到了/boot 内核模块被放到了/lib/modules 等等
个人观点 仅供参考
|
?那么开发板里面还要有自己的编译器了,这个是怎么装的呢?下载的时候是通过交叉编译环境的,我现在的虚拟机装的linux是否可以进行这个操作呢?
-------------------------
1.要制作交叉编译工具链 网上有资料你可以查下
2.可以
-------------------------
1.要制作交叉编译工具链 网上有资料你可以查下
2.可以
|
PWD := $(shell pwd) #执行shell命令,把当前路径赋值给PWD
|
交叉编译工具链可以在pc下制作
在pc下交叉编译程序
把生成的程序传到板子上运行
在pc下交叉编译程序
把生成的程序传到板子上运行
|
zmlovelx 回答非常的清楚。