mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-29 04:54:27 +01:00
Uber easy arch swap
This commit is contained in:
@@ -225,11 +225,6 @@ And then tell GDB where the module was loaded with:
|
|||||||
|
|
||||||
The portability of the kernel and toolchains is amazing.
|
The portability of the kernel and toolchains is amazing.
|
||||||
|
|
||||||
If you already have an x86 build present, first:
|
|
||||||
|
|
||||||
cd buildroot
|
|
||||||
mv output output.x86~
|
|
||||||
|
|
||||||
First ARM build:
|
First ARM build:
|
||||||
|
|
||||||
./run -a arm
|
./run -a arm
|
||||||
|
|||||||
6
run
6
run
@@ -1,6 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
cd buildroot
|
|
||||||
arch='x86_64'
|
arch='x86_64'
|
||||||
while getopts a: OPT > /dev/null 2>&1; do
|
while getopts a: OPT > /dev/null 2>&1; do
|
||||||
case "$OPT" in
|
case "$OPT" in
|
||||||
@@ -19,6 +18,9 @@ case "$arch" in
|
|||||||
defconfig=qemu_arm_versatile_defconfig
|
defconfig=qemu_arm_versatile_defconfig
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
./setoutarch "$arch"
|
||||||
|
cd buildroot
|
||||||
for p in $(find '../buildroot_patches/' -maxdepth 1 -name '*.patch' -print); do
|
for p in $(find '../buildroot_patches/' -maxdepth 1 -name '*.patch' -print); do
|
||||||
patch -N -r - -p 1 <"$p" || :
|
patch -N -r - -p 1 <"$p" || :
|
||||||
done
|
done
|
||||||
@@ -26,7 +28,6 @@ make BR2_EXTERNAL="$(pwd)/../kernel_module" "$defconfig"
|
|||||||
# TODO Can't get rid of this for now.
|
# TODO Can't get rid of this for now.
|
||||||
# http://stackoverflow.com/questions/44078245/is-it-possible-to-use-config-fragments-with-buildroots-config
|
# http://stackoverflow.com/questions/44078245/is-it-possible-to-use-config-fragments-with-buildroots-config
|
||||||
cat ../buildroot_config_fragment >> .config
|
cat ../buildroot_config_fragment >> .config
|
||||||
|
|
||||||
# HOST_QEMU_OPTS is a hack that happens to work because the QEMU package luckly uses += at all times.
|
# HOST_QEMU_OPTS is a hack that happens to work because the QEMU package luckly uses += at all times.
|
||||||
# It shouldn't be necessary in the first place: https://bugs.busybox.net/show_bug.cgi?id=9936
|
# It shouldn't be necessary in the first place: https://bugs.busybox.net/show_bug.cgi?id=9936
|
||||||
# Even if were an autotools package, there is no general way currently to pass extra configs to it:
|
# Even if were an autotools package, there is no general way currently to pass extra configs to it:
|
||||||
@@ -43,6 +44,5 @@ env \
|
|||||||
kernel_module-rebuild \
|
kernel_module-rebuild \
|
||||||
all \
|
all \
|
||||||
;
|
;
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
./runqemu "$@"
|
./runqemu "$@"
|
||||||
|
|||||||
2
runqemu
2
runqemu
@@ -43,6 +43,7 @@ done
|
|||||||
shift "$(($OPTIND - 1))"
|
shift "$(($OPTIND - 1))"
|
||||||
extra_flags="$extra_flags $@"
|
extra_flags="$extra_flags $@"
|
||||||
|
|
||||||
|
./setoutarch "$arch"
|
||||||
buildroot_out_dir='./buildroot/output'
|
buildroot_out_dir='./buildroot/output'
|
||||||
images_dir="$buildroot_out_dir/images"
|
images_dir="$buildroot_out_dir/images"
|
||||||
qemu_common="\
|
qemu_common="\
|
||||||
@@ -83,7 +84,6 @@ case "$arch" in
|
|||||||
"
|
"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo "$cmd"
|
|
||||||
if "$debug" && ! "$nographic" && [ ! "$arch" = 'arm' ]; then
|
if "$debug" && ! "$nographic" && [ ! "$arch" = 'arm' ]; then
|
||||||
eval "$cmd" &>/dev/null &
|
eval "$cmd" &>/dev/null &
|
||||||
# TODO: Ctrl +C gets sent to QEMU? Why? Does not happen if I run
|
# TODO: Ctrl +C gets sent to QEMU? Why? Does not happen if I run
|
||||||
|
|||||||
10
setoutarch
Executable file
10
setoutarch
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Maintain different buildroot/output archs with symlinks.
|
||||||
|
if [ "$#" -ne 1 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
arch="$1"
|
||||||
|
dst="output.${arch}~"
|
||||||
|
src='buildroot/output'
|
||||||
|
mkdir -p "buildroot/$dst"
|
||||||
|
ln -fns "$dst" "$src"
|
||||||
Reference in New Issue
Block a user