小编Mik*_*inz的帖子

构建自定义Linux Live CD

有人能指出我从头开始创建可启动Linux CD的好教程吗?

我需要一个相当专业的问题的帮助:我的公司销售需要自定义固件的扩展卡.目前我们使用RH7.2的极旧的实时CD映像,我们使用当前固件更新.制造将卡片放入机器中,从CD上拔下,CD写入固件,然后关闭电源并拔出卡片.由于这个周期,CD必须尽快启动和关闭.

问题是,对于下一代卡,我必须将CD更新为2.6内核.获取预先存在的现场CD很容易 - 但这些都是为了在桌面上展示Linux而设计的 - 这意味着它们需要永久启动.

任何人都可以用当前的方法来解决我的问题吗?


更新:

所以,就像后来读到这篇文章的人的最后更新一样 - 我最终使用的工具是"livecd-creator".

我之所以选择这个工具,是因为它适用于基于RedHat的发行版,如CentOs,Fedora和RHEL--这些都是我公司支持的发行版.此外,虽然该项目记录很少,但它是非常可定制的.我能够创建一个最小的LiveCD并编辑启动顺序,以便它直接启动到固件更新程序而不是bash shell.

如果有README解释配置文件,整个工作只需要一两个小时!

linux

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

mmap/munmap 的问题 - 在第 783 次迭代后出现总线错误?

好的,这是设置:我在 HPC 中工作,我们正在为扩展到数万个节点的需要做准备。为了解决这个问题,我实现了一个本地进程来缓存每个节点上的信息以减少网络流量。然后它通过共享内存公开这些信息。基本逻辑是有一个众所周知的共享内存块,其中包含当前缓存表的名称。当发生更新时,缓存工具创建一个新的共享内存表,填充它,然后用新表的名称更新众所周知的块。

代码似乎可以正常工作(例如,valgrind 说没有内存泄漏)但是当我故意对其进行压力测试时,前 783 次更新工作得非常好 - 但是在第 784 次,当我尝试写入时出现 SIGBUS 错误映射内存。

如果问题是打开的文件太多(因为我正在泄漏文件描述符),我希望 shm_open() 失败。如果问题是我泄漏了映射内存,我希望 mmap() 失败或 valgrind 报告泄漏。

这是代码片段。任何人都可以提供建议吗?

int
initialize_paths(writer_t *w, unsigned max_paths)
{
int err = 0;
reader_t *r = &(w->unpublished);

close_table(r,PATH_TABLE);

w->max_paths = max_paths;

err = open_table(r, PATH_TABLE, O_RDWR | O_CREAT, max_paths, 0);

return err;
}

static void
close_table(reader_t *r, int table)
{
    if (r->path_table && r->path_table != MAP_FAILED) {
       munmap(r->path_table,r->path_table->size);
       r->path_table=NULL;
    }
    if (r->path_fd>0) { close(r->path_fd); r->path_fd=0; }
}


static int
open_table(op_ppath_reader_t *r, int …
Run Code Online (Sandbox Code Playgroud)

c linux memory-management

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

PHP时间数学的奇怪行为:为什么strtotime()返回负数?

我正在尝试做一些非常基本的时间数学 - 基本上,考虑到时间和距离的输入,计算速度.我选择使用strtotime()将时间输入转换为秒 - 但我得到了一些奇怪的结果.

例如,给定此示例程序:

<?php
$t1 = strtotime("3:15:00",0);
$t2 = strtotime("1:00:00",0);
$t3 = strtotime("2:00:00",0);
$t4 = strtotime("9:00:00",0);

echo $t1 . "\n";
echo $t2 . "\n";
echo $t3 . "\n";
echo $t4 . "\n";
?>
Run Code Online (Sandbox Code Playgroud)

为什么我会得到这些结果?

$ php test.php 
-56700
-64800
-61200
-36000
Run Code Online (Sandbox Code Playgroud)

更新:

由于没有人明确说过,让我解释一下上述函数中的错误.我曾假设将零时间传递给strtotime()将导致它生成从午夜,12月31日,UTC,UTC生成的时间戳 - 这听起来很奇怪,但是可以用于我的目的.

我没有指望的是strtotime()在转换字符串时会考虑时区,而我的服务器显然比UTC晚了5个小时.最重要的是,由于时区转换,PHP然后将时间解释为相对于纪元前一天的时间,这意味着它将我的时间解释为相对于1969年12月30日而不是31日发生,导致负数. ..

Eugene似乎是正确的 - 如果我只想计算经过的时间,我就不能使用内置的时间函数.

php

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

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

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

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
查看次数