@ -393,7 +393,7 @@ pub fn run(opts: Options) -> Result<()> {
qemu . args ( [ "-cpu" , cpu ] ) ;
qemu . args ( [ "-cpu" , cpu ] ) ;
}
}
let console = OsString ::from ( "ttyS0" ) ;
let console = OsString ::from ( "ttyS0" ) ;
let kernel_args = std ::iter ::once ( ( "console" , & console ) )
let mut kernel_args = std ::iter ::once ( ( "console" , & console ) )
. chain ( run_args . clone ( ) . map ( | run_arg | ( "init.arg" , run_arg ) ) )
. chain ( run_args . clone ( ) . map ( | run_arg | ( "init.arg" , run_arg ) ) )
. enumerate ( )
. enumerate ( )
. fold ( OsString ::new ( ) , | mut acc , ( i , ( k , v ) ) | {
. fold ( OsString ::new ( ) , | mut acc , ( i , ( k , v ) ) | {
@ -405,6 +405,12 @@ pub fn run(opts: Options) -> Result<()> {
acc . push ( v ) ;
acc . push ( v ) ;
acc
acc
} ) ;
} ) ;
// We sometimes see kernel panics containing:
//
// [ 0.064000] Kernel panic - not syncing: IO-APIC + timer doesn't work! Boot with apic=debug and send a report. Then try booting with the 'noapic' option.
//
// Heed the advice and boot with noapic. We don't know why this happens.
kernel_args . push ( " noapic" ) ;
qemu . args ( [ "-no-reboot" , "-nographic" , "-m" , "512M" , "-smp" , "2" ] )
qemu . args ( [ "-no-reboot" , "-nographic" , "-m" , "512M" , "-smp" , "2" ] )
. arg ( "-append" )
. arg ( "-append" )
. arg ( kernel_args )
. arg ( kernel_args )