kernel相关内容

访问在Linux 2.6.x的任何存储位置

我使用的是x86机器上的Slackware 12.2。我试图调试/倾倒的内存特定部分弄清楚的事情。不幸的是我对Linux内核的知识是相当有限的,以我所需要的编程/渗透测试。 因此​​,这里是我的问题:有没有访问任何一点在内存中的方法吗?我试图用一个字符指针,这样做,这样它只会是一个字节长。然而,程序崩溃和在大自然吐出来了一句:“不能访问内存位置”。现在我指着00000000哪个位置所在的系统存储 ..
发布时间:2016-07-18 21:37:36 服务器开发

呼叫从汇编引导程序C内核

编辑:PLZ跳到我的第二个职位低于... 我在寻找一个最低限度的办法从我的引导程序进入到我的内核。 你有什么可行的例子这样做呢? 下面是进入保护模式的引导程序: “boot.asm” [组织0x7C00]MOV BP,0×9000 MOV SP,BPCLI LGDT [gdt_descriptor];输入PM MOV EAX,CR0 或EAX,为0x1 MOV CRO,EAXJMP 0 ..
发布时间:2016-07-18 21:36:42 .NET Framework

使引导程序和内核成ISO?

如何创建简单的引导加载器加载内核成ISO?它已经5天,我在谷歌搜索和做试验和错误很多次,但一无所获.....我试过很多教程像mikeos,osdev,超新星爆发,宇宙操作系统,但仍然获得无解..... 我的电脑没有floopy磁盘,所以我不能使用floopy磁盘引导程序做... 我看到mikeos教程第一个扇区512字节启动加载和第二内核可以使用imdisk但使用floopy盘还他可以做的bo ..
发布时间:2016-07-18 21:30:20 .NET Framework

GCC内联汇编“钕”约束

我开发一个小玩具内核C.我在哪里,我需要从键盘获取用户输入的地步。到目前为止,我已实施 INB 使用以下code: 静态内嵌uint8_t有INB(uint16_t端口){ uint8_t有RET; ASM挥发性(“INB%1,%0”:“=一个”(保留):“ND”(端口)); 返回RET; } 我知道“= A”约束意味着人/ AX / EAX 将被复制到 RET ..
发布时间:2016-07-18 21:27:56 .NET Framework

错误13:同时用字符串启动简单内核的grub无效或不支持的可执行文件

我已经写了尝试两个字符写入到帧缓冲简单的内核。 如果我在内核中定义一个字符串,我得到以下输出在引导时: 引导“OS”内核/boot/kernel.elf错误13:无效或不支持的可执行格式preSS任意键继续...... 否则,如果我定义了两个角色我得到以下(注意'AB'在输出的开始): abBooting'操作系统'内核/boot/kernel.elf [多重精灵,< 0x10 ..
发布时间:2016-07-18 21:27:52 .NET Framework

获取使用Kprobes的函数参数

我已经把kprobe的功能,现在我需要在kprobe的prehandler函数的自变量的值。 下面是我的功能: 无效foobar的(INT ARG,诠释ARG2,诠释ARG3,诠释ARG4,诠释arg5,诠释arg6,诠释arg7,诠释arg8) { printk的(“foobar的称为\\ n”); } 这是它把kprobe和调用函数: ... kp.addr =(kprobe_ ..
发布时间:2016-07-18 20:57:01 服务器开发

Linux如何保护内存?

我很感兴趣,在linux从一个角度集结点保护模式下的运行方式。其中注册并当它涉及到把CPU处于保护模式为i386的中断时:0x86_64机?我明白当我看到像MMAP和mprotect的函数的C源代码,但是什么让我接管汇编内存管理是如何工作的?我在哪里可以得到更多的信息对此有何看法? 解决方案 我相信你正在寻找的 弓/ 86 / MM / - 的 弓/ 86 / MM / INIT.C 设置 ..
发布时间:2016-07-18 20:51:29 服务器开发

玩具OS文件系统

我已经开发了装配/ C运行一个基本的终端基本内核。我已经将它设置为关闭使用GRUB的ISO的运行。 我想继续这样的操作系统,但没有一个文件系统,我觉得好像没什么好说别的我可以做的。后在互联网上太多的时间,我都拿出了真没什么,我可以做些什么来实现这一点。 人们说实现FAT或作出VFS,但没有任何进一步的,也没有教程,也没有在任何地方的任何引用。 有人能解释一个文件系统是如何工作的,在那里我可以 ..
发布时间:2016-07-18 20:51:23 .NET Framework

显示文本的视频内存0xb8000不使用C库

我在C.被编写内核我一直在使用GCC交叉编译器,写在Windows系统上和指定16位实模式。我没有可用的C库写的内核。我已经开始与一些code这是假设直接打印字符在屏幕上。下面是一个函数 kernel.c : INT的main() { 字符* SRC =(字符*)0xB8000000L; * SRC ='M'; SRC + = 2; * SRC ='D'; 返回0; } ..
发布时间:2016-07-18 20:42:54 .NET Framework

设置IRQ映射

我在以下几个教程,并试图让我的内核设置引用。我在没有解释它在所有的教程会遇到一些陌生code。这是code,我听说映射 16的IRQ(0-15)来ISR位置 32-47 : 无效irq_remap(无效) { outportb(0x20的,为0x11); outportb(0XA0,为0x11); outportb(为0x21,0x20的); outportb(0 ..
发布时间:2016-07-18 20:42:44 .NET Framework

什么是第一次操作Linux内核在启动执行?

在引导装载程序执行的手到内核中,会发生什么?我知道汇编程序,那么什么是前几个指令,内核必须做什么呢?还是有,这是否一个C函数?什么是内核前的启动顺序,可以执行任意的二进制? 解决方案 我会假设你在这里谈论的x86 ... 这要看你考虑“引导管理器”和“仁”之间的边界是:内核正确的起点是32位保护模式code,但内核本身提供了一些启动code从实模式到那里。 在实模式code在 弓/ 8 ..
发布时间:2016-07-18 20:34:26 服务器开发

简单的内核GRUB将无法启动

我学习了位操作系统的发展从 OSDev.org 。我有一个内核和我试图用QEMU GRUB遗产(0.97)来引导。然而,当我键入内核200 + 9 ,我得到的消息 [多引导小精灵,< 0x100000处:0x80的:0x4008>(坏),入境= 0x10000c] 这是我所期望的除外(坏)的一部分。如果键入启动现在GRUB只是挂起。 我觉得数字的0x100000,0x44进行, ..
发布时间:2016-07-18 20:33:17 .NET Framework

我如何等待一个按键中断在Linux系统调用?

我要当用户presses像F1-12一个特殊的按键在我的程序,这是写在NASM接收中断。我只是需要等待我的主要功能开始的功能按键。我知道这是可能的BIOS的的INT 16h ,它返回一个扫描code。我怎样才能做到这一点Linux下? 解决方案 必要的code这是相当复杂的;我终于想通了如何使用原始的ioctl检查F1在C,读取和写入。如果你熟悉汇编和Linux系统调用的翻译NASM应该是 ..
发布时间:2016-07-18 20:29:10 服务器开发

C内核 - 虚拟机上工作正常,但不是实际的计算机?

我想提出一个基本的C内核。 (由汇编程序加载)我与窗口的i686的小精灵交叉编译器编译它。我的C code是如下: 无效CLS(); 无效drawhappy(); 无效的主要(){ 字符* vidptr =(字符*)0xb8000; CLS(); drawhappy(); }无效CLS(){ 字符* vidptr =(字符*)0xb8000; unsign ..
发布时间:2016-07-18 20:20:21 .NET Framework

什么是海湾合作委员会的错误消息,"错误:不支持的`MOV'&QUOT ;,意味着什么呢?

我只是想编译一些简单的例子,code我从一本书上键入的,和GCC给我上面的错误。这里是我的code: $猫-n TEST.CPP 1#定义READ_COMMAND 3 2 3#定义MSG_LENGTH 128 4 5#包括LT&;&stdlib.h中GT; 6#包括LT&;&stdio.h中GT; 7 8 INT主(INT ARGC,CHAR * ARG []) 9 { 10 ..
发布时间:2016-07-18 20:19:25 服务器开发

为什么从一个页面故障处理程序IRET产生中断13(一般性保护错误)和错误code为0x18?

我对自己写一个内核,并在第一页错误中断处理后,当执行IRET,它会导致中断13(一般保护),和错误code是为0x18。我不知道什么是错的,内容压入堆栈来自于CPU。 这里就是寄存器储存时发生中断寄存器状态和内存。此外,IRET从页面错误中断处理程序返回。 可以肯定的是ESP%IRET是执行和中断发生之前一样的。 解决方案 如果异常是从 IRET 本身,那么最有可能的 IRET 未能恢 ..
发布时间:2016-07-18 20:15:24 .NET Framework

系统调用在Windows和放大器;原生API?

最近我一直在使用很多汇编语言在* NIX操作系统。我想知道的Windows域。 在linux下的调用约定: MOV $ SYS_Call_NUM,EAX% MOV $参数1,EBX% MOV $参数2,ECX% INT 0x80的$ 这就是它。这就是我们应该如何使Linux的系统调用。 所有系统的参考在linux下调用: 有关哪些$ SYS_Call_NUM&安培;哪些参数,我们可 ..
发布时间:2016-07-18 20:08:56 服务器开发

创建一个简单的多重内核加载GRUB2

我试图按照指示在这里建立一个简单的OS内核: http://mikeos.sourceforge.net/write-your-own-os.html 除,而不是从软盘启动,我想创建一个基于GRUB的ISO映像和引导模拟器多重引导的CD。我已经添加了以下在该页面中列出,对于多重包头中的源: MBALIGN EQU 1 LT;℃的;对齐页面边界上加载的模块 meminfo的EQU 1 LT;& ..
发布时间:2016-07-18 20:00:15 .NET Framework