Creating a hackable kernel for AMD64

Jared Barnak <[email protected]>
Newsgroups gmane.os.netbsd.devel.kernel
Message-ID <CAD1FDpSpjAaTAOpVEbatbhaZAnD2jGPVUPvGHEPcRohrqk53fw@mail.gmail.com>
Hey,

I watched "How to get started hacking NetBSD" and it was great, I just
noticed that some things didn't work when cross compiling for amd64. and
frankly, I'm not sure what I did wrong.


I use the following script to build the kernel

```
#/usr/bin/sh

export DESTDIR=/home/jared/Projects/netbsd/obj/destdir
export RELEASEDIR=/home/jared/Projects/netbsd/obj/releasedir
export
KERNDIR=/home/jared/Projects/netbsd/obj/sys/arch/amd64/compile/DEBUG_KERNEL


cd src/
./build.sh -u -O ../obj -U -m amd64 -N1 -j24 -V MKCROSSGDB=yes tools
kernel.gdb=DEBUG_KERNEL

cd ../
```

And this creates the following directory

```
/home/jared/Projects/netbsd/obj/releasedir/amd64/binary/kernel/DEBUG_KERNEL
├── MD5
├── netbsd-DEBUG_KERNEL.gz
├── netbsd-GENERIC.gz
├── netbsd-GENERIC_KASLR.gz
├── netbsd-GENERIC.symbols.gz
├── netbsd-INSTALL.gz
├── netbsd-INSTALL.symbols.gz
├── netbsd-INSTALL_XEN3_DOMU.gz
├── netbsd-XEN3_DOM0.gz
├── netbsd-XEN3_DOMU.gz
└── SHA512
```

I unzipped the  `netbsd-DEBUG_KERNEL.gz` file and redirected the output to
`vm/disk.img` with:

```
gunzip -c <netbsd-DEBUG_KERNEL.gz > ~/Projects/netbsd/vm/disk.img
```

And I created a sparse disk image with (note: `-oseek` is not a valid
switch on my machine and `10g` didn't work, so I substituted it with `2^30`
which is `1073741824` ):

```
$ dd if=/dev/zero of=disk.img seek=1073741824 bs=1 count=1
1+0 records in
1+0 records out
1 byte copied, 0.000180831 s, 5.5 kB/s
```

And I cannot figure out why, but I don't have a `netbsd.img` under

```
/home/jared/Projects/netbsd/obj/sys/arch/amd64/compile
```

so the following does not work:

```
#!/urs/bin/sh

/usr/bin/qemu-system-x86_64 \
    -kernel netbsd.img \ # This file does not exist
    -machine 'ubuntu'
    -append "root=dk1" \
    -M virt \
    -smp 2 \
    -m 1g \
    -drive if=none,file=disk.img,id=disk,format=raw \
    -device virtio-blk-device,drive=disk \
    -device virtio-rng-device \
    -nic user,model=virtio-net-pci \
    -nographic
```

And when I run that, I get:

```
qemu: could not open kernel file 'netbsd.img': No such file or directory
```

I'm also not sure what to substitute `-cpu` for when using `amd64`.

Some guidance would be great!
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.