mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-28 03:43:23 +00:00
Allow booting without initramfs
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
5941d3e6eb
commit
0b617dd76c
@ -69,6 +69,9 @@ fn init_kernel_commandline(kernel_cmdline: &'static Once<KCmdlineArg>) {
|
||||
fn init_initramfs(initramfs: &'static Once<&'static [u8]>) {
|
||||
let hdr = &BOOT_PARAMS.get().unwrap().hdr;
|
||||
let ptr = hdr.ramdisk_image as usize;
|
||||
if ptr == 0 {
|
||||
return;
|
||||
}
|
||||
// We must return a slice composed by VA since kernel should read everything in VA.
|
||||
let base_va = if ptr < PHYS_MEM_BASE_VADDR {
|
||||
paddr_to_vaddr(ptr)
|
||||
@ -76,6 +79,9 @@ fn init_initramfs(initramfs: &'static Once<&'static [u8]>) {
|
||||
ptr
|
||||
};
|
||||
let length = hdr.ramdisk_size as usize;
|
||||
if length == 0 {
|
||||
return;
|
||||
}
|
||||
initramfs.call_once(|| unsafe { core::slice::from_raw_parts(base_va as *const u8, length) });
|
||||
}
|
||||
|
||||
|
@ -50,12 +50,9 @@ fn init_kernel_commandline(kernel_cmdline: &'static Once<KCmdlineArg>) {
|
||||
}
|
||||
|
||||
fn init_initramfs(initramfs: &'static Once<&'static [u8]>) {
|
||||
let mb2_module_tag = MB2_INFO
|
||||
.get()
|
||||
.unwrap()
|
||||
.module_tags()
|
||||
.next()
|
||||
.expect("No Multiboot2 modules found!");
|
||||
let Some(mb2_module_tag) = MB2_INFO.get().unwrap().module_tags().next() else {
|
||||
return;
|
||||
};
|
||||
let base_addr = mb2_module_tag.start_address() as usize;
|
||||
// We must return a slice composed by VA since kernel should read every in VA.
|
||||
let base_va = if base_addr < PHYS_MEM_BASE_VADDR {
|
||||
|
Reference in New Issue
Block a user