Hi, I'm rather new to Linux and this forum in particular (this is my first post).
My goal is to make a new custom-made Linux with just a kernel and a
bootloader, which will run a certain program I have written in the
background and the shell will be busybox.
My first step is trying to just boot it up with grub and a kernel and
have it maybe panic for lack of something to do after the boot process.
So after successfully going through the LFS 6.3 stages, I tried to make
that system. I set up a clean image of an x86 computer using VMWare,
booted it up with the LFS live CD and made a couple of partitions and
ext2 FS, completely empty still of course.
Now I'll throw in another one of my restrictions; this system will be
used as a minimal, embedded operating system, where I will not be able
to access the 'on board' system and compile on it so everything must be
cross-compiled into it. Eventually I'll be making an image of the system
to burn onboard and it will not change, and things like GCC should not be
there.
I compiled and installed grub (0.97) on it - the only exception of a
package compiled in the target system, because when actually moving it to
an embedded board we could burn the MBR with the data we want. (Whereas
manually I don't know how to set up grub on the MBR of the virtual
machine, and its shell setup does so on its own).
I compiled the kernel on the host system and sortof installed it into
the target system. I'm pretty sure I 'cross-compiled' or
'cross-installed' it wrong but getting GCC, binutils, and whatever else
is needed and later getting rid of it is something I don't know how to
do and is time consuming and I'm sure a kernel cross compile is a
feasible thing.
The kernel version is 2.6.22.5, the one from the LFS 6.3.
After fiddling around, my /boot/grub/menu.lst record for the kernel
looks like this:
Code:
root (hd0,0)
kernel /boot/vmlinuz-2.6.22.5 root=/dev/sda1 ro
initrd /boot/initrd.img-2.6.22.5
First, to make sure these definitions were fine, I tried running this
kernel on my host system and it worked fine. But when I try to run this
on the VMWare machine (which is -supposed- to be identical to the host
system) I encounter problems;
It starts the boot process normally but eventually slows down and
repeatedly spams this line in 1 second intervals:
Code:
pciehp: HPC vendor_id 15ad device_id 7a0 ss_vid 0 ss_did 0
After about 20 of these (identical) messages, the screen flashes,
it runs down some more assembly-looking lines and ends up with this:
Code:
[<c01054f7>] kernel_thread_helper+0x7/0x10
==========================================
And just stops, not responding to anything.
I'm not sure how to even log any of it so I can post it here, this is
all copied screen to paper to screen. I also don't know how to use GDB
if this is required here so run me down how to do what you want me to
do if this requires using GDB..
keep in mind that I'm booting this from inside the virtual machine.
To sum it up, I have two questions:
1. Does anyone know what's wrong there? Or what other data I need to
post to make this clearer?
2. How can I compile a kernel from the host system into the target
system (I can mount a VMWare image on my filesystem if it helps)?
Yali.