我遇到的问题是BIOS总是忽略我为cmdline设置的内容。它只使用硬编码的cmdline,它发送错误的参数。 IN" console = ttys0" " S"是小写的。我没有BIOS源代码,因此无法在那里进行更改。我试图改变较低的" s"到上" S"来自内核本身。但到目前为止我还没有成功。这是我试过的。
void __init setup_arch(char **cmdline_p)
{
*cmdline_p = command_line; /* Tried to change command_line before this line */
}
进行如下更改。
void __init setup_arch(char **cmdline_p)
{
{
char *ptr=NULL;
ptr=strstr(command_line,"ttys0");
if(ptr)
ptr[3]='S';
}
*cmdline_p = command_line;
}
当我尝试使用此更改启动时,似乎内核挂起。看起来我尝试修改command_line,内核挂起。
command_line声明如下。
static char __initdata command_line[COMMAND_LINE_SIZE];
__initdata是否有任何限制? 任何建议如何才能实现我想做的事情?
答案 0 :(得分:0)
更改内核代码不是可行的选择。您可以通过在引导加载程序中设置命令行来更改控制台。
console=ttyS0,9600
如果您的系统具有ACPI,则还可以将自定义ACPI表编译到内核映像中,这些表将覆盖BIOS中的选项。