linux内核随机数初探

起Linux虚拟机时发现kernel日志random: crng init done之前等了很久。通过debug kernel代码对这个问题稍微有了一点理解,记录一下。

当前使用的kernel 代码是5.19.2.

drivers/char/random.c
static void __cold _credit_init_bits(size_t bits)
{
...
    pr_notice("crng init done\n");
...
}

dump stack找出caller function

[    3.731810] CPU: 0 PID: 1 Comm: systemd Tainted: G        W         5.19.2 #7
[    3.732393] Hardware name: linux,dummy-virt (DT)
[    3.732780] Call trace:
[    3.733016]  dump_backtrace.part.6+0xec/0xf8
[    3.733409]  show_stack+0x14/0x28
[    3.733722]  dump_stack_lvl+0x78/0x98
[    3.734062]  dump_stack+0x14/0x30
[    3.734374]  _credit_init_bits+0x1c/0x1ec
[    3.734740]  entropy_timer+0x50/0x60
[    3.735072]  call_timer_fn.isra.26+0x20/0x78
[    3.735463]  run_timer_softirq+0x4e4/0x578
[    3.735841]  _stext+0x11c/0x284
[    3.736138]  irq_exit_rcu+0x10c/0x138

...

本机上大部分的调用都是entropy_timer, 即大部分的熵的来源是时钟中断。注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值