小编hel*_*lwq的帖子

从vmlinuz或bzImage中提取vmlinux

我想从vmlinuz生成System.map,因为大多数机器没有文件System.map.实际上,vmlinuz被压缩为vmlinuz或bzImage.

这是任何工具或脚本可以做到这一点?

我试过了:

dd if=/boot/vmlinuz skip=`grep -a -b -o -m 1 -e $'\x1f\x8b\x08\x00' /boot/vmlinuz | cut -d: -f 1` bs=1 | zcat > /tmp/vmlinux
Run Code Online (Sandbox Code Playgroud)

它失败了:

zcat: stdin: not in gzip format
32769+0 records in
32768+0 records out
Run Code Online (Sandbox Code Playgroud)

bash kernel linux-kernel

15
推荐指数
1
解决办法
3万
查看次数

libvirt是否支持使用copy on copy克隆qcow2

关于qcow2的格式qcow2支持copy-on-write.detail 在这里.libvirt是否支持使用copy-on-write克隆qcow2 VM映像.我找不到任何选项:

VIRT克隆

kvm qemu libvirt

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

关于linux x86 64中MSR_GS_BASE的详细信息

我试图弄清楚Linux内核中MACRO当前的细节.当前的最终汇编代码是:

movq %%gs:0xb000,%0
Run Code Online (Sandbox Code Playgroud)

上面的代码可以工作!但是当我打印%% gs时,它的值为0,所以%% gs指向GDT NULL的第一项!! 这个怎么运作?

mov %%gs, %0
Run Code Online (Sandbox Code Playgroud)

相反,gs的基础在MSR_GS_BASE中,并且当前可以替换为:

/*0xb000 is the offset of per_cpu__current_task*/
cur_task = (unsigned long*)(x86_rdmsr64(MSR_GS_BASE) + 0xb000);
println("cur_task:%p",*cur_task);
Run Code Online (Sandbox Code Playgroud)

我的问题是:

%gs指向GDT NULL的第一项!! ?? 如何从MSR_GS_BASE读取它是一个CPU功能?我需要一些关于此的参考.

assembly x86-64 linux-kernel memory-segmentation

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

iret和iretd之间的区别是什么?

我想模拟Linux x86_64服务器上的iret条件.我发现有三条指令

  1. iret:操作数大小16
  2. iretd:操作数大小32
  3. iretq:操作数大小64

我无法区分它们,以及使用哪一个.谢谢任何人的帮助!!

我有另外一个关于模拟iret的问题,你能看看吗?http://stackoverflow.com/questions/11756274/how-to-simulate-a-iret-on-linux-x86-64

x86 assembly linux-kernel

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

标签 统计

linux-kernel ×3

assembly ×2

bash ×1

kernel ×1

kvm ×1

libvirt ×1

memory-segmentation ×1

qemu ×1

x86 ×1

x86-64 ×1