日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

qemu+linux+x86+64,qemu以64位跟32位的方式跑busybox

發(fā)布時間:2023/12/20 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qemu+linux+x86+64,qemu以64位跟32位的方式跑busybox 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

qemu以64位和32位的方式跑busybox

兩種方式x86_64 和32位的i386方式

-----------x86_64-----------------------------------------

參考http://mgalgs.github.io/2015/05/16/how-to-build-a-custom-linux-kernel-for-qemu-2015-edition.html

下載busybox和linux內(nèi)核

TOP=/var/www/mytest

wget http://distro.ibiblio.org/tinycorelinux/6.x/armv6/release/src/busybox/busybox-1.23.2.tar.bz2

wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.3.tar.xz

cd $TOP/busybox-1.23.2

#這步驟很重要,busybox不生成動態(tài)庫

mkdir -pv ../obj/busybox-x86

make O=../obj/busybox-x86 defconfig

make O=../obj/busybox-x86 menuconfig

-> Busybox Settings

-> Build Options

[ ] Build BusyBox as a static binary (no shared libs)

Go to that location, select it, save, and exit.

$ cd ../obj/busybox-x86

$ make -j2

$ make install

把busybox編譯好的文件生成 initramfs

$

mkdir -p $TOP/initramfs/x86-busybox

$ cd $TOP/initramfs/x86-busybox

$ mkdir -pv {bin,sbin,etc,proc,sys,usr/{bin,sbin}}

$ cp -av $TOP/obj/busybox-x86/_install/* .

需要一個啟動文件

vim init

-------------

#!/bin/sh

mount -t proc none /proc

mount -t sysfs none /sys

echo -e "\nBoot took $(cut -d' ' -f1 /proc/uptime) seconds\n"

exec /bin/sh

--------------------

chmod +x init

find . -print0? | cpio --null -ov --format=newc? | gzip -9 > $TOP/obj/initramfs-busybox-x86.cpio.gz

★★★★編譯內(nèi)核★★★★★★★★

linux Kernel

$

cd $TOP/linux-4.0.3

$ make O=../obj/linux-x86-basic x86_64_defconfig

make O=../obj/linux-x86-basic kvmconfig

#支持kvm

make O=../obj/linux-x86-basic -j2

$ cd $TOP

運(yùn)行

qemu-system-x86_64 -kernel obj/linux-x86-basic/arch/x86_64/boot/bzImage -initrd obj/initramfs-busybox-x86.cpio.gz -nographic -append "console=ttyS0" -enable-kvm

------------------------------------------------------------

i386★★★★★★★★★★如果是在64為系統(tǒng)上編譯32位,有點(diǎn)特殊

------------------------------------------------------------

這步驟很重要,busybox不生成動態(tài)庫

cd $TOP/busybox-1.23.2

mkdir -pv ../obj/busybox-i386

make O=../obj/busybox-i386 defconfig

make O=../obj/busybox-i386 menuconfig

-> Busybox Settings

-> Build Options

[ ] Build BusyBox as a static binary (no shared libs)

Go to that location, select it, save, and exit.

$ cd ../obj/busybox-i386

參考

http://blog.csdn.net/xsckernel/article/details/38045783

想編譯32為的環(huán)境

將/usr/bin/gcc和/usr/bin/ld都改名為*.bin,就是改為: /usr/bin/gcc.bin和/usr/bin/ld.bin

然后寫兩個腳本:

/usr/bin/gcc:

---------------------

#!/bin/sh

gcc.bin -m32 $@

------------------------

/usr/bin/ld:

------------------

#!/bin/sh

ld.bin -m elf_i386 $@

---------------------

還需要

yum install glibc.i686 glibc-devel.i686 glibc-static.i686 glibc-utils.x86_64 -y

yum install libgcc.i686 -y

測試是否切換到i386

--------test.c--------

#include

#include

int main()

{

printf("sizeof long is %d\n", sizeof(long));

return 0;

}

-----------------

gcc test.c

file a.out

a.out: ELF 32-bit LSB executable,

繼續(xù)以32位的方式編譯busybox

$ make? -j2

$ make install

生成initramfs:

$ mkdir -p $TOP/initramfs/i386-busybox

$ cd $TOP/initramfs/i386-busybox

$ mkdir -pv {bin,sbin,etc,proc,sys,usr/{bin,sbin}}

$ cp -av $TOP/obj/busybox-i386/_install/* .

vim init

-------------

#!/bin/sh

mount -t proc none /proc

mount -t sysfs none /sys

echo -e "\nBoot took $(cut -d' ' -f1 /proc/uptime) seconds\n"

exec /bin/sh

--------------------

chmod +x init

find . -print0 | cpio --null -ov --format=newc | gzip -9 > $TOP/obj/initramfs-busybox-i386.cpio.gz

--------------------------

★★★★★★編譯32位的內(nèi)核比較簡單,只需要加ARCH=i386

--------------------------

make O=../obj/linux-i386-basic i386_defconfig

make O=../obj/linux-i386-basic kvmconfig

make O=../obj/linux-i386-basic ARCH=i386 -j16

qemu-system-i386 -kernel obj/linux-i386-basic/arch/x86/boot/bzImage -initrd obj/initramfs-busybox-i386.cpio.gz -nographic -append "console=ttyS0" -enable-kvm

-----------------------------------------------------------------------------

系統(tǒng)切換回64位環(huán)境

[root@jslinux mytest]# cat gcc64.sh

#!/bin/sh

mv -i /usr/bin/gcc /usr/bin/gcc.sh

mv -i /usr/bin/ld? /usr/bin/ld.sh

mv -i /usr/bin/gcc.bin /usr/bin/gcc

mv -i /usr/bin/ld.bin? /usr/bin/ld

系統(tǒng)切換回32位環(huán)境

[root@jslinux mytest]# cat gcc32.sh

#!/bin/sh

mv -i /usr/bin/gcc /usr/bin/gcc.bin

mv -i /usr/bin/ld? /usr/bin/ld.bin

mv -i /usr/bin/gcc.sh /usr/bin/gcc

mv -i /usr/bin/ld.sh? /usr/bin/ld

------------------------------------------------------------------------

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的qemu+linux+x86+64,qemu以64位跟32位的方式跑busybox的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。