Re: Qemu+busybox for kernel development
On Wed, Jun 28, 2017 at 5:46 PM, Alexander Kapshukwrote: > I am trying to setup a build environment where I can run the kernel and see > how the changes I have made to the kernel source work. > My understanding, based on googling, is that it is common practice in the > kernel community to use a virtualised environment for that purpose. > What I have done so far is create a ramfs that is built into the kernel, as > described here [1] and here [2]. > > [1] https://landley.net/writing/rootfs-howto.html > [2] > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/early-userspace/README?h=v4.12-rc7 > > a). I have generated a minimal initramfs_list file: > scripts/gen_initramfs_list.sh -d >usr/initramfs_list > Which looks like this: > # This is a very simple, default initramfs > > dir /dev 0755 0 0 > nod /dev/console 0600 0 0 c 5 1 > dir /root 0700 0 0 > # file /kinit usr/kinit/kinit 0755 0 0 > # slink /init kinit 0755 0 0 > slink /bin/sh busybox 777 0 0 > file /init /bin/busybox 755 0 0 > > b). Set CONFIG_INITRAMFS_SOURCE: > CONFIG_INITRAMFS_SOURCE="/home/sasha/linux/usr/initramfs_list" > > c). And had the kernel generate the initramfs image: > make > ... > GEN usr/initramfs_data.cpio.gz > CHK include/generated/compile.h > AS usr/initramfs_data.o > LD usr/built-in.o > ... > > When I run the kernel in qemu I get an error message which complains about > /etc/init.d/rcS missing. > The posts online seem to suggest that this has got to do with the busybox > configuration. > So far, I have not been able to get my head around this problem. > Any points or suggestions would be much appreciated. > We are using this in Gentoo for testing the kernel: https://github.com/gentoo/Gentoo_kernelCI This is how we are calling Qemu: https://github.com/gentoo/Gentoo_kernelCI/blob/master/files/qemu_check.py#L50 -- Thanks, Alice Ferrazzi Gentoo Kernel Project Leader Mail: Alice Ferrazzi PGP: 2E4E 0856 461C 0585 1336 F496 5621 A6B2 8638 781A ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: Qemu+busybox for kernel development
On Wed, Jun 28, 2017 at 10:48 PM, Shahbaz khanwrote: > Hi Alexander, > > On Wed, Jun 28, 2017 at 1:46 PM, Alexander Kapshuk > wrote: >> >> I am trying to setup a build environment where I can run the kernel and >> see how the changes I have made to the kernel source work. >> My understanding, based on googling, is that it is common practice in the >> kernel community to use a virtualised environment for that purpose. >> What I have done so far is create a ramfs that is built into the kernel, >> as described here [1] and here [2]. >> >> [1] https://landley.net/writing/rootfs-howto.html >> [2] >> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/early-userspace/README?h=v4.12-rc7 >> >> a). I have generated a minimal initramfs_list file: >> scripts/gen_initramfs_list.sh -d >usr/initramfs_list >> Which looks like this: >> # This is a very simple, default initramfs >> >> dir /dev 0755 0 0 >> nod /dev/console 0600 0 0 c 5 1 >> dir /root 0700 0 0 >> # file /kinit usr/kinit/kinit 0755 0 0 >> # slink /init kinit 0755 0 0 >> slink /bin/sh busybox 777 0 0 >> file /init /bin/busybox 755 0 0 >> >> b). Set CONFIG_INITRAMFS_SOURCE: >> CONFIG_INITRAMFS_SOURCE="/home/sasha/linux/usr/initramfs_list" >> >> c). And had the kernel generate the initramfs image: >> make >> ... >> GEN usr/initramfs_data.cpio.gz >> CHK include/generated/compile.h >> AS usr/initramfs_data.o >> LD usr/built-in.o >> ... >> >> When I run the kernel in qemu I get an error message which complains about >> /etc/init.d/rcS missing. > > > Did you check initramfs for rc.S script? > > The kernel configuration, busybox configuration and the layout of initramfs > (which should be /home/sasha/linux/usr/initramfs_list) should be consistent. > If the kernel is asking for it then it is not consistent. > >> >> The posts online seem to suggest that this has got to do with the busybox >> configuration. >> So far, I have not been able to get my head around this problem. >> Any points or suggestions would be much appreciated. >> >> Alexander Kapshuk. >> >> >> ___ >> Kernelnewbies mailing list >> Kernelnewbies@kernelnewbies.org >> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> > > > Thank you. > Shahbaz Khan Apologies for the delay in replying. Thanks very much for all of your responses. I'll give them all a try. ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: Qemu+busybox for kernel development
Hi Alexander, On Wed, Jun 28, 2017 at 1:46 PM, Alexander Kapshuk < alexander.kaps...@gmail.com> wrote: > I am trying to setup a build environment where I can run the kernel and > see how the changes I have made to the kernel source work. > My understanding, based on googling, is that it is common practice in the > kernel community to use a virtualised environment for that purpose. > What I have done so far is create a ramfs that is built into the kernel, > as described here [1] and here [2]. > > [1] https://landley.net/writing/rootfs-howto.html > [2] https://git.kernel.org/pub/scm/linux/kernel/git/ > torvalds/linux.git/plain/Documentation/early-userspace/README?h=v4.12-rc7 > > a). I have generated a minimal initramfs_list file: > scripts/gen_initramfs_list.sh -d >usr/initramfs_list > Which looks like this: > # This is a very simple, default initramfs > > dir /dev 0755 0 0 > nod /dev/console 0600 0 0 c 5 1 > dir /root 0700 0 0 > # file /kinit usr/kinit/kinit 0755 0 0 > # slink /init kinit 0755 0 0 > slink /bin/sh busybox 777 0 0 > file /init /bin/busybox 755 0 0 > > b). Set CONFIG_INITRAMFS_SOURCE: > CONFIG_INITRAMFS_SOURCE="/home/sasha/linux/usr/initramfs_list" > > c). And had the kernel generate the initramfs image: > make > ... > GEN usr/initramfs_data.cpio.gz > CHK include/generated/compile.h > AS usr/initramfs_data.o > LD usr/built-in.o > ... > > When I run the kernel in qemu I get an error message which complains about > /etc/init.d/rcS missing. > Did you check initramfs for rc.S script? The kernel configuration, busybox configuration and the layout of initramfs (which should be /home/sasha/linux/usr/initramfs_list) should be consistent. If the kernel is asking for it then it is not consistent. > The posts online seem to suggest that this has got to do with the busybox > configuration. > So far, I have not been able to get my head around this problem. > Any points or suggestions would be much appreciated. > > Alexander Kapshuk. > > > ___ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > Thank you. Shahbaz Khan ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: Qemu+busybox for kernel development
The way I do it is by compiling the kernel as I would normaly do for a real system. Then, after copying vmlinuz and generating my initramfs, I run Qemu: $ qemu-system-x86_64 -kernel vmlinuz -initrd initramfs.img -append param1=value1 For me, as I am mostly testing, there is no need for a full-feature root FS, since initramfs is perfect for containing small test application and loadable kernel modules. This might come in hand, though: https://lwn.net/Articles/660404/ On 06/28/2017 05:46 AM, Alexander Kapshuk wrote: > I am trying to setup a build environment where I can run the kernel and > see how the changes I have made to the kernel source work. > My understanding, based on googling, is that it is common practice in > the kernel community to use a virtualised environment for that purpose. > What I have done so far is create a ramfs that is built into the kernel, > as described here [1] and here [2]. > > [1] https://landley.net/writing/rootfs-howto.html > [2] > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/early-userspace/README?h=v4.12-rc7 > > a). I have generated a minimal initramfs_list file: > scripts/gen_initramfs_list.sh -d >usr/initramfs_list > Which looks like this: > # This is a very simple, default initramfs > > dir /dev 0755 0 0 > nod /dev/console 0600 0 0 c 5 1 > dir /root 0700 0 0 > # file /kinit usr/kinit/kinit 0755 0 0 > # slink /init kinit 0755 0 0 > slink /bin/sh busybox 777 0 0 > file /init /bin/busybox 755 0 0 > > b). Set CONFIG_INITRAMFS_SOURCE: > CONFIG_INITRAMFS_SOURCE="/home/sasha/linux/usr/initramfs_list" > > c). And had the kernel generate the initramfs image: > make > ... > GEN usr/initramfs_data.cpio.gz > CHK include/generated/compile.h > AS usr/initramfs_data.o > LD usr/built-in.o > ... > > When I run the kernel in qemu I get an error message which complains > about /etc/init.d/rcS missing. > The posts online seem to suggest that this has got to do with the > busybox configuration. > So far, I have not been able to get my head around this problem. > Any points or suggestions would be much appreciated. > > Alexander Kapshuk. > > > > ___ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > -- - seds ~> https://seds.nl ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies