我是一个中级程序员,有丰富的Linux内核编程经验。在实习期间,我主要参与了内核和驱动程序代码的调试。最近,我完成了罗伯特·洛夫( Robert )的“内核开发”一书的研究。我正在阅读Jonathan编写的Linux设备驱动程序手册。但我现在面临着一个令人不安的问题。这些书都没有教我如何编写真正的(硬件)设备驱动程序。LDD3e的书告诉我如何编写我非常擅长的基于内存的软件驱动程序和sysfs接口。那我从哪里开始呢?要求是什么,我该怎么做?
P.S:我已经开始阅读“的基本Linux设备驱动程序”一书。
我对所有这些细节以及它们如何在Linux中相互关联感到有点困惑。"Unix内部“一书指出,lightweight process (LWP)是内核支持的用户线程,内核看不到进程内部的线程。对于Linux,这仍然是正确的吗?
据我所知,用户空间线程被安排在进程内部,通过更高层次的抽象作为pthread库,而不需要内核的干预。我说的对吗?
我对操作系统编程很感兴趣,我想白手起家写我自己的内核。我精通C语言,还懂一点汇编。我打算买一本Andrew tanenbaum的书:"Operating systems Design and implementation“,开始读这本书。每个人都告诉我,这只是浪费时间,如果我放弃写自己的内核的想法就好了。但我只是想知道一切是如何在幕后工作的,学习编写自己的内核只是为了教育目的,我没有任何幻想,我的操作系统将是巨大的和可用的。
除了购买A.T OS Design and Implementation之外,还有什么方法可以了解OS在幕后是如何工作的?是否足以构建我自己的linux发行版?学
我已经开始阅读“必不可少的Linux设备驱动程序”一书。我正在遵循编译和引导到一个新内核的过程。但是,我无法引导到新编译的内核--我在grub中选择新内核,然后..nothing...the屏幕保持不变。
下面是我正在采取的步骤,正如书中所描述的(我使用的是内核2.6.24,因为这是本书的基础):
cd /usr/src/linux-2.6.24 # the base dir of the kernel I downloaded
make clean
cp arch/x86/configs/i386_defconfig .config
make bzImage
cp arch/x86/boot