菜鸟对linux的N多疑惑以及设想

hallowwar 2010-04-03 01:35:22
linux 应该算是软件,但和硬件联系也紧密,我以后要做底层的驱动开发。
linux 开源,整个系统对于开发者而言都是开放的,所以可以结合系统写出更有效率的应用软件。
驱动程序是这么个原理么?把自己的写的模块加入到系统的Makefile中,我编译过内核源码,在make menuconfig后出现了很多的选项,难道这就是传说中的系统剪裁么?看了个视频,这个时候自己加载的驱动也会出现在里面,选上就行。然后把这个编译好了的东西下载到开发板里面。里面的bootloader我估计就像windows的bios,与最底层的硬件打交道,从而启动。好像这个bootloader都是汇编写的么?那么开发板里面还要有自己的编译器了,这个是怎么装的呢?下载的时候是通过交叉编译环境的,我现在的虚拟机装的linux是否可以进行这个操作呢?
linux全部都是命令行操作,这个感觉很难记住的。
我的fedora 12系统里面是没有内核源码的,这里也有菜鸟问过这个问题,然后自己下载个内核源码进行编译,内核和linux系统之间存在什么联系?既然没有内核源码,那为什么我的fedora 也能够顺利的进行工作呢?
睡觉去了先,希望菜鸟在此提问(经典问题也能得高分的),也希望高手点到为止一针见血的说清问题。多谢。
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Apple_Demo 2010-04-05
  • 打赏
  • 举报
回复
zmlovelx 回答非常的清楚。
帅得不敢出门 2010-04-04
  • 打赏
  • 举报
回复
?那么开发板里面还要有自己的编译器了,这个是怎么装的呢?下载的时候是通过交叉编译环境的,我现在的虚拟机装的linux是否可以进行这个操作呢?
-------------------------
1.要制作交叉编译工具链 网上有资料你可以查下
2.可以
hallowwar 2010-04-04
  • 打赏
  • 举报
回复
楼上几位大侠的回答让我受益匪浅啊,非常感谢。乘着周末,好好研究下,再找几个问题问问。
帅得不敢出门 2010-04-04
  • 打赏
  • 举报
回复
PWD := $(shell pwd) #执行shell命令,把当前路径赋值给PWD
帅得不敢出门 2010-04-04
  • 打赏
  • 举报
回复
交叉编译工具链可以在pc下制作
在pc下交叉编译程序
把生成的程序传到板子上运行


hallowwar 2010-04-04
  • 打赏
  • 举报
回复
回楼上: 交叉编译工具可以在开发板里面对源码进行编译的?

再问:$(shell pwd),这个是什么意思?是取值pwd 操作之后的值吗? 这是什么语法啊。
Wenxy1 2010-04-03
  • 打赏
  • 举报
回复
1. 驱动程序在kernel space 工作,既可以编译进内核,也可以用内核模块的方式动态加载。驱动程序是对硬件的寄存器进行操作,一般还要处理中断请求,为应用程序提供一个访问硬件的API。

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(用于嵌入式环境).
steptodream 2010-04-03
  • 打赏
  • 举报
回复
linux全部都是命令行操作,这个感觉很难记住的。
--------------------------------
刚开始肯定感觉很难记住 但是学习 使用 熟练都有一定的过程 当你坚持使用一段时间后 什么操作该用什么命令你会自然而然的知道 当然一个命令的参数也有很多 当你不会的时候你man一下就可以了 当然linux那么多命令全部记住也不太可能 偶尔google一下 也未尝不可呀

我的fedora 12系统里面是没有内核源码的,这里也有菜鸟问过这个问题,然后自己下载个内核源码进行编译,内核和linux系统之间存在什么联系?既然没有内核源码,那为什么我的fedora 也能够顺利的进行工作呢?
-----------------------------------------------------------------------------------------------------------
其实内核源码 他也是源码呀 举个简单的例子 你下个apache的源码 你编译安装之后 那么源码还需要吗?
但是你突然发现你安装的apache缺少一些功能或者支持 你是不是要用源码来重新编译安装呀?
那同样内核源码通过编译安装之后 生成的启动文件放到了/boot 内核模块被放到了/lib/modules 等等

个人观点 仅供参考
toborac 2010-04-03
  • 打赏
  • 举报
回复
大部分你的问号 回答都是正确或可以 以下额外说明一些例外的
- bootloader也是个程序 跟Linux一样交叉编译 环境基本相同
- linux系统是包括了内核和用户使用环境和工具软件
- 因为你的fedora内核是已经编译好的 如果你需要在你的系统里做内核或驱动开发才需要下载其源码

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧