kernel link problem and start problem
Created by: Vladilen
Hello, I tried to compile redox on arch linux and have some problems:
Reproduction:
$ sh bootstrap.sh -d
...
$ git submodule update --recursive --init
...
$ make clean
...
$ git clean -Xfd
...
$ git status
On branch master
Your branch is up-to-date with 'upstream/master'.
nothing to commit, working tree clean
$ make all
...
Compiling kernel v0.1.0 (file:///home/muz/redox/redox/kernel)
warning: ignoring emit path because multiple .o files were produced
Finished release [optimized] target(s) in 20.35 secs
ld --gc-sections -z max-page-size=0x1000 -T kernel/arch/x86_64/src/linker.ld -o build/kernel/kernel build/kernel/libkernel.a
ld: cannot find build/kernel/libkernel.a: No such file or directory
make: *** [mk/kernel.mk:13: build/kernel/kernel] Error 1
I cured it by manually copy libkernel.a:
$ find ./ -name libkernel.a
./target/x86_64-unknown-none/release/libkernel.a
$ cp ./target/x86_64-unknown-none/release/libkernel.a build/kernel/
$ make all
ld --gc-sections -z max-page-size=0x1000 -T kernel/arch/x86_64/src/linker.ld -o build/kernel/kernel build/kernel/libkernel.a
ld: warning: cannot find entry symbol kstart; defaulting to ffffff0000101000
...
sync
fusermount -u build/filesystem/ || true
rm -rf build/filesystem/
nasm -f bin -o build/harddrive.bin -D ARCH_x86_64 -ibootloader/x86_64/ bootloader/x86_64/harddrive.asm
$
But ld shows warning about entry symbol.
After this, I try to run redox, but all of these commands:
$ make qemu
$ make qemu kvm=no
$ make qemu iommu=no
$ make virtualbox
Expected behavior: Don't need to manual copy libkernel.a, make all finished successfully at first run. Redox starts successfully in qemu or virtualbox.
Actual behavior: Need to manual copy libkernel.a to compile redox. Redox fails on start in qemu and virtualbox.
Build information:
$ rustc -V
rustc 1.17.0-nightly (ea7a6486a 2017-02-04)
$ git --version
git version 2.11.1
$ git rev-parse HEAD
20f0003e01739b61c33819f5b7cf17f984c4987a
$ qemu-system-x86_64 -version
QEMU emulator version 2.8.0
$ uname -a
Linux muz 4.9.6-1-ARCH #1 SMP PREEMPT Thu Jan 26 09:22:26 CET 2017 x86_64 GNU/Linux
$ nasm -v
NASM version 2.12.02 compiled on Oct 28 2016
$ pacman -Ss fuse2
extra/fuse-common 3.0.0-1 [installed]
Common files for fuse2/3 packages
extra/fuse2 2.9.7-3 [installed]
A library that makes it possible to implement a filesystem in a userspace program.
UPD Repeated on openSuse, got same result.