标签: kernel

从内核调用跟踪中获取行号

我正在尝试调试似乎是完成队列问题:

Apr 14 18:39:15 ST2035 kernel: Call Trace:
Apr 14 18:39:15 ST2035 kernel:  [<ffffffff8049b295>] schedule_timeout+0x1e/0xad
Apr 14 18:39:15 ST2035 kernel:  [<ffffffff8049a81c>] wait_for_common+0xd5/0x13c
Apr 14 18:39:15 ST2035 kernel:  [<ffffffffa01ca32b>]
ib_unregister_mad_agent+0x376/0x4c9 [ib_mad]
Apr 14 18:39:16 ST2035 kernel:  [<ffffffffa03058f4>] ib_umad_close+0xbd/0xfd
Run Code Online (Sandbox Code Playgroud)

是否可以将这些十六进制数字转换为接近行号的数字?

debugging kernel backtrace debug-symbols linux-kernel

1
推荐指数
1
解决办法
2067
查看次数

Linux 内核 - 套接字文件描述符关闭位置

在 linux 内核中,套接字文件描述符的关闭发生在什么地方?我知道对于一个文件,文件的文件描述符在 fs/open.cs 函数 sys_close() 中关闭。但是,对于套接字文件描述符,这是同一位置还是其他位置?

另外,套接字是使用 file.c alloc_fd 来分配文件描述符还是使用其他一些函数?

kernel linux-kernel

1
推荐指数
1
解决办法
2215
查看次数

为什么 lsmod 命令没有列出 Xorg 加载的模块?

正如标题一样,为什么 lsmod 没有列出 Xorg 默认加载的 extmod、dri、dbe 等模块?

x11 kernel module xorg linux-kernel

1
推荐指数
1
解决办法
1665
查看次数

无法用yum更新Centos 6内核,uname -r仍然显示旧版本

我发送了这些命令:

# yum install kernel
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: centosr3.centos.org
 * extras: centosg4.centos.org
 * updates: centosg4.centos.org
Setting up Install Process
Package kernel-2.6.32-279.2.1.el6.i686 already installed and latest version
Nothing to do
Run Code Online (Sandbox Code Playgroud)
# yum install kernel-devel
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: centosr3.centos.org
 * extras: centosg4.centos.org
 * updates: centosg4.centos.org
Setting up Install Process
Package kernel-devel-2.6.32-279.2.1.el6.i686 already installed and latest version
Nothing to do
Run Code Online (Sandbox Code Playgroud)
#uname -r
2.6.32-042stab057.1
#uname -a …
Run Code Online (Sandbox Code Playgroud)

kernel centos rpm yum centos6

1
推荐指数
1
解决办法
3768
查看次数

内核在emu8086中工作,但不在虚拟盒中使用软盘控制器

我正在编写一个简单的操作系统,我在emu8086中编写了bootloader和内核,然后我写入了软盘扇区.当我从emu内部的软盘驱动器启动时,一切正常,但是当我从虚拟机内的软盘启动时 - 它无法进行操作.

例如,以下命令获取系统日期和时间:

infoCommand:
lea si, info_msg
call printString  

;Day Part
mov ah, 2Ah    ; To get System Date
int 21h
mov al, dl   ; Day is in DL
aam
mov bx, ax
call disp

mov dl, '/'
mov ah, 02h    ; To Print / in DOS
int 21h

;Month Part
mov ah, 2Ah    ; To get System Date
int 21h
mov al, dh     ; Month is in DH
aam
mov bx, ax
call disp

mov dl, '/'
mov …
Run Code Online (Sandbox Code Playgroud)

assembly kernel virtualbox bootloader emu8086

1
推荐指数
1
解决办法
108
查看次数

`asm()`函数如何在C语言中工作?

我正在学习操作系统开发和课程初学者.我想在实模式环境中构建我的系统,这是一个使用C语言的16位环境.

在C中,我使用函数asm()将代码转换为16位,如下所示:

asm(".code16")
Run Code Online (Sandbox Code Playgroud)

在GCC的语言中生成16位可执行文件(不完全如此).

题:

假设我有两个头文件head1.hhead2.hmain.c文件.main.c文件内容如下:

asm(".code16");
#include<head1.h>
#include<head2.h>
int main(){
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,自从我开始我的代码的命令生成16位可执行文件,然后包括head1.hhead2.h,我需要做的,我创建的所有头文件一样吗?(或)添加asm(".code16");一次是否足够?

操作系统:Ubuntu

编译器:Gnu CC

assembly gcc operating-system kernel bootloader

1
推荐指数
1
解决办法
1428
查看次数

什么是细分以及如何在8086模式下解决这些问题?

自从我开始使用8086汇编语言编程以来,我一直在思考这些段和段寄存器.我面临的问题是,我无法看到我脑海中存在哪些细分的视觉图像,因此这些概念对我来说并不清楚.


  • 任何人都可以帮助我理解将其与现实世界场景相关联的概念吗?我还有以下问题:

问题1:

据我所知,在启用了20地址线的16位实模式下,我们可以将物理内存分成16段,每段64KiB.第一部分开始于0x00000.下一段的起始地址是什么.是否会添加0x10000(65536 = 64KiB)?

问题2:

这个问题有点奇怪,但仍然是我唯一的选择.假设我给了一个偏移地址0x6000,我怎样才能找到它所属的段以便解决它.

谢谢

x86 assembly operating-system kernel x86-16

1
推荐指数
2
解决办法
1291
查看次数

Laravel 5.4 - 未根据请求设置会话存储

在我的Laravel 5.4生产服务器上,我忘记在实现多授权系统后运行php artisan config:cache命令.这一切都在我的开发环境中工作,但它不想在生产中.自从运行缓存命令以来,我已经解决了所有错误.但是我坚持这个,真的不知道该把它带到哪里.我没有提供任何信息,请随时提出,我会发布.非常感谢你的帮助.

namespace App\Exceptions;

use Exception;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

class Handler extends ExceptionHandler
{
    protected $dontReport = [
        \Illuminate\Auth\AuthenticationException::class,
        \Illuminate\Auth\Access\AuthorizationException::class,
        \Symfony\Component\HttpKernel\Exception\HttpException::class,
        \Illuminate\Database\Eloquent\ModelNotFoundException::class,
        \Illuminate\Session\TokenMismatchException::class,
        \Illuminate\Validation\ValidationException::class,
    ];

    public function report(Exception $exception)
    {
        parent::report($exception);
    }

    public function render($request, Exception $exception)
    {
        return parent::render($request, $exception);
    }

    /**
     * Convert an authentication exception into an unauthenticated response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Auth\AuthenticationException  $exception
     * @return \Illuminate\Http\Response
     */
    protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return …
Run Code Online (Sandbox Code Playgroud)

session kernel dev-to-production laravel

1
推荐指数
1
解决办法
8619
查看次数

从用户模式运行内核模式系统调用

我试图读取某些进程的内存,如csrss.exe使用OpenProcess().问题是,一旦我使用PROCESS_ALL_ACCESS这些进程就无法打开.所以我尝试使用PROCESS_QUERY_LIMITED_INFORMATION参数,但不会获得多汁的结果.

根据我对系统的理解,这个功能最终会调用ZwOpenProcess().我目前的理解是,如果应用程序在用户模式下访问它,则此调用也将被视为来自用户模式而不是内核模式的调用.

为了绕过这个检查,我做了以下事情:

  1. 使用IDA打开ntdll.dll所有这些进程所在的位置.
  2. 找到这个功能,这就是我找到的.

Cap_1 所以再次从我的理解,它执行测试,然后如果它评估为0,它执行低延迟系统调用,我相信这是函数的内核模式版本.

接下来我做了同样的事情ZwReadVirtualMemory(): Cap_2

所以这是我的问题:

  1. 我可以直接创建.asm文件并在其中编写这些过程并调用它们以获取内核模式访问这些函数吗?
  2. PROCESS_ALL_ACCESS如果我使用上述方法调用它们,将适用于这些例程.
  3. 我还需要使用VirtualQueryEx()我找不到内核模式替换,在这种情况下,我打算VirtualQueryEx()与上面提到的自定义调用一起使用.现在我的问题是,因为VirtualQueryEx()不是内核模式调用(至少在顶部,我的意思是ReadProcessMemory()调用ZwReadVirtualMemory但是如果由用户模式程序启动则不是内核模式调用,情况也是如此VirtualQueryEx()),这是一个问题,还是在我进行下一次自定义调用时会恢复到用户模式?

我自己做这一切的最终目标是能够使用内核级特权打开所有进程,读取内存并将其转储到文件中.这还包括在系统级运行的进程,如csrss.exe.如果存在任何更简单的方法,请用同样的方式启发我.

Code :

HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
HANDLE lProc = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
DWORD error = GetLastError();

if (hProc || lProc)
    {


            //(!hProc && lProc) ? printf("lproc") : printf("hProc"); //Testing Condition
            fProc = (!hProc && lProc) ? lProc : hProc;

        while (1) {
            if …
Run Code Online (Sandbox Code Playgroud)

c assembly kernel ida

1
推荐指数
1
解决办法
581
查看次数

如何在Keras中设置内核初始化程序(glorot_uniform)的种子值

我想在Keras中设置glorot_uniform内核初始化程序的种子值。

model.add(Dense(50, input_dim=self.state_size, activation='relu', kernel_initializer='glorot_uniform(seed=0)'))
Run Code Online (Sandbox Code Playgroud)

当我使用以上代码时,错误消息如下。

ValueError: Unknown initializer: glorot_uniform(seed=0)
Run Code Online (Sandbox Code Playgroud)

如果我删除“(seed = 0)”,如下所示

 model.add(Dense(50, input_dim=self.state_size, activation='relu', kernel_initializer='glorot_uniform'))
Run Code Online (Sandbox Code Playgroud)

它无需设置种子值即可很好地工作。

如何设置种子值?

kernel initializer seed keras tensorflow

1
推荐指数
1
解决办法
2562
查看次数