我在一台最新的Linux机器上静态编译和链接了一个程序,然后在另一个9年前的Linux上运行它。它给了我一个错误“致命:内核太旧”并退出。具体来说,新的是Fedora18(gcc4.7.2,glibc2.16,内核3.7.2),旧的是RHEL4.8(glibc2.3.4,内核2.6.9)。由于它是静态链接,glibc版本应该无关紧要。我想这里的问题是程序调用了不在旧内核中的系统调用。如果无法在旧系统上进行开发,我如何才能在新系统中构建程序并在旧系统中运行(或者更好的是,两者兼而有之)?我一直在寻找一种在兼容模式下运行gcc的方法,它只调用旧的系统调用。还没有运气。
我正在尝试编译我的linux内核,在自定义我的内核配置后,我录制了命令make开始编译但是出现如下错误:asma@ubuntu:/usr/src/linux$makemake[1]:***Noruletomaketarget`/usr/src/linux-headers-3.5.0-23/arch/x86/syscalls/syscall_32.tbl',neededby`arch/x86/syscalls/../include/generated/asm/unistd_32.h'.Stop.make:***[archheaders]Error2请问我该如何解决这个问题
我正在尝试编译我的linux内核,在自定义我的内核配置后,我录制了命令make开始编译但是出现如下错误:asma@ubuntu:/usr/src/linux$makemake[1]:***Noruletomaketarget`/usr/src/linux-headers-3.5.0-23/arch/x86/syscalls/syscall_32.tbl',neededby`arch/x86/syscalls/../include/generated/asm/unistd_32.h'.Stop.make:***[archheaders]Error2请问我该如何解决这个问题
我问是因为我记得所有属于内核的物理页面都固定在内存中,因此不可交换,就像这里所说的:http://www.cse.psu.edu/~axs53/spring01/linux/memory.ppt但是,我正在阅读一篇研究论文,并感到困惑,因为它说,“(物理)页面经常在内核数据段和用户空间之间移动。”它还提到,相比之下,物理页面不会在内核代码段和用户空间之间移动。我想如果一个物理页有时属于内核数据段有时属于用户空间,那一定意味着属于内核数据段的物理页是可交换的,这与我目前的理解不符。那么,属于内核数据段的物理页是可交换的吗?不可交换?附言该研究论文可在此处获取:https://www.cs
我问是因为我记得所有属于内核的物理页面都固定在内存中,因此不可交换,就像这里所说的:http://www.cse.psu.edu/~axs53/spring01/linux/memory.ppt但是,我正在阅读一篇研究论文,并感到困惑,因为它说,“(物理)页面经常在内核数据段和用户空间之间移动。”它还提到,相比之下,物理页面不会在内核代码段和用户空间之间移动。我想如果一个物理页有时属于内核数据段有时属于用户空间,那一定意味着属于内核数据段的物理页是可交换的,这与我目前的理解不符。那么,属于内核数据段的物理页是可交换的吗?不可交换?附言该研究论文可在此处获取:https://www.cs
我在Linux2.6上的应用程序中使用msync以确保在发生崩溃时的一致性。我需要彻底测试我对msync的使用,但实现似乎正在为我刷新所有相关页面。有没有一种方法可以防止将mmap页面自动刷新到磁盘上,从而暴露我对msync的错误使用? 最佳答案 向@samold致歉,“swappiness”与此无关。Swappiness只会影响内核在内存不足时如何权衡交换脏匿名页面与驱逐页面缓存页面。您需要使用LinuxVMtunablescontrollingthepdflushtask.对于初学者,我建议:sysctl-wvm.dirty_w
我在Linux2.6上的应用程序中使用msync以确保在发生崩溃时的一致性。我需要彻底测试我对msync的使用,但实现似乎正在为我刷新所有相关页面。有没有一种方法可以防止将mmap页面自动刷新到磁盘上,从而暴露我对msync的错误使用? 最佳答案 向@samold致歉,“swappiness”与此无关。Swappiness只会影响内核在内存不足时如何权衡交换脏匿名页面与驱逐页面缓存页面。您需要使用LinuxVMtunablescontrollingthepdflushtask.对于初学者,我建议:sysctl-wvm.dirty_w
当我阅读系统调用时,我搜索了syscalls.h以找到LXR中的头文件。搜索结果让我很困惑。arch/_arch_name_/include/asm下的目录中有十几个syscalls.h文件。这些没关系,它们是特定于体系结构的定义或其他需要的东西。问题是为什么我们在include/linux和include/asm-generic下有两个不同的syscalls.h头文件?另外,我想知道include/linuxheader的用途以及include/asm-genericheader的用途。他们如何区分彼此?有两个单独的标题文件夹背后的逻辑是什么?它们之间有什么关系?谢谢
当我阅读系统调用时,我搜索了syscalls.h以找到LXR中的头文件。搜索结果让我很困惑。arch/_arch_name_/include/asm下的目录中有十几个syscalls.h文件。这些没关系,它们是特定于体系结构的定义或其他需要的东西。问题是为什么我们在include/linux和include/asm-generic下有两个不同的syscalls.h头文件?另外,我想知道include/linuxheader的用途以及include/asm-genericheader的用途。他们如何区分彼此?有两个单独的标题文件夹背后的逻辑是什么?它们之间有什么关系?谢谢
我想知道主要页面错误处理程序在哪里。我编写了一个算法来最小化内核中的页面错误。因此,每当发生页面错误时,我都需要记录一些东西。我目前在arch/x86/mm/fault_32.c中的do_page_fault(...)处记录了一个页面错误但是,似乎次要页面错误和主要页面错误都会转到do_page_fault(...)...小页面错误一直在发生,并扰乱了算法。我想我只想在发生重大page_fault时记录一些东西。那么,内核黑客们,请问我应该把我的代码放在哪里?哪个文件和哪个函数。顺便说一句,我正在破解内核2.6.24非常感谢!阿尔弗雷德 最佳答案