It seems to me, Raspbian Pi and Pi2 can always be simulated in X86_64 via the
qemu-system-arm command in the wheezy environment. Just follow the
fifth item, you may confirm it. After wheezy, the evil systemd is
the obstacle to overcome. Apparently, Rpi2 is partially supported according to
this
document.
In the process of planning system testing for one of
my clients I found that someone from Microsoft published patches with BCM2846
support to QEMU mailing list. I thought it is very interesting, because if it is
possible to setup emulated Raspberry Pi many use cases can be tested faster and in more
automatic way. For example checking how application behave when running on more then
one device at once, testing massive deployment process, stress testing and finally speed
up debug-fix-test process.
So it looks like making RPi 2 working in emulated environment can add a lot of value
to some products. In email Andrew mention github
repo, which I would like to try in this post
Get QEMU and compile
No need to compile QEMU at all, although the compilation can be done by following
the outlined steps. Just use the qemu-system-arm command, we can boot
2015-11-21-raspbian-jessie.img, but not 2016-05-10-raspbian-jessie.img. Don't know why,
yet.
;; cd /src4/KVM/raspbian-img
1 git clone https://github.com/0xabu/qemu.git -b raspi
;; cd qemu; mkdir objects; cd objects; emacs myconf; chmod 755 myconf
;; cat myconf
#! /bin/bash
../configure --prefix=/src4/KVM/raspbian-img/qemu
2 sudo apt-get install libfdt-dev
;; Not working: git submodule update --init dtc
3 myconf
4 make -j$(nproc) ;; make -j3
5 sudo make install
I have spent almost half a year on porting u-boot, xvisor, and linux 4.4.9 to Rpi2
without any luck, (all of them are done on the newest versions). Porting these software
packages on a VM, (created for cross-compilation purpose), and copy these binary
packages to SD card via SD card-reader is no fun at all. So, I decided to simulate a
raspberry pi2 on x86_64. I kept on working on linux 4.4.9 without any fruitful result.
Finally, I decided to replace linux 4.4 by linux 4.1. Now, I got something positive
to continue with. What's going on? I need to figure out!
Prepare to boot
QEMU requires kernel and device tree file to be given as parameters, because of
that we have to extract those pieces from existing Raspbian image.
1 (...)
2 [ 6.021989] Freeing unused kernel memory: 420K (80779000 - 807e2000)
3 [ 7.366232] random: systemd urandom read with 7 bits of entropy available
4 [ 7.383057] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
5 [ 7.383057]
6 [ 7.384366] CPU: 0 PID: 1 Comm: systemd Not tainted 4.1.13-v7+ #826
7 [ 7.384874] Hardware name: BCM2709
8 [ 7.386615] [<80018444>] (unwind_backtrace) from [<80013e08>] (show_stack+0x20/0x24)
9 [ 7.387307] [<80013e08>] (show_stack) from [<8055a188>] (dump_stack+0x98/0xe0)
10 [ 7.387851] [<8055a188>] (dump_stack) from [<80556340>] (panic+0xa4/0x204)
11 [ 7.388515] [<80556340>] (panic) from [<800293c8>] (do_exit+0xa0c/0xa64)
12 [ 7.389074] [<800293c8>] (do_exit) from [<800294b8>] (do_group_exit+0x4c/0xcc)
13 [ 7.389729] [<800294b8>] (do_group_exit) from [<80033f1c>] (get_signal+0x2b0/0x6e0)
14 [ 7.390388] [<80033f1c>] (get_signal) from [<80013190>] (do_signal+0x98/0x3ac)
15 [ 7.391021] [<80013190>] (do_signal) from [<8001368c>] (do_work_pending+0xb8/0xc8)
16 [ 7.391665] [<8001368c>] (do_work_pending) from [<8000f9e4>] (work_pending+0xc/0x20)
17 [ 7.393209] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
18 [ 7.393209]
To avoid this crash you have to comment /etc/ld.so.preload.
Changing ld.so.preload
First calculate offset in bytes to Raspbian root filesystem partition. According to
fdisk output above partition starts with sector 137216, so
offset would be 512*137216=70254592.
1 sudo mount -o loop,offset=70254592 2016-05-10-raspbian-jessie.img /mnt/tmp
Use your favourite editor to change /mnt/tmp/etc/ld.so.preload. Note
that you have to edit as superuser. Content of file should looks like this:
There are many problem with existing setup, but from my experience this is best
approach and code that I saw during last years. Also it looks like this code is
backed by huge corporation so it looks like they see value in providing this
code to wide community. Rapid delivery of those patches probably would not be
possible without previous work to which Andrew point in his email. It would be
great to see community engagement in this effort.
I lost this file. But, I think I can reproduce it without doubt. More importantly,
we need to build rpi-kernel-qemu (, Rpi Kernel emulated via qemu-system-arm). After
successfully building the Rpi2 kernel, modify the configuration as follows:
Hello, I'm trying to emulate raspbian on QEMU and there're plenty of guides available
on internet. However, every guide points to download qemu-linux kernel from link
kernel-qemu
however, this link is dead and I was unable to find an alternative link. Is there any
alternative link to the kernel or guide how to compile kernel from source ?
Thanks.
Posts: 23 by ShiftPlusOne >> Wed Jun 03, 2015 2:26 pm
I plan to bring the site back up over the weekend.
Raspberry Pi Engineer & Forum Moderator
Posts: 3796 by dhruvvyas90 >> Sun Jun 07, 2015 5:50 am
Thanks a lot. I really appreciate it. However, out of curiosity, if someone were to
compile his own kernel for rpi for qemu, is there any technical difference? In other
words, can I just take a working pi and use its kernel zImage to emulate rpi in qemu?
It might sound silly but I'm just kicking off with rpi and linux in general.
Thanks in advance.
Posts: 23 by ShiftPlusOne >> Sun Jun 07, 2015 6:39 am
Sorry, didn't get around to it.
One of the tutorials I had was how to compile such a kernel, it should be cached
somewhere. You can't just take the normal pi kernel, because it doesn't support the
hardware emulated by qemu.
If you look around, you should be able to find plenty of kernels which will work
under qemu. For example, google spits this page out
qemu/armhf/, but I
haven't tried it.
Raspberry Pi Engineer & Forum Moderator
Posts: 3796 by dhruvvyas90 >> Mon Jun 08, 2015 4:28 am
I found cached webpages. Hope it would be useful to someone following the same
track as mine.
Posts: 23 by dhruvvyas90 >> Mon Jun 08, 2015 7:14 am
Meanwhile, I have made it available on the next link. Hope it helps someone who
stumbles across this thread. (Thanks to the Sandor Megyari for his answer on
emulating-raspbian-with-qemu)
Posts: 23 by jjletho67 >> Tue Jun 16, 2015 5:45 pm
Thank you very much!!! I was going crazy in finding the right kernel image. Your
image is working fine! I followed this guide: http://www.linux-mitterteich.de/fileadm ... p_2013.pdf (but there are a lot of usefull guides on this theme)
I think it would be very usefull to have a sticky thread with an "official" guide to running raspbian inside qemu.
Posts: 1 by polaco1782 >> Wed Oct 21, 2015 12:00 pm
I have built a custom qemu kernel for raspbian Jessie. You can get a sources and a
precompiled version on my github page: <
br>raspberry-qemu
Thanks
Posts: 3 by DougieLawson >> Wed Oct 21, 2015 6:30 pm
polaco1782 wrote: I have built a custom qemu kernel for raspbian Jessie. You can get a sources and a precompiled version on my github page:
Is there any way to get Qemu running with more than 256MB of RAM or multiple cores?
Not
really sure about, but its hardcoded 256 on versatilepb kernel source
file. Also not sure if just increasing it would work, because of memory
mappings.
Thanks
Posts: 3 by dhruvvyas90 >> Tue Nov 17, 2015 11:43 am
DougieLawson wrote:
polaco1782 wrote: I have built a custom qemu kernel for raspbian Jessie. You can get a sources and a precompiled version on my github page:
Is there any way to get Qemu running with more than 256MB of RAM or multiple cores?
I
heard that torlus' qemu allows you to emulate original rpi kernel
(without versatilepb patch and separate compilation) and without RAM
limited to 256 MB. I've not tested it myself but it sounds promising.
Here is the link : https://github.com/Torlus/qemu/tree/rpi
Posts: 23 by dhruvvyas90 >> Tue Nov 17, 2015 11:47 am
polaco1782 wrote: I have built a custom qemu kernel for raspbian Jessie. You can get a sources and a precompiled version on my github page:
@polaco1782: I tried to emulate but it enters into emergency mode giving me `root@raspberrypi` prompt every time I try to boot.
I've
made changes as you suggested on your readme file, ie, commented lines
in `/etc/ld.so.preload`, changed `mmcblk0p` to `sda` in /etc/fstab`. Can
you describe step by step what you did to make it work right ? It could
be useful to other users as well.
I was able to make it work by, commenting all the mmcblk entries in `/etc/fstab`. I was doing it wrong.
It works perfectly fine.
In order to make fresh jessie image to work, this needs to be done.
1. Mount .img file. 2. Comment any lines present in `/etc/ld.so.preload`. Save file. 3. Comment mmcblk entries from `/etc/fstab`. Save file. 4. Unmount. 5.
Use that image to emulate qemu by `qemu-system-arm -kernel kernel-name
-cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2
rootfstype=ext4" -hda image-file-name.img`
Posts: 23 by vortexvortex >> Sun Nov 22, 2015 8:11 pm
@dhruvvyas90
Hi. Watching this thread,
I've been getting the same result as yourself. su - pi and startx seems
to work relatively well from that point, but I still don't seem to get a
clean boot ...
I
also got warnings from my distro version of qemu (Fedora 22) stating I
should explicitly configure raw format for the img file mount. I've
tried qemu invocation as you have suggested, as well as
I've also tried both your github kernel image as well as @polaco1782's, with the same result.
Any pointers/tips appreciated.
Posts: 2 by dhruvvyas90 >> Mon Nov 23, 2015 6:22 am
vortexvortex wrote: @dhruvvyas90
Hi.
Watching this thread, I've been getting the same result as yourself. su
- pi and startx seems to work relatively well from that point, but I
still don't seem to get a clean boot ...
I
also got warnings from my distro version of qemu (Fedora 22) stating I
should explicitly configure raw format for the img file mount. I've
tried qemu invocation as you have suggested, as well as
It
should boot right into desktop without any hassles. Also, ignore that
raw image warnings. At first I also thought, that it has something to do
with not booting it properly.
Posts: 23 by vortexvortex >> Mon Nov 23, 2015 1:47 pm
dhruvvyas90 wrote:
vortexvortex wrote: @dhruvvyas90
Hi.
Watching this thread, I've been getting the same result as yourself. su
- pi and startx seems to work relatively well from that point, but I
still don't seem to get a clean boot ...
I
also got warnings from my distro version of qemu (Fedora 22) stating I
should explicitly configure raw format for the img file mount. I've
tried qemu invocation as you have suggested, as well as
It
should boot right into desktop without any hassles. Also, ignore that
raw image warnings. At first I also thought, that it has something to do
with not booting it properly.
sorry to interrupt . i am following your github. to clone the git and checkout , but seems check out failed. fatal check out failed and need to run " git checkout -f HEAD"
i am not even programmer, i am a hardware guy. so still trying to get the Raspberry Pi jessie qemu working. could you please be more specific ?
I'm trying to emulate raspbian on QEMU and there're plenty of guides available on
internet. However, every guide points to download qemu-linux kernel from link
linux-qemu/kernel-qemu however, this link is dead and I was unable to
find an alternative link. Is there any alternative link to the kernel or guide how to
compile kernel from source to use it for emulation?
That particular build seems to be lacking cgroups and
therefore can't be used to boot Jessie: (- Nathan Osman Nov 17 '15 at 3:15)
cant boot with jessie as well.. tested both kernel versions.. all gives me "Kernel
panic - not syncing : Attempted to kill init", tested with image
2016-02-09-raspbian-jessie.img
- mariomolFeb 14 at 12:50
Please don't like to random files on dropbox. No one knows who you are, nor should
they automatically trust you enough to run some random binary you uploaded to dropbox.
- CerinApr 11 at 17:22
The answer seems to be pretty late but may help other people. About compiling the
kernel from source for qemu, this
link has a
copy of the original xecdesign webpage as a pdf.
Compiling Kernel Pdf Found it at last!!
answered Sep 30 '15 at 17:17
Whilst this may theoretically answer the question, it would be preferable to include the
essential parts of the answer here, and provide the link for reference.
- Steve Robillard Oct 5 '15 at 0:46
$ cd linux
$ make ARCH=arm versatile_defconfig
$ make ARCH=arm menuconfig
Specify the cross-compiler:
General Setup --->
Cross-compiler tool prefix
(arm-linux-gnueabihf-)
Note: Do not forget the '-' at the end of this string.
Note: When you select an option make sure you don't see 'M', but '*' (you may need to press space twice).
Select the right CPU options:
System Type --->
[*] Support ARM V6 processor
[*] ARM errata: Invalidation of the Instruction Cache operation can fail
[*] ARM errata: Possible cache data corruption with hit-under-miss enabled
Enable support for hard-float binaries:
Floating point emulation --->
[*] VFP-format floating point maths
Enable ARM EABI:
Kernel Features --->
[*] Use ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel
Enable QEMU's disk support:
Bus Support --->
[*] PCI Support
Device Drivers --->
SCSI Device Support --->
[*] SCSI Device Support
[*] SCSI Disk Support
[*] SCSI CDROM support
[*] SCSI low-lever drivers --->
[*] SYM53C8XX Version 2 SCSI support
Enable devtmpfs:
Device Drivers --->
Generic Driver Options--->
[*] Maintain a devtmpfs filesystem to mount at /dev
[*] Automount devtmpfs at /dev, after the kernel mounted the root
Enable the important file systems:
File systems -->
<*> Ext3 journalling file system support
<*> The Extended 4 (ext4) filesystem
Enable tmpfs:
File systems --->
Pseudo filesystems--->
[*] Virtual memory file system support (former shm fs)
diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig
index 1dba368..82fa543 100644
--- a/arch/arm/mach-versatile/Kconfig
+++ b/arch/arm/mach-versatile/Kconfig
@@ -4,7 +4,6 @@ menu "Versatile platform type"
config ARCH_VERSATILE_PB
bool "Support Versatile Platform Baseboard for ARM926EJ-S"
default y
- select CPU_ARM926T
select MIGHT_HAVE_PCI
help
Include support for the ARM(R) Versatile Platform Baseboard
@@ -12,7 +11,6 @@ config ARCH_VERSATILE_PB
config MACH_VERSATILE_AB
bool "Support Versatile Application Baseboard for ARM926EJ-S"
- select CPU_ARM926T
help
Include support for the ARM(R) Versatile Application Baseboard
for the ARM926EJ-S.
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index bb263d8..f1fbc63 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -71,7 +71,7 @@ config CPU_ARM9TDMI
# ARM920T
config CPU_ARM920T
- bool "Support ARM920T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
+ bool "Support ARM920T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR) || ARCH_VERSATILE_PB || ARCH_VERSATILE_AB
select CPU_32v4T
select CPU_ABRT_EV4T
select CPU_CACHE_V4WT
@@ -89,7 +89,7 @@ config CPU_ARM920T
# ARM922T
config CPU_ARM922T
- bool "Support ARM922T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
+ bool "Support ARM922T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR) || ARCH_VERSATILE_PB || ARCH_VERSATILE_AB
select CPU_32v4T
select CPU_ABRT_EV4T
select CPU_CACHE_V4WT
@@ -127,7 +127,7 @@ config CPU_ARM925T
# ARM926T
config CPU_ARM926T
- bool "Support ARM926T processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V5) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB)
+ bool "Support ARM926T processor" if ((!ARCH_MULTIPLATFORM || ARCH_MULTI_V5) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB)) || ARCH_VERSATILE_PB || ARCH_VERSATILE_AB
select CPU_32v5
select CPU_ABRT_EV5TJ
select CPU_CACHE_VIVT
@@ -135,6 +135,7 @@ config CPU_ARM926T
select CPU_CP15_MMU
select CPU_PABRT_LEGACY
select CPU_TLB_V4WBI if MMU
+ depends on !CPU_V6 && !CPU_V7
help
This is a variant of the ARM920. It has slightly different
instruction sequences for cache and TLB operations. Curiously,
@@ -358,7 +359,7 @@ config CPU_PJ4B
# ARMv6
config CPU_V6
- bool "Support ARM V6 processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V6) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX || MACH_BCM2708)
+ bool "Support ARM V6 processor" if ((!ARCH_MULTIPLATFORM || ARCH_MULTI_V6) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX || MACH_BCM2708)) || ARCH_VERSATILE_PB || ARCH_VERSATILE_AB
select CPU_32v6
select CPU_ABRT_EV6
select CPU_CACHE_V6
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 1af139a..fd51e26 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -6,7 +6,7 @@ comment "MMC/SD/SDIO Host Controller Drivers"
config MMC_BCM2835
tristate "MMC support on BCM2835"
- depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835
+ depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 || ARCH_VERSATILE_PB || ARCH_VERSATILE_AB
help
This selects the MMC Interface on BCM2835.
And apply it to the kernel:
cd linux/
patch -p1 < ../linux-rpi-qemu.patch
Now we're ready to configure the kernel:
make ARCH=arm CROSS_COMPILE=${CCPREFIX} versatile_defconfig
make ARCH=arm CROSS_COMPILE=${CCPREFIX} menuconfig
In the menu config, select the following options. Make sure they are starred
[*] so that they are not built as modules [m].
System type--->
[*] Support ARM V6 processor
[*] ARM errata: Invalidation of the Instruction Cache operation can fail
[*] ARM errata: Possible cache data corruption with hit-under-miss enabled
Floating point emulation --->
[*] VFP-format floating point maths
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
Bus support --->
[*] PCI support
Device Drivers --->
SCSI device support --->
<*> SCSI device support
<*> SCSI disk support
<*> SCSI CDROM support
[*] SCSI low-level drivers (NEW) --->
<*> SYM53C8XX Version 2 SCSI support
Device Drivers --->
<*> MMC/SD/SDIO card support --->
<*> MMC support on BCM2835
Device Drivers --->
Generic Driver Options --->
[*] Maintain a devtmpfs filesystem to mount at /dev
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs
File systems --->
<*> Ext3 journalling file system support
<*> The Extended 4 (ext4) filesystem
File systems --->
Pseudo filesystems --->
[*] Tmpfs virtual memory file system support (former shm fs)
Build the kernel:
make ARCH=arm CROSS_COMPILE=${CCPREFIX} -j4
Compile BusyBox
Now let's build BusyBox so that we have something once we are booted:
cd ..
wget http://busybox.net/downloads/busybox-1.23.2.tar.bz2
tar xf busybox-1.23.2.tar.bz2
cd busybox-1.23.2/
make CROSS_COMPILE=${CCPREFIX} defconfig
make CROSS_COMPILE=${CCPREFIX} menuconfig
We want to build BusyBox statically, so select this option:
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
Compile BusyBox:
make CROSS_COMPILE=${CCPREFIX} -j4
make CROSS_COMPILE=${CCPREFIX} install
We can now make our initramfs containing BusyBox:
mkdir ../initramfs
cd ../linux
make ARCH=arm CROSS_COMPILE=${CCPREFIX} INSTALL_MOD_PATH=../initramfs modules_install
cd ../initramfs
mkdir -pv {bin,sbin,etc,proc,sys,usr/{bin,sbin}}
cp -a ../busybox-1.23.2/_install/* .
cat << EOF > init
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devtmpfs none /dev
exec /bin/sh
EOF
chmod +x init
find . -print0 | cpio --null -ov --format=newc | gzip > ../initramfs.gz
Emulating with QEMU
The kernel and the initramfs are now built, so it's time to boot with QEMU:
Enabling KVM
virtualization for Raspberry Pi 2
(Source Origin)
17 March, 2015 Sergio L. Pascual Guias
As I wrote on my previous post, Enabling HYP mode on
the Raspberry Pi 2, the newest machine from the Raspberry Pi Foundation features a
Cortex-A7 with Virtualization Extensions, but it isn't possible to make use of such
feature out of the box.
In that article I showed that it was possible to start the kernel in HYP mode. Now,
I'll cover the rest of steps needed for enabling KVM virtualization and running your
first guest OS.
Isolating a core
With KVM on ARM, interrupts are dealt in a very particular way. If a hardware
interrupt is received when a core in running in guest mode, the execution is
interrupted, a full world switch takes place returning to the kernel in host mode,
then interrupts are reenabled and the core traps again, this time following the usual
route.
Apparently, the BCM2836 (the core of the RPi2) doesn't like the behavior, and if you
try to run a guest on a core that can receive physical interrupts, you'll find your RPi2
hangs within a few seconds. Without a JTAG of a full development board, debugging this
problem is very, very hard.
Luckily, there's a pretty simple workaround. Using the kernel option
isolcpus when can isolate a core, so Linux doesn't assign any tasks
(including IRQ lines) to it.
In our case, we're going to isolate the core number 3 (starting from zero). This is
pretty straightforward, just edit /boot/cmdline.txt and add
isolcpus=3 at end of the file.
A kernel with VGIC emulation for the RPi2
On my previous article about RPi2 emulation, I wrote about the BCM2836 and its lack
of a GIC, which makes emulation a bit harder. To work around this issue, I've
implemented VGIC emulation inside the Linux kernel.
To be able to use both the customized bootloader and this modified version of the
kernel, we need to generate a bundle with both components, and the dtb concatenated at
end.
The easy way. Using a prebuilt image
I've uploaded a prebuilt image here (md5sum: 356788d260e1a93376c5b8acbb63da13),
which contains the bootloader, some padding (to put the zImage at
0x8000), the kernel and the dtb. Simply replace your kernel with it (save
a copy first!):
Then you'll need to add the kernel_old=1 option to your
config.txt:
echo "kernel_old=1" >> /boot/config.txt
That's it! On the next boot, Linux should say something like this:
[ 0.154131] CPU: All CPU(s) started in HYP mode.
[ 0.154158] CPU: Virtualization extensions available.
Building it yourself (Part I: the bootloader)
If you want to build the image by yourself, you'll need to grab an ARM cross
toolchain. I'm using the one from the GCC ARM Embedded project, which works
just fine. Then add it to your $PATH, grab the code for my repo, and build it:
export PATH=$PATH:/home/slp/sources/gcc-arm-none-eabi-4_9-2014q4/bin
git clone https://github.com/slp/rpi2-hyp-boot.git
cd rpi2-hyp-boot
make
That should produce a bootblk.bin, with contains the boot code and
32k of padding.
Building it yourself (Part II: kernel and dtb)
You can find a complete guide for building the kernel on a variety of host systems
here Raspberry Pi Kernel
Compilation. Read that and the grab the sources from my repo and make sure the following options
are enabled:
Patch physical to virtual translations at runtime
General setup -> Control Group support
System Type -> Support for Large Physical Address Extension
Boot options -> Use appended device tree blob to zImage
(EXPERIMENTAL)
Boot options -> Supplement the appended DTB with traditional ATAG
information
Device Drivers -> Block devices -> Loopback device support
Virtualization
Virtualization -> Kernel-based Virtual Machine (KVM) support
(NEW)
DISABLEVirtualization -> KVM support for Virtual
GIC
ENABLEVirtualization -> KVM support for Emulated
GIC
Now build both kernel and dtb:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage dtbs
Building it yourself (Part III: bundling all pieces)
Now you can use it in the same way as the prebuilt image provided above.
Patched QEMU installation
To be able to launch our first Guest, we need a recent and patched (to ensure the
guest is running in the isolated core) QEMU. The one that comes with Raspbian is quite
old, so you have to build a newer one:
Then, create a directory for the sources, download QEMU 2.2 and uncompress it:
pi@raspberrypi:~$ mkdir srcs
pi@raspberrypi:~$ cd srcs
pi@raspberrypi:~/srcs$ wget http://wiki.qemu-project.org/download/qemu-2.2.0.tar.bz2
pi@raspberrypi:~/srcs$ tar xf qemu-2.2.0.tar.bz2
We need to apply this
patch to make sure the QEMU runs our guest in the core we isolated with option
isolcpus:
pi@raspberrypi:~/srcs$ cd qemu-2.2.0/
pi@raspberrypi:~/srcs/qemu-2.2.0$ patch -p1 < ~/qemu-cpu-affinity.patch
Now run the configure script with options for enabling KVM (it is
enabled automatically if supported, but this way we ensure we get warned if it's not
going to be build with it) and for building the ARM emulation target only:
Finally, build and install it (by default, the new binaries will reside in
/usr/local/bin):
pi@raspberrypi:~/srcs/qemu-2.2.0$ make
pi@raspberrypi:~/srcs/qemu-2.2.0$ sudo make install
A kernel for the Guest
When running QEMU with KVM, the hardware emulated is a Versatile Express A15, one the
reference platforms provided by ARM Holdings. So, for our Guest we need a kernel which
supports this board, and the corresponding dtb.
I've uploaded prebuilt binaries for both kernel
(md5sum: 7c4831e852d6dda2145dd04fe3c2b464) and
dtb
(md5sum: 249885543f0fcca2ce7a011ef5157e7d).
If you want to build the kernel yourself, you'll need a vanilla kernel (the one from
RPi2's repo wouldn't build). In case of doubt, just grab the lastest stable from kernel.org. Use the default configuration for Vestatile
Express A15 (make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
vexpress_defconfig) and make sure you enable these options:
General setup -> Configure standard kernel features (expert
users)
General setup -> open by fhandle syscalls
Enable the block layer -> Support for large (2TB+) block devices and
files
Then build both kernel and dtb:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage dtbs
This will generate linux/arch/arm/boot/zImage and
linux/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dtb. Copy both files to your
Raspberry.
Running our first Guest
In addition to the kernel, we also need a root filesystem with the distribution we
want to use for our userland. As we're going to virtualize an ARMv7 CPU, the best option
is using a earmv7hf distribution. In this guide, we're going to use a minimal OpenSuSE
image (JeOS), but you can choose the one of your preference.
Create a directory with the files needed by the Guest:
pi@raspberrypi:~$ mkdir -p ~/kvm-arm/opensuse
pi@raspberrypi:~$ cd ~/kvm-arm/opensuse
pi@raspberrypi:~/kvm-arm/opensuse$
Now we create a raw image with OpenSuSE's userland:
pi@raspberrypi:~/kvm-arm/opensuse$ wget http://download.opensuse.org/ports/armv7hl/factory/images/openSUSE-Factory-ARM-JeOS.armv7-rootfs.armv7l-Current.tbz
pi@raspberrypi:~/kvm-arm/opensuse$ qemu-img create -f raw opensuse-factory.img 1G
Formatting 'opensuse-factory.img', fmt=raw size=1073741824
pi@raspberrypi:~/kvm-arm/opensuse$ sudo losetup /dev/loop0 opensuse-factory.img
pi@raspberrypi:~/kvm-arm/opensuse$ sudo mkfs.ext4 /dev/loop0
mke2fs 1.42.5 (29-Jul-2012)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
pi@raspberrypi:~/kvm-arm/opensuse$ sudo mount /dev/loop0 /mnt
pi@raspberrypi:~/kvm-arm/opensuse$ sudo tar xf openSUSE-Factory-ARM-JeOS.armv7-rootfs.armv7l-Current.tbz -C /mnt
pi@raspberrypi:~/kvm-arm/opensuse$ sudo umount /mnt
pi@raspberrypi:~/kvm-arm/opensuse$ sudo losetup -d /dev/loop0
And finally, launch your first Guest:
pi@raspberrypi:~/kvm-arm/opensuse$ sudo qemu-system-arm -enable-kvm -smp 1 -m 256 -M vexpress-a15 -cpu host -kernel /home/pi/vexpress-zImage -dtb /home/pi/vexpress-v2p-ca15-tc1.dtb -append "root=/dev/vda console=ttyAMA0 rootwait" -drive if=none,file=/home/pi/opensuse-factory.img,id=factory -device virtio-blk-device,drive=factory -net nic,macaddr=02:fd:01:de:ad:34 -net tap -monitor null -serial stdio -nographic
audio: Could not init `oss' audio driver
Booting Linux on physical CPU 0x0
Initializing cgroup subsys cpuset
Linux version 3.19.1 (slp@linux-ni2o) (gcc version 4.5.3 (GCC) ) #1 SMP Wed Mar 18 10:52:22 CET 2015
CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: V2P-CA15
Memory policy: Data cache writealloc
PERCPU: Embedded 9 pages/cpu @8fddd000 s7232 r8192 d21440 u36864
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024
Kernel command line: root=/dev/vda console=ttyAMA0 rootwait
PID hash table entries: 1024 (order: 0, 4096 bytes)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 252936K/262144K available (4839K kernel code, 184K rwdata, 1324K rodata, 256K init, 147K bss, 9208K reserved, 0K cma-reserved)
...
[ OK ] Reached target Multi-User System.
[ OK ] Reached target Graphical Interface.
Starting Update UTMP about System Runlevel Changes...
[ OK ] Started Update UTMP about System Runlevel Changes.
Welcome to openSUSE Factory "Tumbleweed" - Kernel 3.19.1 (ttyAMA0).
linux login:
Now we can start playing with this Guest. The default credentials are
root/linux:
linux login: root
Password:
Last login: Tue Mar 17 18:01:41 on ttyAMA0
Have a lot of fun...
linux:~ # cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
Hardware : ARM-Versatile Express
Revision : 0000
Serial : 0000000000000000
The end
And that's it, now you can extract the full potential of your Raspberry Pi 2!
Speaking for myself, I'm going to work on getting MMIO support on NetBSD (without
this, the performance is really awful), and then I'll be able to build an hybrid
Linux/NetBSD SD card image, which was my initial motivation for all this work.
30 thoughts on "Enabling KVM virtualization for
Raspberry Pi 2"
Last line of the article is "And that's it, now you can extract the full potential
of your Raspberry Pi 2!"
Can someone explain this to me? I know almost nothing about virtualization, but isn't
it be definition slower than straight up OS install?
Reply
Wonseok says: 9 August, 2015 at 3:14 pm
I think that "full potential" means he enable hardware-assited virtualization feature
(ARM VE) and porting KVM/ARM on raspberry Pi2. You know, when you got any ARM boards,
vendor always hide the hardware-assited virtualization feature because in normal
development processes (i.e., linux, RTOS and android), you don't need to use the
feature. Therefore, they always provide BSP (board support package) for normal
development. If you want to use hardware-assisted virtualization feature for ARM Board,
you must modify firmware or bootloader to enable HYP mode. Do you want to know how the
board boot with HYP mode, you need to study about ARM boot procedure.
Anyway, as you know, virtualization give us some benefits e.g. supporting multiple
os onto single platform but give us some drawbacks e.g. performacen degradation. This is
the fact and it make us to use virtualizaion uncomfortably way in terms of performace.
Sometimes, however, system have to work long time without downtime, for example,
factory automation. Those kind of system, they don't consider performance of system,
they only consider how long can system work or reducing downtime without human
intervention (It's unpredictable behavior). In this case, virtualization offers many
benefits.
I have not tested it myself, but this is some remarkable job! Thanks for your awesome
work :)!
Reply
Sergio L. Pascual says: 18 March, 2015 at 5:06 pm
Thanks!
Matthias Cramer says: 18 March, 2015 at 2:42 pm
Thats a great article, thanks. Would it be possible to do the opposite in cpu
isolation that you did and dedicate 1 core to the native kernel and interropts and
have 3 cores for virtualisation? This way it would be feasable to have more that one VM
running...
Reply
Sergio L. Pascual says: 18 March, 2015 at
5:09 pm
Sure, you can use something like isolcpus=1,2,3 on your
/boot/cmdline.txt. You'll need to tweak QEMU a little too, to be able to
specify which core you want to use from the command line (in my patch, the core number
is hardcoded).
Reply
Dada says: 8 August, 2015 at 2:10 pm
Hi,
Ok to use multi core for several VM instance. But how to allow a single VM to use
several cores. Even if I specify several cores with the smp option when qemu is
launching, only one core is used by the VM !
Thanks
Alex Ellis says: 18 March, 2015 at 5:22 pm
Ninja mastery at play. Great article and good examples. What next?
MY123 says: 19 March, 2015 at 6:51 pm
The RPi2 has ARM JTAG on the GPIOs.
Mihai says: 1 June, 2015 at 3:21 pm
Awesome tutorial. I failed initially to configure networking, but with some qemu net
nic,tap hacks it finally worked, following all your steps.
Reply
Garrett says: 20 November, 2015 at 6:51 pm
Would you have the details on how you got the networking working on the
QEMU image?
nik says: 2 July, 2015 at 4:49 am
I got opensuse to boot but without the -net tap option. When i use the -net tap
option, I get the following error:
qemu-system-arm: -net tap: Device 'tap' could not be initialized.
Could you suggest how you fixed this error and enabled networking?
Icey590 says: 15 July, 2015 at 1:22 pm
For your premade kernel, could you upload the modules?
Reply
Wonseok says: 9 August, 2015 at 3:20 pm
In many normal cases, you could not insert the modules into prebuilt kernel.
However, If prebuilt kernel has configuration for your module, you can insert your
module.
Answer is that depends on your prebuilt kernel.
Fab says: 16 July, 2015 at 5:25 pm
Great tutorial. I have managed to run the guest (Linaro) on top of the Raspbian by
following your tutorial. Now I am trying to install wiringPi library on the guest and
trying to control the GPIO of the raspberryPi. The library is successfully installed
but when I use the command "gpio readall" I get the message "I see Hardware:
ARM-Versatile Express - expecting BCM2708 or BCM2709". I have checked the list
of available machines for the qemu-system-arm (qemu-system-arm -M help) but BCM2708 or
BCM2709 are not listed. How can I access the GPIO of the raspberryPi from the guest
(Linaro) ? Any suggestion or help will be highly appreciated. Thanks in advance.
Kinnefix says: 21 July, 2015 at 3:11 pm
Hi, is it possible to compile the kernel from your repo for rpi2 with kernel version
4.0?
Reply
Sergio L. Pascual says: 27 July, 2015 at
9:00 am
`
That would require some effort to port the code to 4.x, but shouldn't be hard.
Stefan says: 5 August, 2015 at 9:13 pm
Hello, I followed the steps and everything was compiled sucessfully on RPi2. During
boot I get:
Great blog by the way! Just wondering if anybody managed to get the networking
enabled on their OpenSUSE VM? I have the VM up and running but I'm getting a few
errors on start-up, most of which are in relation to networking. Any suggestions
welcome!
auto lo br0
[other stuff]
# Bridge setup
iface br0 inet dhcp
bridge_ports eth0
/etc/qemu-ifup:
#!/bin/sh
set -x
switch=br0
if [ -n "$1" ];then
tunctl -u `whoami` -t $1
ip link set $1 up
sleep 0.5s
brctl addif $switch $1
exit 0
else
echo "Error: no interface specified"
exit 1
fi
Excellent tutorial! I am a Sr Engineer with Virtuozzo and we have been making
Container / VM Virtualization for 15yrs but this makes me wonder how small I could make
a cluster. What I would love to know is if you could load our bare metal Virtuozzo
load, Linux based, on 5x Pi's and then cluster the SD's together from the 5x using our
software defined storage option built into Virtuozzo giving you fail over between the
5 Pi's... I have done it with 5x Lenovo Notebooks but it would be way cool done on
some Raspberry's. Any thoughts on this or any desire in playing with some copies of our
solution to see if it would work? Just an awesome walk through either way. Thanks for
sharing and email me directly if you want to work on this project with me...
Kernel: kernel-qemu. Save and "chmod 755 kernel-qemu"
Qemu kernel
for emulating Rpi on QEMU From the webpage, download the zip file from it.
These kernels are meant to be the kernels for pi, pi2. Pi3, too? Hence,
-M versatilepb and -cpu arm1176
Boot the image again. If still failed, move the *-boot/*dtd file to somewhere
else. cp 2015-11-21-raspbian-boot/bcm2709-rpi-2-b.dtb
*-boot/bcm2709-rpi-2-b.dtb-2015-11-21 and then ln -s
*-boot/bcm2709-rpi-2-b.dtb-2015-11-21 *-boot/bcm2709-rpi-2-b.dtb
Usually, the later dtb can be sucessfully repalced by 2015-11-21 dtb. But,
for Rpi2 4.4.*, we are out of luck.
We then call in qemu-kernel and simulate the Rpi2 booting by the two
"-M versatilepb" and "-cpu arm1176" command line arguments.
This page will shows how to emulate an ARM1176JZF-S system the quick and easy way.
Assumptions
You have:
QEMU - Linux or Windows. Make sure you have a suitable version (see 'Quick note on QEMU and ARM1176').
Raspian and Debian should work out of the box, however Arch Linux
requires a few tweaks to work. These will not be explored in this
article, as they can only be done in Linux.
This is the same command as before, but without init=/bin/bash.
This will take a while, but will be much quicker on subsequent boots.
That's it, you should see the system starting to boot.
Things to keep in mind
The disc image will only contain about 200MB of free space (if
any at all) for you to play with, so don't expect to be able to install a
full system. You can use DD to expand the image and then resize
manually, but that is not within the scope of this tutorial.
You may see a few steps failing while the image boots. That's
normal, since QEMU cannot emulate ALL of the hardware exactly. Double
check that all the important steps are fine, but in general, this isn't
something to worry about.
Acknowledgements
kinsa for figuring out the ld.so.preload business. Stevie-O for testing. Mjlally for finding a QEMU build that actually works on windows. v13 for a method to fix up ld.so.preload on windows.
I can confirm this is working with the latest 64-bit Windows QEMU build using the following command line -
qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb
-serial stdio -append "root=/dev/sda3 panic=1" -hda
debian6-19-04-2012.img -clock dynticks
Is there a way to download all the necessarily qemu files from http://qemu.weilnetz.de without take them one by one ?
( REPLY )
Shift December 2nd, 2012 - 21:11
AFAIK you don't need all of them. The one I know you need for sure is
qemu-system-arm.exe. When I tried it just crashed on launch, but Steve
(in the comment above yours) reports that http://qemu.weilnetz.de/w32/2012-06-28/qemu-system-arm.exe works.
Rogel Garcia April 6th, 2013 - 07:53
For Win64 dowload:
/w64/dll/*.dll (all dlls)
/w64/2012-06-28/qemu-system.arm.exe
/w64/2012-06-28/keymaps/en-us
Put the dlls in the same directory of qemu-system.arm.exe and preserve the /keymaps subdirectory.
I could execute it with the following command:
qemu-system-arm -M versatilepb -m 128M -nographic -kernel c:\Temp\arm\test.bin
Poulpatine September 11th, 2012 - 01:00
Actually, you can expand your image file size without having to create a new one.
First, launch following command on host :
dd if=/dev/zero bs=1M count=2048 >> raspbian.img
(In this example, the file raspbian.img is expanded with 2 GB)
Then, launch your qemu, and inside the console, launch this :
PART_START=$(parted /dev/sda -ms unit s p |grep "^2" | cut -f 2 -d:)
echo $PART_START # (to be sure that it's not empty).
fdisk /dev/sda <<EOF
p
d
2
n
p
2
$PART_START
p
w
EOF
Then reboot and launch resize2fs on /dev/root .
And, here you have your freshly expanded FS .
Mainly inspired from raspi-config script .
( REPLY )
Shift December 2nd, 2012 - 21:12
Excellent tip, thanks.
Joe Foobar October 18th, 2012 - 07:27
Can you walk through how you built the kernel?
( REPLY )
Shift November 24th, 2012 - 12:50
You can reach me on the #raspberrypi irc channel on freenode, I'll be happy to help.
Edit: But also, there's the tutorial I wrote earlier which has the exact steps. =)
Steve Hobley October 27th, 2012 - 02:20
This might be a noob question, but after getting RPi/Qemu running,
how do I transfer cross-compiled binaries to it for testing? I don't
seem to have an accessible network connection, or file system.
Is it a closed environment?
Steve
( REPLY )
Shift November 24th, 2012 - 12:51
You should have a limited network access, but you can also mount he disc image from within linux to transfer the files.
Bill October 29th, 2012 - 12:56
Ok, I am using Fedora 17 with the qemu version 1.0.1 that is
available via the repository. I downloaded all of the various images
from the raspberry site (2 wheezy debian and one Arch) and the
kernel-qemu from your site. I followed the directions for the
qemu-system-arm command and it boots initially, but gets a "Kernel panic
- not syncing: attempted to kill init!" and stops before getting to a
log in prompt.
I don't know how to grab the boot log so I can't parse it in any
better detail. I do see that I get some errors at the command line
related to pulseaudio, but I don't think that is the problem.
Can you give any info on how to debug this thing?
Bill October 29th, 2012 - 14:36
A quick follow up... I tried each of the 3 images from the raspberry pi
site; same result. I have now moved on to ubuntu 12.04 with
qemu-system-arm version 1.0.50; same result there. Note; both of the
linux distributions have been 64 bit. I will try a 32 bit ubuntu next
to see if that helps.
Bill October 29th, 2012 - 15:54
Success. Ubuntu 12.10 32 bit with qemu-system-arm version 1.2.
Works fine. Don't know which of the variables made the difference
(ubuntu version, qemu version or 32 bit vs 64 bit), but my bet is on 32
bit.
( REPLY )
Eduard Gotwig December 16th, 2012 - 04:08
I have problems with running Ubuntu 12.10 ARM HF.
I run version 1.3 under Ubuntu 12.04.2 LTS amd64 :
The main problem is that Ubuntu targets ARMv7, whereas the Raspberry
Pi CPU is ARMv6. Another problem is that in your screenshot, the root
filesystem seems to be vfat, which wouldn't work anyway.
Angel Genchev November 5th, 2012 - 06:20
Thanks - works for me with -cpu arm1136-r2.
With arm1176 the kernel crashed soon after starting the boot process.
It's probably due to my laziness - my QEMU is latest stock, from Ubuntu
Precise.
I see only 256MB RAM despite i gave it 512 (need to emulate model B).
Is it limit of the emulated CPU I set or it's configured somewhere in
the raspbian image ?
( REPLY )
Angel Genchev November 8th, 2012 - 11:31
Self answering: 256MB is hardcoded in the emulated versatile
platform. If someone needs more memory, he should create a second RAW
file for the qemu on a tmpfs (RAM disk) and setup there a swap file.
1-2GB should be possible. Thus the emulated system will efectively
extend it's virtual memory.
On a separate note, this is an excellent site, very clear and useful information.
Avaneesh December 14th, 2012 - 05:19
Working on my Win XP 32-bit too....... Thanx...
( REPLY )
Shift December 14th, 2012 - 06:13
Excellent, thanks for the feedback.
xxtunisianoxx December 21st, 2012 - 10:06
oss: Could not initialize DAC
oss: Failed to open '/dev/dsp'
oss: Reason: No such file or directory
oss: Could not initialize DAC
oss: Failed to open '/dev/dsp'
oss: Reason: No such file or directory
audio: Failed to create voice 'lm4549.out'
VNC server running on '127.0.0.1:5900'
Uncompressing Linux... done, booting the kernel.
pflash_write: Unimplemented flash cmd sequence (offset 0000000000000000, wcycle 0x0 cmd 0x0 value 0xf000f0)
pflash_write: Unimplemented flash cmd sequence (offset 0000000000000000, wcycle 0x0 cmd 0x0 value 0xf0)
( REPLY )
Shift December 21st, 2012 - 10:10
Assuming it continues to boot, that's not something to worry about.
( REPLY )
xxtunisianoxx December 21st, 2012 - 12:45
I moved on to an other Pc and, it works !!
Now am facing an other problem
sulogin: root account is locked, starting shell
root@rasberrypi:~#
(and it's mentioned before that the root filesystem is mounted on read only-mode)
thank you anyway
( REPLY )
Shift December 21st, 2012 - 12:48
If you could give the full log, I could have a look and maybe see what's wrong.
( REPLY )
xxtunisianoxx December 21st, 2012 - 12:53
Sorry it's too long but i copied every thing just because I don't what you are expecting !!!!
(I used -append "root=/dev/sda3 rootwait console=ttyAMA0") http://pastebin.com/gKfQBd0e
Shift December 21st, 2012 - 12:57
Can you pop into the #raspberrypi IRC channel on freenode?
Shift December 21st, 2012 - 13:13
Looks like your disk image needs a bit of fixing. When you get that error, run 'fsck /dev/sda2' and let it do its thing.
xxtunisianoxx December 21st, 2012 - 13:15
Ok thank you anyway !
Patrick Loemker December 22nd, 2012 - 00:47
Can some one please explain in detail how one of the previous posters meant it was possible to gain 512M of ram?
( REPLY )
Shift December 22nd, 2012 - 09:15
Use the qemu-img tool to create a file. Add '-hdb yournewfile' to the
qemu parameters. Onced booted, you can run 'mkswap /dev/sdb' and
'swapon /dev/sdb' as root to use that file as swap. If you have trouble
with it, let me know and I'll add a section about it to the article.
LukasH December 23rd, 2012 - 23:38
Hello,
Thank you for this great tutorial, however I get no luck with this. I
was trying it on Windows 7 x64. I've downloaded QEMU for windows x64
listed here, kernel listed here and official rasbian for RPI.
when I try to run qemu, I get no error, but just blank black screen. Files stderr.txt and stdout.txt are blank.
I have the same problem on Win7 with both the QEMU 64bit and 32bit binaries from http://qemu.weilnetz.de/. stdout produces the a Hex output
( REPLY )
Shift December 28th, 2012 - 19:05
No idea, but if you figure it out what the problem is, please post back.
()blivion January 23rd, 2013 - 16:49
Same problem here. System: Win7 ult x64 AMD 7750. Build 7600.16917
Running (with any Pi image) the x86 ARM binary gives me error
0xc000007b. And x64 binary gives me a black qemu screen. stderr.txt gets
created, but is deleted when the (blank) qemu window is closed. There
is nothing in the file while it exists. Stdout.txt gets filled with 24
lines of garbled text, the first line is longer. All images pass hash
checks. Clicking inside the blank window removes the mouse pointer from
the screen and tells me that alt+ctl will "exit mouse grab".
I am using your guide for doing this. My steps are...
(1) Get and run the windows qemu installer from "http://qemu.weilnetz.de/w64/".
(2) Get "qemu-system-arm.exe" from "http://qemu.weilnetz.de/w64/2012-12-04/"
(3) Get all five *.ddl's from "http://qemu.weilnetz.de/w64/dll/"
(4) Move the files from step 2-3 to "C:\Program Files (x86)\qemu" (default install directory.)
(5) Get the RaspberryPi images from "http://www.raspberrypi.org/downloads"
(6) decompress the images to qemu directory.
(7) Run "qemu-system-arm -cpu ?" Confirm that 'arm1176' is in Stdout.txt.
(8) In a command prompt, navigate to the qemu directory, do one of these two commands...
Doing "qemu-system-arm -cpu ?" with the x64 binary gives me the
expected list of sported cpus in Stdout.txt. So it would appear that
qemu is installed and working correctly. However, I tried a non
RaspberryPi ARM test image from "http://wiki.qemu.org/Testing" and it
did the same thing.
( REPLY )
()blivion January 24th, 2013 - 08:46
EDIT: The *.img files are of course correct when I run the commands. Not blank as they are above.
cmcinroy May 11th, 2013 - 03:27
Exact same result for me.
Will continue to work on it, but... I'm stumped for now.
I am using Windows 7 x64
I used dependency walker and found that "libpng14-14.dll" depends on
"zlib1.dll". A 32 bit version of zlib1.dll was in my path which
conflicted with the 64 bit qemu I had downloaded and installed. I did a
search for zlib1.dll across my hard drive and found one in an
application (Racket) that was in C:\Program Files\ (Which is where all
the 64 bit apps are installed).
I copied that zlib1.dll into my qemu installation folder and then it worked.
I had a hard time finding a 64 bit version of zlib1.dll on the net.
Hope that helps,
Cheers,
Ben.
( REPLY )
BenC June 17th, 2013 - 22:04
Sadly, now I'm just getting a black window like others.
kgas December 28th, 2012 - 20:20
Thanks, works nicely with Debian image. For arch linux the booting
process fails after random seed (dependency failure for /boot ...)
( REPLY )
Shift December 28th, 2012 - 20:24
To get arch working, you need to edit fstab and change mmcblk0 to
sda. Also, you need to add the rw parameter to the append string.
( REPLY )
kgas December 29th, 2012 - 16:58
Thanks. It requires little work.
- for record
mount the image(for how to http://unix.stackexchange.com/questions/2661/mounting-a-img-file) and edit the fstab as mentioned and change the boot location to sda1.
- remove the symbolic link in /etc/systemd for syslog (If not you can
not login as the screen flooded with messages related to this) (why this
required when journalctl takes care of this - I will check in their
forum)
( REPLY )
Shift December 29th, 2012 - 17:24
I am pretty sure simply adding rw to the append string fixes the
journald flood. This happens because without rw, the root filesystem is
mounted as read only, journald can't write to it and fails to start,
which causes the flood.
( REPLY )
kgas December 30th, 2012 - 04:43
shift, thanks. fstab needs to be updated for both /boot and /. the
default is for /boot only. I need to figure out why the default option
is not working. I need to go thro' your qemu article to get 512 MB
memory.
Shift December 30th, 2012 - 15:10
kgas, you'll need a swap disk/partition or a swap file for that. As
Angel Genchev mentioned above, 256 is hard-coded into the versatile
platform. There is work in progress to give qemu a proper raspberry pi
target though, which looks promising.
( REPLY )
kgas December 31st, 2012 - 23:51
Thanks. To start with , I already put a 512 MB swap file. Good articles, keep it up
( REPLY )
Shift January 1st, 2013 - 06:03
Thanks, if you have any ideas for articles throw them at me. I don't have any, so the site is being neglected, heh.
JimD January 2nd, 2013 - 14:50
Thanks for all the help.
How to Create a larger image file.
This seems to work on Ubuntu 12.04. I got the qemu source from Linaro and built it using the directions found on this website.
You need a fat32 partition for booting. To grow the image you need extra work (there are other methods too)
- create the image size you need ( 4 GB is enough)
- Partition the image (first one for /boot fat32 (make this bootable)
rest for / - you can get lot of how to from search please)
- Mount the partitions and copy the files to the respective directory
- un mount and boot with the new image ..
If set memory to any more than 256, then I get only a black screen and corrupted stdout.txt file.
The only issue the low resolution.
Good work, Thanks
( REPLY )
Shift January 3rd, 2013 - 17:49
Thanks for the feedback. I've added a note about the RAM.
Mxrtuf October 14th, 2013 - 12:38
Thank you very much it solved the black screen.
mark andrus January 8th, 2013 - 03:15
It is very nice idea!So interesting I am very thankful for this
article. It helps me a lot by giving an idea about Raspberry Pi. Now i
know that it is very useful. Just keep posting great ideas about
Raspberry Pi.
Raja January 15th, 2013 - 01:53
I am successfully able to run the emulator now I want to install java
on it. Can anyone tell me how to do this. Also how can I view the IP
address of the emulator?I have started o use linux as well as Raspberry
just recently.
Thanks in advance.
John Lane January 19th, 2013 - 08:55
I just wanted to thank you for this. I've written a few scripts for
the RPi and this article was very useful. I just came back when trying
Arch hard-float and had a running system five minutes later. It's a
shame one has to mount and edit the /etc/fstab but I'd already written a
rpi_mount utility that made that painless. If anyone needing to modify
/etc/fstab for Arch Linux would like to make use of what I've done then
feel free to get it from my site (https://github.com/johnlane/rpi-utils).
For making #Archlinux working. QEMU will run that fast BEAST
(...is this Twiter?)
Adi Linden January 23rd, 2013 - 16:31
Works flawless on OS X Mountain Lion...
jose January 28th, 2013 - 01:59
Great tutorial! I followed the instructions and now I have the Debian
VBox with the Raspberry Pi image running. However it seems there is a
configuration problem with the mouse. After the Raspeberry Pi starts its
LXDE desktop I can't control the mouse. It works fine in the host LXDE
(in the Debian virtual machine), but when I click in Pi's windows it
goes to the upper-left corner or desapears.
Tried to include -usbdevice tablet command in the qemu-system-arm.exe command line, but it didn't make any diffference.
( REPLY )
Shift January 28th, 2013 - 12:44
Are you using something like VirtualBox or VMWare's mouse integration features? They don't play well with a guest running qemu.
( REPLY )
Lorna February 15th, 2013 - 04:02
I have vmware server installed so I assume that explains why my mouse
is all wonky while emulating raspberry in qemu even when I change the
mouse sensitivity settings. How would I disable the vmware servers's
mouse integration? I can only find how-to's with other vmware products.
jose January 28th, 2013 - 13:32
Bingo!
I disabled VirtualBox mouse integration and qemu's Raspberry desktop worked perfectly.
Thanks a lot Shift.
Jordan314 February 9th, 2013 - 10:50
Hi,
Thanks for this tutorial. I couldn't get QEMU to work in
mountain lion so I tried in windows 8 in parallels. When I run
qemu-system-arm -cpu ? I get a blank line, and when I run the full
command it complained about DLLS, and then when I installed those now I
get a blank window that just hangs. Any thoughts?
I guess I'll go try it in mountain lion again, since Adi says it works.
Thanks-
Jordan314 February 9th, 2013 - 11:06
The error I'm getting in Mountain Lion is:
pflash_write: Unimplemented flash cmd sequence (offset 0000000000000000, wcycle 0x0 cmd 0x0 value 0xf000f0)
pflash_write: Unimplemented flash cmd sequence (offset 0000000000000000, wcycle 0x0 cmd 0x0 value 0xf0)
The qemu window launches, but I see:
EXt3-fs (sda2): error: couldn't mount because of unsupported optional features (240)
and then it kernel panics. Thoughts?
( REPLY )
rumbly May 29th, 2013 - 05:02
I'm also getting this error as well right after the mouse set up. I'm
not event seeing the rasbian's rasberri pi logo, just the linux logo.
I'm running it on Mountain Lion 10.8 and the 2013 build of Rasbian
Wheezy.
sfan5 February 13th, 2013 - 04:15
It does not work with 2013-02-09-wheezy-raspbian.img
I downloaded 2012-10-28-wheezy-raspbian.img and it works perfectly, thanks.
( REPLY )
Shift February 13th, 2013 - 19:18
Thanks for letting me know. I don't have the time to look into why
and find a workaround, but your comment should help others if they run
into the same problem.
( REPLY )
mid_kid February 16th, 2013 - 00:17
i think it is beacuse the new img includes the raspi-config at first
boot. It tries to enter the raspi-config but it does not work. If there
is a way to disable the raspi-config it would be awesome
@Alexandre It's identical for me in waiting a solution THX
Richard March 2nd, 2013 - 00:31
@Alexandre
And the same here.
Alex Thorne March 8th, 2013 - 01:54
How did you make your kernel-qemu file? I can successfully boot with
your kernel, but when I use either of the official kernels (kernel.img
or kernel_emergency.img) or the cross compiled kernel image I made
myself, I just get an empty window. What did you have to do to your
kernel to make it work with qemu? (My kernels do load on the Pi itself.)
( REPLY )
Shift March 8th, 2013 - 18:11
Check this blog for the article titled "Compiling an ARM1176 kernel for QEMU"
kinsa March 9th, 2013 - 14:30
In order to run the latest image (2013-02-09-wheezy-raspbian.img) you need to comment out the contents of /etc/ld.so.preload.
Cheers!
( REPLY )
Shift March 9th, 2013 - 15:00
Thanks!
meir March 10th, 2013 - 06:45
I guess you mean one should apply that change to the img itself. How can I do that ? any advisable tool ? (on linux please)
( REPLY )
Shift March 10th, 2013 - 14:43
I am a bit lazy, so here is a nutshell version. The only tools you
need are 'file', 'mount' and a text editor. Use file on the img to find
the startsector of the root partition. Multiply that number by 512. sudo
mount whatever.img location -o offset=newnumber. Now you can go to
wherever you mounted the partition and make the changes you need. When
you're done, umount and the image should be ready.
( REPLY )
meir March 16th, 2013 - 20:24
Thank you very much Shift, it helped me a lot. I eventually managed to get it works as you advised.
aWebpage March 10th, 2013 - 22:45
Followed your instructions above and successfully loads to the login,
but upon login it reports "Raspberry Pi has not been fully configured.
Please run 'sudo raspi-config'" then throws you back to login to repeat
the cycle.
This is under Ubuntu 12.4 LTS with RPi 2013-02-09-wheezy-raspbian.iso
Any ideas?
( REPLY )
aWebpage March 16th, 2013 - 21:17
Getting a bit closer to getting it up and running. An example of the dd command would be really useful.
( REPLY )
Shift March 16th, 2013 - 21:19
What dd command are you referring to?
joaoFigueiredo March 20th, 2013 - 07:05
I'm having the exact same problem! Have you managed to solve it??
( REPLY )
Dracs April 3rd, 2013 - 02:57
Seems to be some problem with the last version of the image.
With the armel image (2012-08-08), it doesn't occur.
Probably didn't with the older versions of the Raspbian (but I didn't found it).
Mark L March 12th, 2013 - 05:52
Thank you so much for these instructions!
Using a combination of the suggestions in these comments, I was
finally able to get 2013-02-09-wheezy-raspbian working in Ubuntu 12.10
64-bit. I had to comment out /etc/ld.so.preload first as suggested, but
it took me a while to figure out I had to mount the *second* partition,
and I mounted it using
Then I ran into the file system corruption issue mentioned above and
fixed it with "fsck /dev/sda2" as suggested. CTRL+D to reboot.
Finally raspi-config came up, I went through everything there, and
after another CTRL+D I was presented with a login prompt (a little
disappointing since I set it to boot to the desktop after login).
Panicked for a bit when it wouldn't let me in and some Googling showed
that "pi" is the default login with "raspberry" the password.
Then I remembered I had reset the password using raspi-config, used that as a password, and I was in to a shell.
I started the desktop using "startx" and got the standard LXDE desktop!
Still not sure why I don't get a DE on startup, but anyway. I might
experiment around with Openbox as a DE and fbpanel as a panel - that
combination is extremely efficient and lean!
Next...trying to get Gentoo on it. :-O
All this is practice before my actual Raspberry Pi arrives...
twig123 March 15th, 2013 - 09:43
I'm using Windows and trying to get QEMU to work with the latest Pi
image (2013-02-09-wheezy-raspbian.img), can someone please explain how
to go about editing the image so that this will work on windows? or
provide the pre-modified image file?
add boot option init=/bin/sh to the kernel options.
Then it should boot to shell
mount / -o remount,rw
echo > /etc/ld.so.preload
mount / -o remount,ro
exit
Typing from memory, so I am sorry if something is not 100% accurate.
twag March 15th, 2013 - 22:32
i tried it with the last image (2013-02-09-wheezy-raspbian.img)
i commented the context from /etc/ld.so.preload out und chroot works now fine. but i cant build anything.
i get the following errors:
"you need autoconf version 2.59 or newer installed"
if i run /usr/bin/autoconf i get:
This script requires a shell more modern than all the shells that i found on your system.
installed bash version is 4.2.37(1)-release
does anyone else have those problems?
LIBER March 28th, 2013 - 05:17
I followed all instructions related to setup of the system but I
cannot run the game "Storm in a Teacup". Is there any solution ?
( REPLY )
Shift March 28th, 2013 - 06:43
I am going to guess that the game uses opengl es or some other gpu features which qemu doesn't not emulate.
Windows 8 User. All directions followed and alot of trouble-shooting
done. I can get the QEmu process to start. The process ramps to about
18% of my CPU and the QEmu window remains blank. Does anyone have any
ideas?
( REPLY )
Shift May 3rd, 2013 - 14:47
No idea, sorry. Give a different version of qemu a go. Check the directory for a file called stdout or stderr as well.
DDragon May 3rd, 2013 - 13:09
Im trying to emulate 2013-02-09-wheezy-raspbian.img using the settings listed here without any success.
Im using QEMU 1.4.0 with the kernal-qemu version listed here (without any file extension).
All qemu seems to do is lock up wont post or anything site on a blank screen for about 2 mins then just fails to respond.
im running Windows 7 Ent 64 bit. Any help would be great.
Razvan May 21st, 2013 - 23:11
i got an error during booting even with the patch for the img file:
EXT3-fs (sda2): error: couldn't mount because of unsupported optional features (240)
( REPLY )
Shift May 21st, 2013 - 23:13
It should continue booting without any problems after that message,
if I recall correctly. If it isn't, there is some other problem.
tyler June 3rd, 2013 - 12:40
when I boot it goes into an endless loop of displaying the license over and over.
( REPLY )
krt June 12th, 2013 - 12:09
see the update note at the top of this post. either follow the
instructions (should work for the new version of the raspbian-image too)
or, if you are on windows, hope that Shift will publish a patcher for
the new image.
Tryph June 4th, 2013 - 05:20
hi,
getting "403 forbidden" when trying to download kernel-qemu via wget
my browser is able to download it but I can't do anything with it using tar or gzip...
( REPLY )
Tryph June 4th, 2013 - 05:43
hmmm well, I misunderstood something...
forgive the part of my previous post which talks about doing something with kernel-qemu and tar or gzip.
but still getting "403 forbidden"
Shift June 4th, 2013 - 18:16
Thanks for letting me know, I'll fix that when I get the chance.
Michal Papis July 5th, 2013 - 14:08
Based on this article I have created a Linux tool to create and manage multiple virtual machines https://github.com/mpapis/myarm#readme - thanks a lot for the instructions!
Evan July 27th, 2013 - 23:43
anybody know where the compatible img file is
( REPLY )
Shift July 27th, 2013 - 23:46
Check back in a few hours, I'll get a new patcher up.
( REPLY )
M July 29th, 2013 - 06:33
hi what does the patch do? can you specify please? just curious
( REPLY )
Shift July 29th, 2013 - 10:58
It takes the raspbian img file that you download from raspberrypi.org
and patches it so that it works with qemu. The only changes are in
/etc/ld.so.preload and /etc/fstab, although the fstab change is not
really necessary.
Jscott August 4th, 2013 - 22:30
I am running on Windows 7 64 bit. Ran qemu with the
2013-05-25-wheezy-raspbian.img and got the "Please run 'sudo
raspi-config'" message followed by a return to login to repeat the
cycle.
Ran the patch. Now it hangs after the 2nd pflash_write message. Looks like I am going backwards.
The message above references a new patcher. Has that been done?
( REPLY )
Shift August 4th, 2013 - 23:50
I did get the patch out, but the pi folks released a new image the next day =(
Jscott August 4th, 2013 - 22:32
Nevermind....it finally came back and I got logged in.
Thanks.
Stavros August 13th, 2013 - 21:03
So I know this is kind of noobish but oh well I compile a custom OS that was given as a tutorial and I have a now compile kernel.img I run Ubuntu 12.04 and when I run
qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M
versatilepb -no-reboot -serial stdio -append "root=/dev/sda3 panic=1"
-hda /kernel.img I get the following errors:
oss: Could not initialize DAC
oss: Failed to open '/dev/dsp'
oss: Reason: No such file or directory
oss: Could not initialize DAC
oss: Failed to open '/dev/dsp'
oss: Reason: No such file or directory
audio: Failed to create voice 'lm4549.out'
kernel-qemu: No such file or directory
qemu: could not load kernel 'kernel-qemu'
Any help or directions would be perfect \
( REPLY )
Shift August 14th, 2013 - 04:00
Make sure kernel-qemu is in the same directory you're running that
command from. Also, you have a '/' in front of kernel.img, which would
indicate that it is located in /, which isn't a good idea. If I
understood what you're trying to do though, it won't work. Is kernel.img
a kernel or a disk image?
eBrain August 28th, 2013 - 02:25
I'm trying to run qemu as the tutorial says: qemu-system-arm -kernel
kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio
-append "root=/dev/sda3 panic=1" -hda 2013-07-26-wheezy-raspbian.img
neither with qemu-system-arm or qemu-system-armw does work...
I've downloaded the "kernel-qemu" file from the link the tutorial suggest algo.
Nothing. I'm using Windows 8 Pro 64 bits, I've also checked the file
zlib (with Dependency Walker [from other post] and it's 64bits)
Ignore my last reply. It seems that kernel-qemu isn't the problem,
just the qemu build. The link I gave you previously contains a qemu
build that works fine.
Hey this works on OSX (10.8.4), too!
I compiled qemu and a cross-compiler by using brew.
( REPLY )
Shift August 28th, 2013 - 08:20
That's good, but I am a little reluctant to change the title since I
am not an OSX user myself and would not be able to offer help if people
run into trouble with it.
timus September 10th, 2013 - 14:38
hey, what does append do: /dev/sda2
What is the use of this option, will it harm my hard-drive partition /dev/sda2
( REPLY )
Shift September 12th, 2013 - 16:33
Sorry for the late reply. Append is what determines the kernel
parameters. Similar to what you would put in GRUB. Since the kernel sees
the emulated system, /dev/sda2 is equivilent to /dev/mmcblk0p1 or the
root filesystem on the image.
sciurius September 13th, 2013 - 21:45
"You may see a few steps failing while the image boots. That's normal, since QEMU cannot emulate ALL of the hardware exactly."
Given the popularity of the Raspberry PIs, why is there still no better (more complete) emulation?
( REPLY )
Shift September 14th, 2013 - 10:19
In a way, there is. Look up Torlus' qemu on github. It's more
complete, but I wouldn't say it's better. He emulates almost everything,
but there are some important things missing, like the NIC, which there
is no qemu emulation driver for yet. I would recommend using that qemu
version for testing bare metal kernels and such, but I still think the
method described in the article is what most people are after.
( REPLY )
sciurius September 15th, 2013 - 23:35
Thanks for the pointer. It looks a bit rough, still.
Actually, the main things missing (in the standard qemu) are
/dev/mmc* and 512MB memory. That shouldn't be hard to emulate, I think.
Harshvardhan September 20th, 2013 - 09:23
Above wouldn't work with newer versions of Raspbian. Please see- http://www.raspberrypi.org/phpBB3/viewtopic.php?f=29&t=37386
and update the post. I needed to add "console=ttyAMA0" to append
option get it started, don't know if it is necessory for everybody.
( REPLY )
Shift September 20th, 2013 - 09:27
Could you be more specific? I helped write the post you linked to and
I also link to it in bold text at the very top of the article. Did I
miss something? =S
Gene September 21st, 2013 - 21:26
does anyone know how to edit /etc/ld.so.preload on OSX? I couldn't
get mount to work. I'm trying to use the new 2013-09-10 wheezy image.
Thomas October 12th, 2013 - 00:22
Hello. I've created an image and it's working in QEMU (with -m256)
but it's not working with "-m 512". I've seen in Your article the note
about 256M being hardcoded into QEMU, but what can be the reason, that
the same image is not booting in Rapsberry Pi B (512M)?
( REPLY )
Shift October 12th, 2013 - 14:28
Hey, is this a custom image you have made that runs in qemu but not
on the pi? Could you provide a little more detail? How did you make the
image? how is it partitioned? what's on the first partition? And so on...
Anon October 16th, 2013 - 19:26
What network card is being emulated by default? I've tried
-netdev user,id=user.0 -device lan9118,netdev=user.0
-netdev user,id=user.0 -device smc91c111,netdev=user.0
but neither resulted in a network device that could be detected by the prebuilt kernel...
( REPLY )
Shift October 16th, 2013 - 19:34
Definitely SMC 91c111
Oscar October 27th, 2013 - 07:45
Hey! This is a really good explanation!! But I have a problem: I want
to connect a web-cam and an arduino using qemu in my PC. Is this
possible?? I connect them to my computer and qemu doesn't recognized
them. If it's possible.. What do I have to do?? I hope you can help me.
Thank you!
( REPLY )
Shift October 28th, 2013 - 00:28
I am not too familiar with this. There may be some usb forwarding
wizardy you can do, but qemu's own mechanism for this does not support
ARM.
Todd S. November 2nd, 2013 - 01:34
On Windows 7, the following step
nano /etc/ld.so.preload
fails with the following error:
[ Error writing /etc/ld.so.preload: Read-only file system ]
I have checked and made sure that the image file I am using is not read-only.
Any help will be appreciated, thanks.
( REPLY )
Todd S. November 2nd, 2013 - 02:07
I was able to fix this by adding "rw" to the argument string for -append, like so:
Ah, thanks. Forgot to add the 'rw' when I updated the instructions, sorry.
( REPLY )
Todd S. November 2nd, 2013 - 04:13
Thank you for the confirmation.
BTW, I don't quite understand step #6 under "First boot" heading. Is
it an instruction to do a shutdown/restart? If so, why, since a reboot
follows anyways, as described in the next section, "First (proper)
boot"? Thanks again.
( REPLY )
Shift November 2nd, 2013 - 08:39
Good point. I meant 'reboot' as a command to enter, since the
-no-reboot option means this will just shut down. I suppose I'll change
it to something less ambiguous. Thanks again.
Jim P. November 14th, 2013 - 01:15
Yikes - I can boot, but QEMU seems to be messing with the keyboard.
How do you get the correct keycodes for QEMU? I tried "-k en-us", but
that doesn't help. It seems QEMU won't read keyboard input correctly.
Also - the 64-bit QEMU doesn't boot up at all on Windows 7.
( REPLY )
Shift November 15th, 2013 - 02:42
Hey, could you give an example? In what way is qemu messing with your keyboard?
khaled November 26th, 2013 - 23:44
Hi, how can i use a webcam with qemu raspberry ? i tried to add :
-usb -usbdevice host:041e:4028 ; but that doesn't help . it gave me this
error : qemu scsi 0.0.0.0 : Device offlined - not ready after error
recovery
thanks
Hello there! I've been using QEMU for a while. Recently, I updated my ARM image
and found that it has some difficulties to make an ARM image and could be an impossible
job for those who are not familiar with embedded systems. I decided to write a
comprehensive post to share some knowledge and how to build you own ARM image. This
post could be very useful for those who want to know how Linux works with minimum
requirements (root file system, in short rootfs). I use
Vexpress as the target board in the tutorial.
This post is separated into three parts. The first part teaches you how a Linux
works from a programmer's view who wants to port Linux on different platforms, such
as QEMU. The second part is a tutorial for building a Linux kernel and rootfs running
on QEMU. The last part is how to run existing kernel and images on QEMU. I believe
this is very comprehensive for someone who want to learn or start a new project on
ARM with QEMU or other ARM platforms.
How Does a Linux Boot
Many people know boot loader and some
Linux boot sequence. You can Google it to find the detail version.
Here I would like to point out how QEMU boot Linux, which is the most central and
fundamental part that one should understand!!
QEMU has a command argument called "-kernel". It is a very handy function!! Because
of this feature, we don't need to bother the complicated boot sequence and problems on
locating Kernel Image. We could just use "-kernel" to pass kernel image to QEMU. Then,
QEMU will uncompress the kernel image to a proper memory location and start to run the
kernel code. This function saves the time to figure out how to boot Kernel on QEMU.
Now, let's talk about how Linux Boot. If you read the paragraph above, then you are
done!! All you need to do to run a kernel is to specify kernel image with "-kernel"
argument to QEMU!! Linux Kernel is a complete program that could be run without other
shared libraries. So... that's it!! However!!! it is useless to run it that way because
the only thing you can do is watching it printing messages which end up with "kernel
panic .... unable to mount rootfs ...". This indicates that kernel could not complete
"init" procedure. So, next section will teach you how to build a rootfs (root file
system) to run a Linux Kernel correctly.
Finally, I would like to talk about kernel modules. Of cause, you can build all
modules in your kernel, so that you don't need to deal with this problem. Since this
is a tutorial, I want to dive deeper. Kernel modules are mostly drivers, both hardware
drivers and software drivers. For example, the Ethernet! If the driver is a kernel
module stored in root file system, Linux kernel will not be able to access the Internet
before mounting the root file system. Another example is ext3, ext4
driver, Linux Kernel must contain these basic file system driver in order to execute
init procedure because the init files are located in
root file system. It's somehow a very common problem which was very popular in early
years. That's why we have the so-called initramfs or
rootfs. They are minimal file system images containing all kernel
modules(.ko files), init procedure scripts, and necessary binaries to boot a full
system. In the following tutorial, we will build the ethernet driver to a separate
.ko file to illustrate the usage of a kernel module on ethernet.
Last part about booting Linux is device tree. A device tree is a tree data structure
with nodes that describe the physical devices in a system. Linux reads the dtb(device
tree blob) file to know the underlying hardware information and achieves portability.
To further understand what information are included in the device tree, you can read the
following articles.
To build ARM image running on QEMU. One should prepare the following things. These
are all the repos we are going to cover in this section. To compile QEMU correctly, you
might need to install some packages which are not mentioned in this article.
First, download Linaro ARM compiler with "hf" (hard floating point
calling convention) support!! You can download it from the link above. Extract it and
put it in a proper location. Then, edit your .bashrc file and export an environment
variable like this. Here I put it to "~/bin/linaro-arm-linux-gnueabihf". You need to
modify this path to your location.
NOTE: If you are doing this for other platforms
without hardware floating points supports, use the one without "hf"
instead. The following commands and scripts are written with
linaro-arm-linux-gnueabihf compiler.
Here, I used Linux 4.4 as my image version. You may or may not need
some adjustments in newer versions. Download and compile Linux kernel with target board
default configuration. There are two configurations you need to modify. First is
"CONFIG_FHANDLE", please refer to
thread1,
thread2 for
more information about why doing this. Second is the ethernet driver SMC91C1xxx.
Enable CONFIG_FHANDLE by pressing <Y> key.
General setup --->
[*] open by fhandle syscalls
Set SMC91C1xxx to loadable kernel module by pressing
<M> key.
P.S. This is just for tutorial use. For convenience, you don't need to make
this change in the real situation. Just leave it included, shown as <*>. If you
mark it included, you might probably don't do anything with root file system since
kernel modules are already included in your kernel image. If you mark it loadable,
you will need to copy the kernel modules into root file system to make it work
correctly.
Device Drivers ---> Network device support ---> Ethernet driver support --->
[*] SMC (SMSC)/Western Digital devices
<M> SMC 91C9x/91C1xxx support
< > SMSC LAN911[5678] support
<M> SMSC LAN911x/LAN921x families embedded ethernet support
# Download linux
~$ git clone https://github.com/torvalds/linux
~$ cd linux
# Switch to version 4.4 (It's not necessary!!!!)
~/linux$ git checkout v4.4
# Load default config for target board
~/linux$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make vexpress_defconfig
# Adjust some settings as mentioned above
~/linux$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make menuconfig
# Compile the kernel
~/linux$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4
After successfully compiling Linux, the image we need is located in
"arch/arm/boot/zImage" and device tree file for Vexpress is in
"arch/arm/boot/dts/vexpress-v2p-ca9.dtb". That's it! You can now run it
with QEMU to get a first taste by running:
You will stop with a kernel panic, but it's fine. We still lack root file system
for Linux kernel to complete the init procedure. Next, we are going to build a root
file system for Linux to run.
Please append a correct "root=" boot option; here are the available partitions:
1f00 131072 mtdblock0 (driver?)
1f01 32768 mtdblock1 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.0+ #5
Hardware name: ARM-Versatile Express
[<8001640c>] (unwind_backtrace) from [<80012f28>] (show_stack+0x10/0x14)
[<80012f28>] (show_stack) from [<8025978c>] (dump_stack+0x88/0x98)
[<8025978c>] (dump_stack) from [<800a4cd0>] (panic+0xa0/0x204)
[<800a4cd0>] (panic) from [<80646254>] (mount_block_root+0x1c0/0x25c)
[<80646254>] (mount_block_root) from [<8064640c>] (mount_root+0x11c/0x124)
[<8064640c>] (mount_root) from [<8064656c>] (prepare_namespace+0x158/0x19c)
[<8064656c>] (prepare_namespace) from [<80645ef0>] (kernel_init_freeable+0x268/0x278)
[<80645ef0>] (kernel_init_freeable) from [<804b8f44>] (kernel_init+0xc/0xe8)
[<804b8f44>] (kernel_init) from [<8000f538>] (ret_from_fork+0x14/0x3c)
Root File System (rootfs)
There are two ways to make a root file system, Busybox and Buildroot.
Busybox is a very old way to build a minimal root file system with only basic binaries.
The user needs to create "/dev" and "/etc" folders with appropriate settings. On the
other hand, Buildroot, integrating many pieces of stuff, is a very easy way with lots
of supports of different libraries and binaries to build a root file system under your
needs. Personally, I prefer Buildroot since build root is more easy to add some extra
binaries, libraries and system services(systemV, systemd, etc.).
Download Busybox and set the setting as follows:
Busybox Settings ---> Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
Instructions:
~$ cd busybox
# Adjust some settings as mentioned above
~/busybox$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make menuconfig
# Compile Busybox
~/busybox$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4
Next, you need to create basic device nodes and init scripts. I prepare the scripts
to complete this task and make life easier. The origin is from this
post; I'm not the
person who wrote this script, but I modified it.
#!/bin/bash
#Remove old files
$ sudo rm -rf rootfs
$ rmdir tmpfs
$ rm -f a9rootfs.ext3
#Create new rootfs folder
$ sudo mkdir rootfs
$ sudo cp busybox/_install/* rootfs/ -raf
#Create folders required by Linux convention
$ sudo mkdir -p rootfs/proc/
$ sudo mkdir -p rootfs/sys/
$ sudo mkdir -p rootfs/tmp/
$ sudo mkdir -p rootfs/root/
$ sudo mkdir -p rootfs/var/
$ sudo mkdir -p rootfs/mnt/
#Download sample etc files with init procedure and copy it to rootfs
$ wget http://files.cnblogs.com/files/pengdonglin137/etc.$ tar.gz
$ tar -xf ./etc.$ tar.gz
$ sudo cp etc rootfs/ -arf
#Copy shared libraries to rootfs
$ sudo cp -arf ~/bin/linaro-arm-linux-gnueabihf/libc/usr/lib rootfs/
$ sudo rm rootfs/lib/*.a
$ sudo arm-linux-gnueabihf-strip rootfs/lib/*
#Create basic device nodes
$ sudo mkdir -p rootfs/dev/
$ sudo mknod rootfs/dev/tty1 c 4 1
$ sudo mknod rootfs/dev/tty2 c 4 2
$ sudo mknod rootfs/dev/tty3 c 4 3
$ sudo mknod rootfs/dev/tty4 c 4 4
$ sudo mknod rootfs/dev/console c 5 1
$ sudo mknod rootfs/dev/ttyAMA0 c 204 64
$ sudo mknod rootfs/dev/null c 1 3
#Create ext3 image file
$ dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=$((32))
$ mkfs.ext3 a9rootfs.ext3
#Copy all the files in our rootfs to image
$ mkdir -p tmpfs
$ sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
$ sudo cp -r rootfs/* tmpfs/
$ sudo umount tmpfs
$ rmdir tmpfs
You will see the following messages when you succeed.
mmc0: new SD card at address 4567
mmcblk0: mmc0:4567 QEMU! 32.0 MiB
input: AT Raw Set 2 keyboard as /devices/platform/smb/smb:motherboard/smb:motherboard:iofpga@7,00000000/10006000.kmi/serio0/input/input0
aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 33
aaci-pl041 10004000.aaci: FIFO 512 entries
oprofile: using arm/armv7-ca9
NET: Registered protocol family 17
9pnet: Installing 9P2000 support
Registering SWP/SWPB emulation handler
Key type encrypted registered
rtc-pl031 10017000.rtc: setting system clock to 2016-03-29 08:30:44 UTC (1459240244)
ALSA device list:
#0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 33
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/smb/smb:motherboard/smb:motherboard:iofpga@7,00000000/10007000.kmi/serio1/input/input2
EXT4-fs (mmcblk0): mounting ext3 file system using the ext4 subsystem
EXT4-fs (mmcblk0): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext3 filesystem) readonly on device 179:0.
Freeing unused kernel memory: 292K (80645000 - 8068e000)
random: nonblocking pool is initialized
mkdir: can't create directory '/var/lock': Read-only file system
Please press Enter to activate this console.
The kernel successfully catches our SD card device with the name "QEMU" and the size
32MB, mapping at address 4567. After pressing Enter, you will login single user mode,
which has only root account to do some maintenance. It is not convenient and sometimes
causes problems on executing a binary compiled by yourself. It's just a toy that shows
some functionality of Linux kernel but without user applications. So, I strongly suggest
using Buildroot to generate a minimal rootfs.
Busybox does not complete the full system we need. In addition, it is very
complicated for developers to understand the whole Linux root filesystem and init
procedures. Buildroot is the perfect solution which includes many repositories,
binaries, libraries from elsewhere. Buildroot is a tool providing a menuconfig
UI. Developers can quickly pick the system configurations they want and choose
libraries, binaries to be installed in the rootfs. The only drawback of using buildroot
is the download and compilation time since all the source codes, and even compilers are
downloaded by its scripts to ensure the integrity and functionality. Trading the
compilation time, developers save the time to build the environment and find the source
codes of those libraries. I think it is very worthy.
To download(clone) and configure buildroot for our needs is super easy.
~$ git clone git://git.buildroot.net/buildroot
~$ cd buildroot
# Please configure the settings listed below
~/buildroot$ make menuconfig
# Don't use -j
~/buildroot$ make
Then, configure the basic, minimal rootfs as the following settings:
#Set to the proper processor if you use different CPU
Target options --->
Target Architecture (ARM (little endian))
Target Binary Format (ELF)
Target Architecture Variant (cortex-A9)
Target ABI (EABI)
Floating point strategy (Soft float)
ARM instruction set (ARM)
#I prefer this toolchain rather than buildroot's
Toolchain --->
Toolchain type (External toolchain)
Toolchain (Sourcery CodeBench ARM 2014.05)
Toolchain origin (Toolchain to be downloaded and installed)
#This is the minimal setting one could use.
System configuration --->
Init system (BusyBox)
[*] Enable root login with password
(root) Root password
/bin/sh (busybox' default shell)
#CPIO is more compatible and has readonly property when executing QEMU
Filesystem images --->
[*] cpio the root filesystem (for use as an initial RAM filesystem)
Don't forget to set a password for root user here if you choose "Enable root login
with password" as I do here. This sample setting is the basic setup I prefer to use.
Actually, one could just set "Target options" to proper ARM CPU and "make". Here, my
setting is trying to demonstrate some critical rootfs settings one might need to
choose. If you prefer fancy terminal instead of basic stuff, you can choose
different init system. Like this:
#This example uses different init system and shell
System configuration --->
(hello_rootfs) System hostname
(From Medicine's Blog) System banner
#You can try systemd if you want :P
Init system (systemV)
#This is the default shell after login.
/bin/sh (bash)
#Here, you can install multiple shells
Target packages ---> Shell and utilities --->
-*- bash
[*] zsh
There are many convenient binaries you can install. Ex: sudo, htop, tmux, vim,
python, PHP, etc. and libraries, such as MySQL, zlib, libfuse, Javascript, x264, x265,
etc. Exploring how many binaries and libraries we could install are very interesting!
Take some time to look at all options! You might find something useful. Here I set
default shell to bash for more powerful and complete functions. You can pick
zsh or other shells you like as default.
After a successful compilation, your rootfs.cpio file will be located in
"buildroot/output/images/rootfs.cpio"
You can use the kernel compiled previously with this new image.
INIT: version 2.88 booting
Starting logging: OK
Initializing random number generator...
done.
Starting network...
INIT: Entering runlevel: 3
From Medicine's Blog
hello_rootfs login:
This message means you made it!! Now, it's running multi-user mode under systemV
init procedure. You can log in "root" with password "root". If you fail to login, you
might forget to set the password for root when configuring Buildroot.
That's it!! Enjoy your easy life with Buildroot.
Arch Linux (ARM)
Now, let's move to running a more rich and powerful Linux system on ARM QEMU. First,
go to ArchLinux|ARM website and download latest
image of Vexpress. In case you can't find it, here's the
link.
The commands to extract the file and build a root file system are very simple.
Basically, what one needs to do is extract it in a folder. But what we are going to
do is to build a rootfs image for QEMU, we need to create an empty ext4 image and put
everything in it.
The message should be like this. You can log in "root" with password "root".
......
Welcome to Arch Linux ARM!
[ OK ] Reached target Paths.
[ 6.270852] systemd[1]: Listening on udev Control Socket.
[ OK ] Listening on udev Control Socket.
......
Arch Linux 4.4.3-1-ARCH (ttyAMA0)
vexpress-ARM login:
I use "-snapshot" to make all the changes in the image volatile for safety. If I run
QEMU without "-snapshot", all the changes I made on QEMU VM would be persistent.
However, if I terminate QEMU with the signal "ctrl+a then press c", some files in the
ext4 rootfs image might be broken. To prevent this tragedy, I use "-snapshot" to drop
all the writes and changes. Of course, if one shutdown QEMU with "poweroff" command on
guest OS, everything will be fine.
Running Arch Linux With Your Kernel
While running Arch with precompiled Linux kernel is easy, running Arch your kernel
might be hard. There are three steps in total. Copy the Linux kernel config file from
rootfs. Compile Linux with that ".config" file and compile kernel modules. Install your
kernel modules on rootfs. That's it! It's really easy but a little bit complicated when
you do it.
For those who are familiar with kernel compile, I prepare a script to do all the jobs
and make our life easier. If you are familiar with the process of compiling kernel and
kernel modules, you can do it by yourself as well. It's the same thing when you compile
your own kernel and kernel modules on your x86 systems. Just don't forget to put kernel
headers and kernel modules in a correct location in rootfs.
To retrieve the kernel config, you need to launch the image with QEMU. After you
launch QEMU, all you need to do is zcat.
# In QEMU Guest OS
~$ zcat /proc/config.gz
Now, you can compile your own kernel. There's one thing you must do is removing all
the external firmware drivers (CONFIG_EXTRA_FIRMWARE=""). They are not open source and
hard to download. Unless you need to run linux on thoes developement boards, just remove
them.
# Make sure this field is empty
Device Drivers ---> Generic Driver Options --->
() External firmware blobs to build into the kernel binary
# Download linux
~$ git clone https://github.com/torvalds/linux
~$ cd linux
# Switch to the version of your Arch ARM
~/linux$ git checkout v4.4
# Load the external config we extracted from Arch ARM
~/linux$ cp ../arch_arm_config ./.config
# Remove all external firmware drivers which we don't have
# And adjust some settings if you need
~/linux$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make menuconfig
# Compile the kernel
~/linux$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j4
# Package the files we need. Need about 5 mins
~/linux$ ../install.sh
# Mount Arch ARM rootfs image
~/linux$ cd ../
~$ sudo mount ./arch_rootfs.ext4 ./root
~$ cd linux
# Copy packed kernel modules and headers
~/linux$ sudo cp -r ./output/usr/lib/modules/* ../root/usr/lib/modules/
# Copy zImage to where you place kernel image
~/linux$ cp ./output/boot/zImage ../zImage_arch
# Un-mount Arch ARM rootfs image
~/linux$ cd ../
~$ sudo umount ./root
Here's the script, please copy paste it manually. The variables from line 4 to
line 15 are related to kernel version and naming. Just modify the version number to
your Linux kernel version number. After executing this script, the output files are
in "./output" folder. Please copy all the files in "./output" to your rootfs and copy
"./output/boot/zImage" to where you place Linux kernel image.
install.sh
#!/bin/bash
buildarch=4
KARCH=arm
pkgbase=linux-armv7
_srcname=linux-4.4
_kernelname=${pkgbase#linux}
_desc="ARMv7 multi-platform"
pkgver=4.4.0
pkgrel='ARCH'
_kernver="${pkgver}-${pkgrel}"
arch='armv7h'
pkgdir=./output
_basekernel=${_kernver%%-*}
_basekernel=${_basekernel%.*}
function generate_headers() {
install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
install -D -m644 Makefile \
"${pkgdir}/usr/lib/modules/${_kernver}/build/Makefile"
install -D -m644 kernel/Makefile \
"${pkgdir}/usr/lib/modules/${_kernver}/build/kernel/Makefile"
install -D -m644 .config \
"${pkgdir}/usr/lib/modules/${_kernver}/build/.config"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include"
for i in acpi asm-generic config crypto drm generated keys linux math-emu \
media net pcmcia scsi sound trace uapi video xen; do
cp -a include/${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/include/"
done
# copy arch includes for external modules
mkdir -p ${pkgdir}/usr/lib/modules/${_kernver}/build/arch/$KARCH
cp -a arch/$KARCH/include ${pkgdir}/usr/lib/modules/${_kernver}/build/arch/$KARCH/
for i in dove exynos mvebu omap2 versatile; do
mkdir -p ${pkgdir}/usr/lib/modules/${_kernver}/build/arch/$KARCH/mach-${i}
cp -a arch/$KARCH/mach-${i}/include ${pkgdir}/usr/lib/modules/${_kernver}/build/arch/$KARCH/mach-${i}/
done
for i in omap orion samsung versatile; do
mkdir -p ${pkgdir}/usr/lib/modules/${_kernver}/build/arch/$KARCH/plat-${i}
cp -a arch/$KARCH/plat-${i}/include ${pkgdir}/usr/lib/modules/${_kernver}/build/arch/$KARCH/plat-${i}/
done
# copy files necessary for later builds, like nvidia and vmware
cp Module.symvers "${pkgdir}/usr/lib/modules/${_kernver}/build"
cp -a scripts "${pkgdir}/usr/lib/modules/${_kernver}/build"
# fix permissions on scripts dir
chmod og-w -R "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/.tmp_versions"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel"
cp arch/${KARCH}/Makefile "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel/"
# add docbook makefile
install -D -m644 Documentation/DocBook/Makefile \
"${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/DocBook/Makefile"
# add dm headers
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
cp drivers/md/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
# add inotify.h
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux"
cp include/linux/inotify.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux/"
# add wireless headers
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
cp net/mac80211/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
# add dvb headers for external modules
# in reference to:
# http://bugs.archlinux.org/task/9912
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core"
cp drivers/media/dvb-core/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core/"
# and...
# http://bugs.archlinux.org/task/11194
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
cp include/config/dvb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
# add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
# in reference to:
# http://bugs.archlinux.org/task/13146
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
# add dvb headers
# in reference to:
# http://bugs.archlinux.org/task/20402
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb"
cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb/"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends"
cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners"
cp drivers/media/tuners/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners/"
# add xfs and shmem for aufs building
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/mm"
# copy in Kconfig files
for i in $( find . -name "Kconfig*"); do
mkdir -p "${pkgdir}"/usr/lib/modules/${_kernver}/build/` echo ${i} | sed 's|/Kconfig.*||'`
cp ${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/${i}"
done
#chown -R root.root "${pkgdir}/usr/lib/modules/${_kernver}/build"
find "${pkgdir}/usr/lib/modules/${_kernver}/build" - type d - exec $ chmod 755 {} \;
# strip scripts directory
find "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts" - type f -perm -u+w 2>/dev/null | while $ read binary ; do
case "$(file -bi "${binary}")" in
*application/x-sharedlib*) # Libraries (.so)
/usr/bin/strip ${STRIP_SHARED} "${binary}";;
*application/x-archive*) # Libraries (.a)
/usr/bin/strip ${STRIP_STATIC} "${binary}";;
*application/x-executable*) # Binaries
/usr/bin/strip ${STRIP_BINARIES} "${binary}";;
esac
done
# remove unneeded architectures
rm -rf "${pkgdir}"/usr/lib/modules/${_kernver}/build/arch/{alpha,arc,arm26,arm64,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,metag,mips,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,x86,xtensa}
}
function generate_modules() {
mkdir -p "${pkgdir}"/{lib/modules,lib/firmware}
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make INSTALL_MOD_PATH="${pkgdir}" modules_install
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make INSTALL_DTBS_PATH="${pkgdir}/boot/dtbs" dtbs_install
cp arch/$KARCH/boot/zImage "${pkgdir}/boot/zImage"
# remove build and source links
rm -f "${pkgdir}"/lib/modules/${_kernver}/{ source,build}
# remove the firmware
rm -rf "${pkgdir}/lib/firmware"
# gzip -9 all modules to save 100MB of space
find "${pkgdir}" -name '*.ko' | xargs -P 2 -n 1 gzip -9
# make room for external modules
ln -s "../extramodules-${_basekernel}-${_kernelname:-ARCH}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
# add real version for building modules and running depmod from post_install/upgrade
mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}-${_kernelname:-ARCH}"
echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}-${_kernelname:-ARCH}/version"
# Now we call depmod...
depmod -b "$pkgdir" -F System.map "$_kernver"
# move module tree /lib -> /usr/lib
cp -r "$pkgdir/lib" "$pkgdir/usr"
rm -rf "$pkgdir/lib"
}
generate_headers
generate_modules
At the end, I would like to comment something you need to do for a better experience
of running Arch ARM on QEMU.
First, you might need to compile Linux kernel and enable "open by fhandle syscalls"
as mentioned in this tutorial. Otherwise, you might wait for 1'30 for ttyAMA0.
Reference: thread1, thread2.
Second, there are many useless system services and
unworkable services. You might be interested in
clean up systemd.
After launching Arch ARM on QEMU and logging in, you can mask out all the
unworkable(failed) services in your Arch ARM. After doing this, don't forget to
gently "poweroff" Arch ARM.
Choose of Linaro Compiler
I would like to comment one of the most important things in developing the
application and the root file system. The Compiler. There are many toolchain providers
on the web, but there is one very popular and continuously updating their toolchain,
Linaro. Linaro also provides Linux kernels for ARM. I didn't choose that because I'm
more familiar with mainline Linux Kernel. However, Linaro's kernel is a good choice
with security as well.
When you go to the release page of the toolchain, you will see different naming of
compilers. If you are building a rootfs for ARM processor supporting hardware floating
point unit, feel free to choose the one with "hf" suffix. If your processor does not
have a hardware floating point unit, go for the one without "hf", otherwise, your codes
might not work due to unsupported instructions. So, generally, you can use
arm-linux-gnueabi for your processor.
arm-linux-gnueabi is the cross-toolchain package for the armel architecture. This
toolchain implies the EABI generated by gcc's -mfloat-abi=softfp options.
arm-linux-gnueabihf is the cross-toolchain package for the armhf architecture. This
toolchain implies the EABI generated by the gcc -mfloat-abi=hard option.
Specifying "soft" causes GCC to generate output containing library calls for
floating-point operations. "softfp" allows the generation of code using hardware
floating-point instructions, but still uses the soft-float calling conventions. "hard"
allows generation of floating-point instructions and uses FPU-specific calling
conventions.
arm-linux-gnueabi: The general tool chain with Linux dependency.
arm-linux-gnueabihf: Utilize hardware floating point registers.
armeb-linux-gnueabi: Big Endian.
armeb-linux-gnueabihf: Big Endian. Utilize hardware floating point registers.
arm-none-eabi: Bare metal. The general tool chain that does not rely on any
Linux Kernel.
armeb-none-eabi: Bare metal. Big Endian.
When you are compiling the Busybox and get an error with "libm.a" which is "-lm" in
the args, just don't use static linking. If that doesn't help, download
arm-linux-gnueabihf. Because of unknown reason, the toolchain with
"hf" suffix contains libm.a while the other one does not.
If you want to use Linaro's tool chain compiling Buildroot. You need to set the
following options:
Toolchain --->
Toolchain (Custom toolchain)
Toolchain origin (Pre-installed toolchain)
(/PATH/TO/TOOL_CHAIN/linaro-arm-linux-gnueabihf) Toolchain path
($(ARCH)-linux-gnueabi) Toolchain prefix
External toolchain gcc version (4.9.x)
External toolchain kernel headers series (3.17.x)
[*] Toolchain has C++ support?
It seems like Linaro's toolchain does not pass the eabi test of Buildroot, but we
know it supports. We need to remove/delete two lines of the script in order to
successfully compile the files. They are two "exit 1" codes at line number 360 and
367 as shown below. The absolute position might be changed.
toolchain/helpers.mk
#
# Check that the Buildroot configuration of the ABI matches the
# configuration of the external toolchain.
#
# $1: cross-gcc path
# $2: cross-readelf path
#
check_arm_abi = \
__CROSS_CC=$(strip $1) ; \
__CROSS_READELF=$(strip $2) ; \
EXT_TOOLCHAIN_TARGET=`LANG=C $${__CROSS_CC} - v 2>&1 | grep ^Target | cut -f2 -d ' '` ; \
if ! echo $${EXT_TOOLCHAIN_TARGET} | grep -qE 'eabi(hf)?$$' ; then \
echo "External toolchain uses the unsuported OABI" ; \
exit 1 \
fi ; \
if ! echo 'int main(void) {}' | $${__CROSS_CC} -x c -o $(BUILD_DIR)/.br-toolchain- test.tmp - ; then \
rm -f $(BUILD_DIR)/.br-toolchain- test.tmp*; \
abistr_$(BR2_ARM_EABI)='EABI'; \
abistr_$(BR2_ARM_EABIHF)='EABIhf'; \
echo "Incorrect ABI setting: $${abistr_y} selected, but toolchain is incompatible"; \
exit 1 \
fi ; \
rm -f $(BUILD_DIR)/.br-toolchain- test.tmp*
At the end, we need to strip out useless debugging information to reduce the size.
I choose to keep symbol table for back tracing and function tracing function of my
personal study. P.S. You can strip out
all unnecessary things if you choose "strip" instead of "none" here.
It's the default action.
QEMU has very complicated arguments. Here is an example to wrap up all the arguments
I used in this tutorial.
-M: Specify the machine type. Use "-M help" to list all the supported boards
-kernel: Specify the kernel image (bzimage)
-dtb: Specify the hardware description file (Device Tree Blob)
--nographic: Run QEMU without GUI. It's much more convenient.
-append: Specify Linux kernel arguments. Here we set default console
to ttyAMA0 which is one of QEMU's console when Guest OS/Applications
wants to print something on host's terminal.
-drive: Specify a drive for the image. It can be SD card, flash,
etc. It's the lowest level of drive API. We use if(interface) SD card
with write back cache policy to save image access time.
-sd: It is a higher level API to specify a drive. It's equivalent to "-drive
if=sd,file="
-net nic,macaddr=$macaddr: Specify the mac address
-net tap,vlan=0,ifname=tap0: Use tap device for internet access
-snapshot: Don't write back to the original disk image.
The following example can run QEMU with internet access. Please refer to QEMU's
NAT and Arch's
QEMU
networking for further details.
For Arch Linux user, to set up networking for QEMU, you need to set up
bridge with netctl
for your computer, then do follows:
# Switch to bridge. qemu_bridge is the netctl config file
~$ netctl switch-to qemu_bridge
# Assign gateway IP for bridge (This enables host to ssh guest)
~$ sudo ip addr add dev br0 192.168.0.254/24
# IPv4 forwarding (This enables guest to connect to global net. -o must be the name of bridge you used)
~$ sudo iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
~$ sudo sysctl -w net.ipv4.ip_forward=1
Create/edit the following two files for QEMU's hook.
/etc/qemu-ifup
#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /usr/bin/ip link set $1 up promisc on
echo "Adding $1 to br0..."
sudo /usr/bin/brctl addif br0 $1
sleep 2
/etc/qemu-ifdown
#!/bin/sh
echo "Executing /etc/qemu-ifdown"
sudo /usr/bin/ip link set $1 down
sudo /usr/bin/brctl delif br0 $1
sudo /usr/bin/ip link delete dev $1
Then, make them executable by:
~$ sudo chmod +x /etc/qemu-ifup /etc/qemu-ifdown
In Arch ARM, you can enable the network by setting proper IP and correct gateway of
br0.
# Set IP
~$ ip addr add 192.168.0.2/24 dev eth0
# Set gateway to br0(host)
~$ ip route add default via 192.168.0.254 dev eth0
# Set DNS name server
~$ echo "nameserver 8.8.8.8" >> /etc/resolv.conf
# Use IPv4 mode of ping
~$ ping -4 8.8.8.8
2 thoughts on "Build Your ARM Image for QEMU"
Excellent tutorial! I followed this with joy. I'm very familiar with cpio based root
fs (the first in your tutorial), but I was searching the net for a buildroot tutorial
(since I never used it) and I found your page.
I think I spotted two minor issues. Firstly, under the Arch Linux section the line:
bsdtar -xpf ArchLinuxARM-armv7-latest.tar.gz -C ./root
That must also be called with sudo rights, otherwise you're not allowed to untar to
the ./root folder. Secondly, you use different naming in the "install.sh" script
compared to the text. In the install.sh script pkgdir is "build", but in the text, above
you instead tell the reader that built files are in the "output" folder. If you ensure
that you have the correct paths, then everything works fine. But, for a newbie, new to
all this, there is a risk they get stuck here. So I'd suggest that you update one of
them.
Again, thanks for a well written tutorial!
P.S. I'm working at Linaro ... with security, not with toolchains etc, but when I
find some time I'll have chat with a toolchain engineer, eventually they know why the
buildroot test fails in the Linaro toolchain.
Thanks!! I've updated the content of "install.sh". I forgot to change the folder name
when typing this post. Also, I added "sudo" on the command "bsdtar ...".
I'm really happy that this post did help someone. It's really not that easy for a newbie,
especially the network part. QEMU support user level NAC on x86, which allows guest OS
access the internet without root privilege on manipulating network devices. However,
QEMU does not provide the same function on emulating ARM platform due to some
issues/difficulties.
P.S. I didn't mention how to port a Linaro image on QEMU because there's already an
image on your web page.
While I was searching the internet about emulating QEMU, most of the guides pointed to link https://xecdesign.com/downloads/linux-qemu/kernel-qemu which is dead as of now.
So making it available on github for someone who would like to use it.
Hope it helps.
In my last post
I wrote about to getting my Pi2 to boot with HYP enabled on all 4 CPUs.
The next stage is to get a kernel with KVM enabled and get a VM up and
running. Once again most of this method is taken from a blog post by @sergiolpascual I have tidied it up and refined the method of using a single CPU core without patching QEMU.
Building a KVM enabled kernel for the Pi
First of all you need to get a KVM enabled kernel for the Pi2 host.
These commands checkout the current 3.18 version of the Raspberry Pi
foundation's kernel tree and apply a pull request on top of it to enable GIC emulation.
git clone https://github.com/raspberrypi/linux
cd linux
git checkout rpi-3.18.y
git fetch origin pull/902/head:VGIC-emu
git checkout VGIC-emu
I started off with the same base config as the kernel on my Pi 2.
There is a file /proc/config.gz that stores the config the running
kernel was built with. Copy this file to your build host, uncompress it
and rename it to /working/rpi2/.config that way you will only need to
make a few minor changes to the config.
# If you don't see any output from command "$ ls -l /proc/conf*"
# $ find /lib/modules -name "configs*"
/lib/modules/4.1.13-v7+/kernel/kernel/configs.ko
/lib/modules/4.1.13+/kernel/kernel/configs.ko
# $ sudo modprobe configs
# $ ls -l /proc/conf*
-r--r--r-- 1 root root 29603 Nov 21 23:24 /proc/config.gz
scp user@pi:/proc/config.gz /tmp/config.gz
mkdir -p /working/rpi2
zcat /tmp/config.gz > /working/rpi2/.config
Now we need to setup a cross compile environment again and start the kernel config system.
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
make O=/working/rpi2 menuconfig
Note: (06/13/2016) While compiling linux kernel to be run as a kvm guest,
it seems, we need to add the following options to the generated .config file:
kvm (guest) config. Probably, not the "CONFIG_IP_PNP_DHCP=y" option,
since DHCP is not very reliable.
I've listed the options that need to be changed to enable KVM support in the kernel,
these notes are copied from sergiolpascual's post. I have uploaded my KVM enabled config, (source origin: config.gz), with these options set already.
Note the O= option this sets the directory where compiled parts of
the kernel are put, it means that your source tree stay clean.
Patch physical to virtual translations at runtime
General setup -> Control Group support
System Type -> Support for Large Physical Address Extension
Boot options -> Use appended device tree blob to zImage (EXPERIMENTAL)
Boot options -> Supplement the appended DTB with traditional ATAG information
Virtualization -> Kernel-based Virtual Machine (KVM) support (NEW)
DISABLEVirtualization -> KVM support for Virtual GIC
ENABLEVirtualization -> KVM support for Emulated GIC
Now you just need to build the kernel and install the modules
make O=/working/rpi2 all -j 4
export INSTALL_MOD_PATH=/tmp/rpi-kernel
make O=/working/rpi2 modules_install
To build the Pi2 boot image, glue the kernel and DTB file together thus
Copy the directory /tmp/rpi-kernel to the Pi2, replace
/boot/firmware/kernel7.img (take a backup first) with our new kernel and
move the new 3.18.x modules directory to /lib/modules/.
You will need to adjust the Pi's kernel command line to add
"isolcpus=3" to work round a bug. To do this via u-boot run these
commands from the u-boot command line:
So long as you are running Debian / Raspbian Jessie then you can just run
apt-get install qemu-system
Adding the boot option isolcpus=3 works round an oddity of the Raspberry Pi's CPU, discussed in more detail in the original blog post.
We need to ensure that QEMU only runs on this isolated CPU. In the
original post this was done by patching QEMU but there is a much easier
way, taskset. Taskset allows us to restrict QEMU to only CPU 3 with the
"-c 3-3" option.
This is my basic run script to boot an ARM VM on the Raspberry Pi2. I
used the Linaro prebuilt ARM kernels and root images to test with and
have included the URLs in the script.
#!/bin/sh
# Disable the QEMU sound driver
export QEMU_AUDIO_DRV=none
# Basic system setup an ARM vexpress with 1 CPU, 256M of RAM
smp=1
cpu=host
ram=256
machine=vexpress-a15
# Where are the kernel and root images stored
dir=/root/linaro
# Source: https://snapshots.linaro.org/ubuntu/images/kvm/latest/zImage-armv7
kernel=$dir/zImage-armv7
# Source: https://snapshots.linaro.org/ubuntu/images/kvm/latest/vexpress-v2p-ca15-tc1.dtb
dtb=$dir/vexpress-v2p-ca15-tc1.dtb
# Source: http://snapshots.linaro.org/ubuntu/images/kvm-guest/36/armhf/kvm-armhf.qcow2.xz
rootfs=$dir/kvm-armhf.qcow2
# Virtual machine Linux command line
cmdline="root=/dev/vda2 rw mem=${ram}M console=ttyAMA0 rootwait
rootfstype=ext4"
# Use taskset to ensure that QEMU only runs on cpu 3
taskset -c 3-3 qemu-system-arm -enable-kvm -smp $smp -m $ram -M $machine
-cpu host -kernel $kernel -dtb $dtb -append "$cmdline" -drive
if=none,id=rootfs,file=$rootfs -device virtio-blk-device,drive=rootfs
-netdev user,id=user0 -device virtio-net-device,netdev=user0 -nographic
config
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm 3.18.8 Kernel Configuration
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_HAVE_PROC_CPU=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIQ=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_ARM_PATCH_PHYS_VIRT=y
CONFIG_NEED_MACH_IO_H=y
CONFIG_NEED_MACH_MEMORY_H=y
CONFIG_GENERIC_BUG=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
#
# General setup
#
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
# CONFIG_COMPILE_TEST is not set
CONFIG_LOCALVERSION="-v7"
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_HAVE_KERNEL_LZ4=y
# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_LZMA is not set
CONFIG_KERNEL_XZ=y
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set
CONFIG_DEFAULT_HOSTNAME="(none)"
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_FHANDLE=y
# CONFIG_USELIB is not set
CONFIG_AUDIT=y
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y
#
# IRQ subsystem
#
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_IRQ_DOMAIN=y
CONFIG_HANDLE_DOMAIN_IRQ=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_ARCH_HAS_TICK_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
# CONFIG_NO_HZ_FULL is not set
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
#
# CPU/Task time and stats accounting
#
CONFIG_TICK_CPU_ACCOUNTING=y
# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
# CONFIG_IRQ_TIME_ACCOUNTING is not set
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_XACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
#
# RCU Subsystem
#
CONFIG_TREE_PREEMPT_RCU=y
CONFIG_PREEMPT_RCU=y
# CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y
# CONFIG_RCU_USER_QS is not set
CONFIG_RCU_FANOUT=32
CONFIG_RCU_FANOUT_LEAF=16
# CONFIG_RCU_FANOUT_EXACT is not set
CONFIG_RCU_FAST_NO_HZ=y
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_RCU_BOOST is not set
# CONFIG_RCU_NOCB_CPU is not set
CONFIG_BUILD_BIN2C=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
CONFIG_GENERIC_SCHED_CLOCK=y
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CPUSETS=y
CONFIG_PROC_PID_CPUSET=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
# CONFIG_MEMCG_SWAP_ENABLED is not set
# CONFIG_MEMCG_KMEM is not set
CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_CFS_BANDWIDTH is not set
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
CONFIG_CHECKPOINT_RESTORE=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_SCHED_AUTOGROUP=y
# CONFIG_SYSFS_DEPRECATED is not set
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
CONFIG_HAVE_UID16=y
CONFIG_BPF=y
CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SGETMASK_SYSCALL is not set
# CONFIG_SYSFS_SYSCALL is not set
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
# CONFIG_BPF_SYSCALL is not set
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y
CONFIG_EMBEDDED=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y
#
# Kernel Performance Events And Counters
#
CONFIG_PERF_EVENTS=y
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
CONFIG_VM_EVENT_COUNTERS=y
# CONFIG_COMPAT_BRK is not set
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
CONFIG_PROFILING=y
CONFIG_TRACEPOINTS=y
CONFIG_OPROFILE=m
CONFIG_HAVE_OPROFILE=y
CONFIG_KPROBES=y
CONFIG_JUMP_LABEL=y
CONFIG_UPROBES=y
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_KRETPROBES=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_ATTRS=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_GENERIC_IDLE_POLL_SETUP=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_PERF_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_RCU_TABLE_FREE=y
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_NONE is not set
CONFIG_CC_STACKPROTECTOR_REGULAR=y
# CONFIG_CC_STACKPROTECTOR_STRONG is not set
CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
CONFIG_MODULES_USE_ELF_REL=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_OLD_SIGACTION=y
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_MODULE_SIG is not set
# CONFIG_MODULE_COMPRESS is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
CONFIG_BLK_DEV_BSGLIB=y
CONFIG_BLK_DEV_INTEGRITY=y
CONFIG_BLK_DEV_THROTTLING=y
# CONFIG_BLK_CMDLINE_PARSER is not set
#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_AIX_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
CONFIG_KARMA_PARTITION=y
CONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not set
# CONFIG_CMDLINE_PARTITION is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_CFQ_GROUP_IOSCHED=y
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PADATA=y
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_FREEZER=y
#
# System Type
#
CONFIG_MMU=y
# CONFIG_ARCH_MULTIPLATFORM is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_REALVIEW is not set
# CONFIG_ARCH_VERSATILE is not set
# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_BCM2708 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_GEMINI is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_DOVE is not set
# CONFIG_ARCH_MV78XX0 is not set
# CONFIG_ARCH_ORION5X is not set
# CONFIG_ARCH_MMP is not set
# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_W90X900 is not set
# CONFIG_ARCH_LPC32XX is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_MSM is not set
# CONFIG_ARCH_SHMOBILE_LEGACY is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_S3C24XX is not set
# CONFIG_ARCH_S3C64XX is not set
# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP1 is not set
CONFIG_ARCH_BCM2709=y
CONFIG_BCM2708_GPIO=y
CONFIG_BCM2708_VCMEM=y
CONFIG_BCM2708_NOL2CACHE=y
CONFIG_BCM2708_SPIDEV=y
#
# Broadcom BCM2709 Implementations
#
CONFIG_MACH_BCM2709=y
CONFIG_BCM2709_DT=y
#
# Processor Type
#
CONFIG_CPU_V7=y
CONFIG_CPU_32v6K=y
CONFIG_CPU_32v7=y
CONFIG_CPU_ABRT_EV7=y
CONFIG_CPU_PABRT_V7=y
CONFIG_CPU_CACHE_V7=y
CONFIG_CPU_CACHE_VIPT=y
CONFIG_CPU_COPY_V6=y
CONFIG_CPU_TLB_V7=y
CONFIG_CPU_HAS_ASID=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
CONFIG_ARM_LPAE=y
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
CONFIG_ARM_THUMB=y
# CONFIG_ARM_THUMBEE is not set
CONFIG_ARM_VIRT_EXT=y
CONFIG_SWP_EMULATE=y
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_BPREDICT_DISABLE is not set
CONFIG_KUSER_HELPERS=y
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
# CONFIG_CACHE_L2X0 is not set
CONFIG_ARM_L1_CACHE_SHIFT_6=y
CONFIG_ARM_L1_CACHE_SHIFT=6
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
CONFIG_ARCH_HAS_BARRIERS=y
# CONFIG_ARM_ERRATA_430973 is not set
# CONFIG_ARM_ERRATA_458693 is not set
# CONFIG_ARM_ERRATA_460075 is not set
# CONFIG_ARM_ERRATA_742230 is not set
# CONFIG_ARM_ERRATA_742231 is not set
# CONFIG_ARM_ERRATA_643719 is not set
# CONFIG_ARM_ERRATA_720789 is not set
# CONFIG_ARM_ERRATA_743622 is not set
# CONFIG_ARM_ERRATA_751472 is not set
# CONFIG_ARM_ERRATA_754322 is not set
# CONFIG_ARM_ERRATA_754327 is not set
# CONFIG_ARM_ERRATA_764369 is not set
# CONFIG_ARM_ERRATA_775420 is not set
# CONFIG_ARM_ERRATA_798181 is not set
# CONFIG_ARM_ERRATA_773022 is not set
#
# Bus support
#
CONFIG_ARM_AMBA=y
# CONFIG_PCI_SYSCALL is not set
# CONFIG_PCCARD is not set
#
# Kernel Features
#
CONFIG_HAVE_SMP=y
CONFIG_SMP=y
CONFIG_SMP_ON_UP=y
CONFIG_ARM_CPU_TOPOLOGY=y
# CONFIG_SCHED_MC is not set
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_ARCH_TIMER=y
# CONFIG_MCPM is not set
# CONFIG_BIG_LITTLE is not set
# CONFIG_VMSPLIT_3G is not set
CONFIG_VMSPLIT_2G=y
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0x80000000
CONFIG_NR_CPUS=4
CONFIG_HOTPLUG_CPU=y
# CONFIG_ARM_PSCI is not set
CONFIG_ARCH_NR_GPIO=0
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
CONFIG_HZ_FIXED=0
# CONFIG_HZ_100 is not set
# CONFIG_HZ_200 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_500 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
CONFIG_SCHED_HRTICK=y
# CONFIG_THUMB2_KERNEL is not set
CONFIG_AEABI=y
# CONFIG_OABI_COMPAT is not set
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HAVE_GENERIC_RCU_GUP=y
# CONFIG_HIGHMEM is not set
CONFIG_HW_PERF_EVENTS=y
CONFIG_SYS_SUPPORTS_HUGETLBFS=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_HAVE_MEMBLOCK=y
CONFIG_NO_BOOTMEM=y
CONFIG_MEMORY_ISOLATION=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_ZONE_DMA_FLAG=0
CONFIG_MMU_NOTIFIER=y
CONFIG_KSM=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_TRANSPARENT_HUGEPAGE is not set
CONFIG_CLEANCACHE=y
CONFIG_FRONTSWAP=y
CONFIG_CMA=y
# CONFIG_CMA_DEBUG is not set
CONFIG_CMA_AREAS=7
CONFIG_ZSWAP=y
CONFIG_ZPOOL=y
# CONFIG_ZBUD is not set
CONFIG_ZSMALLOC=y
# CONFIG_PGTABLE_MAPPING is not set
CONFIG_FORCE_MAX_ZONEORDER=11
CONFIG_ALIGNMENT_TRAP=y
CONFIG_UACCESS_WITH_MEMCPY=y
CONFIG_SECCOMP=y
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
# CONFIG_XEN is not set
#
# Boot options
#
CONFIG_USE_OF=y
CONFIG_ATAGS=y
# CONFIG_DEPRECATED_PARAM_STRUCT is not set
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y
# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND is not set
CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
CONFIG_CMDLINE_FROM_BOOTLOADER=y
# CONFIG_CMDLINE_EXTEND is not set
# CONFIG_CMDLINE_FORCE is not set
CONFIG_KEXEC=y
CONFIG_ATAGS_PROC=y
# CONFIG_CRASH_DUMP is not set
# CONFIG_AUTO_ZRELADDR is not set
#
# CPU Power Management
#
#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_GOV_COMMON=y
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_STAT_DETAILS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
# CONFIG_CPUFREQ_DT is not set
#
# ARM CPU frequency scaling drivers
#
# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
CONFIG_ARM_BCM2835_CPUFREQ=y
#
# CPU Idle
#
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
#
# ARM CPU Idle Drivers
#
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
#
# Floating point emulation
#
#
# At least one emulation must be selected
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
#
# Userspace binary formats
#
CONFIG_BINFMT_ELF=y
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
CONFIG_BINFMT_SCRIPT=y
# CONFIG_HAVE_AOUT is not set
CONFIG_BINFMT_MISC=m
CONFIG_COREDUMP=y
#
# Power management options
#
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
CONFIG_HIBERNATE_CALLBACKS=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_SLEEP=y
CONFIG_PM_SLEEP_SMP=y
# CONFIG_PM_AUTOSLEEP is not set
# CONFIG_PM_WAKELOCKS is not set
CONFIG_PM_RUNTIME=y
CONFIG_PM=y
CONFIG_PM_DEBUG=y
CONFIG_PM_ADVANCED_DEBUG=y
# CONFIG_PM_TEST_SUSPEND is not set
CONFIG_PM_SLEEP_DEBUG=y
# CONFIG_APM_EMULATION is not set
CONFIG_PM_CLK=y
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
CONFIG_CPU_PM=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARM_CPU_SUSPEND=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_DIAG=m
CONFIG_UNIX=y
CONFIG_UNIX_DIAG=m
CONFIG_XFRM=y
CONFIG_XFRM_ALGO=y
CONFIG_XFRM_USER=y
CONFIG_XFRM_SUB_POLICY=y
CONFIG_XFRM_MIGRATE=y
# CONFIG_XFRM_STATISTICS is not set
CONFIG_XFRM_IPCOMP=m
CONFIG_NET_KEY=m
CONFIG_NET_KEY_MIGRATE=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_FIB_TRIE_STATS=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_ROUTE_CLASSID=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
CONFIG_IP_PNP_RARP=y
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IP_TUNNEL=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
CONFIG_SYN_COOKIES=y
CONFIG_NET_IPVTI=m
CONFIG_NET_UDP_TUNNEL=m
# CONFIG_NET_FOU is not set
CONFIG_GENEVE=m
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_TUNNEL=m
CONFIG_INET_TUNNEL=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
CONFIG_INET_LRO=m
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_INET_UDP_DIAG=m
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_WESTWOOD=m
CONFIG_TCP_CONG_HTCP=m
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
CONFIG_TCP_CONG_SCALABLE=m
CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
CONFIG_TCP_CONG_DCTCP=m
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_TCP_MD5SIG=y
CONFIG_IPV6=y
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
CONFIG_IPV6_OPTIMISTIC_DAD=y
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_MIP6=y
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
CONFIG_INET6_XFRM_MODE_TUNNEL=m
CONFIG_INET6_XFRM_MODE_BEET=m
CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
CONFIG_IPV6_VTI=m
CONFIG_IPV6_SIT=m
CONFIG_IPV6_SIT_6RD=y
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=m
CONFIG_IPV6_GRE=m
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_SUBTREES=y
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
CONFIG_IPV6_PIMSM_V2=y
# CONFIG_NETLABEL is not set
CONFIG_NETWORK_SECMARK=y
CONFIG_NET_PTP_CLASSIFY=y
# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=m
#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_ACCT=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_LOG_COMMON=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_ZONES=y
CONFIG_NF_CONNTRACK_PROCFS=y
CONFIG_NF_CONNTRACK_EVENTS=y
CONFIG_NF_CONNTRACK_TIMEOUT=y
CONFIG_NF_CONNTRACK_TIMESTAMP=y
CONFIG_NF_CONNTRACK_LABELS=y
CONFIG_NF_CT_PROTO_DCCP=m
CONFIG_NF_CT_PROTO_GRE=m
CONFIG_NF_CT_PROTO_SCTP=m
CONFIG_NF_CT_PROTO_UDPLITE=m
CONFIG_NF_CONNTRACK_AMANDA=m
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
CONFIG_NF_CONNTRACK_BROADCAST=m
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_SNMP=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_CONNTRACK_SANE=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
CONFIG_NF_CT_NETLINK_TIMEOUT=m
CONFIG_NF_CT_NETLINK_HELPER=m
CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_NF_NAT_PROTO_DCCP=m
CONFIG_NF_NAT_PROTO_UDPLITE=m
CONFIG_NF_NAT_PROTO_SCTP=m
CONFIG_NF_NAT_AMANDA=m
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_SIP=m
CONFIG_NF_NAT_TFTP=m
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_INET=m
CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m
CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m
CONFIG_NFT_HASH=m
CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_REJECT=m
CONFIG_NFT_REJECT_INET=m
CONFIG_NFT_COMPAT=m
CONFIG_NETFILTER_XTABLES=m
#
# Xtables combined modules
#
CONFIG_NETFILTER_XT_MARK=m
CONFIG_NETFILTER_XT_CONNMARK=m
CONFIG_NETFILTER_XT_SET=m
#
# Xtables targets
#
CONFIG_NETFILTER_XT_TARGET_AUDIT=m
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
CONFIG_NETFILTER_XT_TARGET_CT=m
CONFIG_NETFILTER_XT_TARGET_DSCP=m
CONFIG_NETFILTER_XT_TARGET_HL=m
CONFIG_NETFILTER_XT_TARGET_HMARK=m
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
CONFIG_NETFILTER_XT_TARGET_LED=m
CONFIG_NETFILTER_XT_TARGET_LOG=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_NAT=m
CONFIG_NETFILTER_XT_TARGET_NETMAP=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
CONFIG_NETFILTER_XT_TARGET_RATEEST=m
CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER_XT_TARGET_SECMARK=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
#
# Xtables matches
#
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
CONFIG_NETFILTER_XT_MATCH_BPF=m
CONFIG_NETFILTER_XT_MATCH_CGROUP=m
CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_CPU=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ECN=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_HL=m
CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_IPVS=m
CONFIG_NETFILTER_XT_MATCH_L2TP=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_NFACCT=m
CONFIG_NETFILTER_XT_MATCH_OSF=m
CONFIG_NETFILTER_XT_MATCH_OWNER=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_RATEEST=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_RECENT=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m
CONFIG_NETFILTER_XT_MATCH_SOCKET=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_TIME=m
CONFIG_NETFILTER_XT_MATCH_U32=m
CONFIG_IP_SET=m
CONFIG_IP_SET_MAX=256
CONFIG_IP_SET_BITMAP_IP=m
CONFIG_IP_SET_BITMAP_IPMAC=m
CONFIG_IP_SET_BITMAP_PORT=m
CONFIG_IP_SET_HASH_IP=m
CONFIG_IP_SET_HASH_IPMARK=m
CONFIG_IP_SET_HASH_IPPORT=m
CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_MAC=m
CONFIG_IP_SET_HASH_NETPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETNET=m
CONFIG_IP_SET_HASH_NETPORT=m
CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
CONFIG_IP_VS_IPV6=y
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12
#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y
#
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_FO=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m
#
# IPVS SH scheduler
#
CONFIG_IP_VS_SH_TAB_BITS=8
#
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
CONFIG_IP_VS_NFCT=y
CONFIG_IP_VS_PE_SIP=m
#
# IP: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_CONNTRACK_IPV4=m
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_NF_LOG_ARP=m
CONFIG_NF_LOG_IPV4=m
CONFIG_NF_TABLES_IPV4=m
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NF_TABLES_ARP=m
CONFIG_NF_NAT_IPV4=m
CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NF_NAT_MASQUERADE_IPV4=m
CONFIG_NFT_MASQ_IPV4=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PPTP=m
CONFIG_NF_NAT_H323=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_RPFILTER=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_SYNPROXY=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_SECURITY=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m
#
# IPv6: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
CONFIG_NF_TABLES_IPV6=m
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
CONFIG_NF_NAT_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NF_NAT_MASQUERADE_IPV6=m
CONFIG_NFT_MASQ_IPV6=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_MH=m
CONFIG_IP6_NF_MATCH_RPFILTER=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP6_NF_TARGET_SYNPROXY=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_RAW=m
CONFIG_IP6_NF_SECURITY=m
CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_TARGET_MASQUERADE=m
CONFIG_IP6_NF_TARGET_NPT=m
CONFIG_NF_TABLES_BRIDGE=m
CONFIG_NFT_BRIDGE_META=m
CONFIG_NFT_BRIDGE_REJECT=m
CONFIG_NF_LOG_BRIDGE=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
CONFIG_BRIDGE_EBT_T_NAT=m
CONFIG_BRIDGE_EBT_802_3=m
CONFIG_BRIDGE_EBT_AMONG=m
CONFIG_BRIDGE_EBT_ARP=m
CONFIG_BRIDGE_EBT_IP=m
CONFIG_BRIDGE_EBT_IP6=m
CONFIG_BRIDGE_EBT_LIMIT=m
CONFIG_BRIDGE_EBT_MARK=m
CONFIG_BRIDGE_EBT_PKTTYPE=m
CONFIG_BRIDGE_EBT_STP=m
CONFIG_BRIDGE_EBT_VLAN=m
CONFIG_BRIDGE_EBT_ARPREPLY=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_MARK_T=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
CONFIG_BRIDGE_EBT_NFLOG=m
CONFIG_IP_DCCP=m
CONFIG_INET_DCCP_DIAG=m
#
# DCCP CCIDs Configuration
#
# CONFIG_IP_DCCP_CCID2_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_TFRC_LIB=y
#
# DCCP Kernel Hacking
#
# CONFIG_IP_DCCP_DEBUG is not set
CONFIG_NET_DCCPPROBE=m
CONFIG_IP_SCTP=m
CONFIG_NET_SCTPPROBE=m
# CONFIG_SCTP_DBG_OBJCNT is not set
CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
CONFIG_SCTP_COOKIE_HMAC_SHA1=y
CONFIG_RDS=m
CONFIG_RDS_TCP=m
# CONFIG_RDS_DEBUG is not set
CONFIG_TIPC=m
CONFIG_TIPC_PORTS=8191
CONFIG_ATM=m
CONFIG_ATM_CLIP=m
# CONFIG_ATM_CLIP_NO_ICMP is not set
CONFIG_ATM_LANE=m
CONFIG_ATM_MPOA=m
CONFIG_ATM_BR2684=m
# CONFIG_ATM_BR2684_IPFILTER is not set
CONFIG_L2TP=m
CONFIG_L2TP_DEBUGFS=m
CONFIG_L2TP_V3=y
CONFIG_L2TP_IP=m
CONFIG_L2TP_ETH=m
CONFIG_STP=m
CONFIG_GARP=m
CONFIG_MRP=m
CONFIG_BRIDGE=m
CONFIG_BRIDGE_IGMP_SNOOPING=y
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_HAVE_NET_DSA=y
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_GVRP=y
CONFIG_VLAN_8021Q_MVRP=y
# CONFIG_DECNET is not set
CONFIG_LLC=m
CONFIG_LLC2=m
# CONFIG_IPX is not set
CONFIG_ATALK=m
CONFIG_DEV_APPLETALK=m
CONFIG_IPDDP=m
CONFIG_IPDDP_ENCAP=y
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
CONFIG_PHONET=m
CONFIG_6LOWPAN=m
CONFIG_IEEE802154=m
CONFIG_IEEE802154_6LOWPAN=m
# CONFIG_MAC802154 is not set
CONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_ATM=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_MULTIQ=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFB=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_DRR=m
CONFIG_NET_SCH_MQPRIO=m
CONFIG_NET_SCH_CHOKE=m
CONFIG_NET_SCH_QFQ=m
CONFIG_NET_SCH_CODEL=m
CONFIG_NET_SCH_FQ_CODEL=m
CONFIG_NET_SCH_FQ=m
CONFIG_NET_SCH_HHF=m
CONFIG_NET_SCH_PIE=m
CONFIG_NET_SCH_INGRESS=m
CONFIG_NET_SCH_PLUG=m
#
# Classification
#
CONFIG_NET_CLS=y
CONFIG_NET_CLS_BASIC=m
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_CLS_U32_PERF=y
CONFIG_CLS_U32_MARK=y
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_FLOW=m
CONFIG_NET_CLS_CGROUP=m
CONFIG_NET_CLS_BPF=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
CONFIG_NET_EMATCH_NBYTE=m
CONFIG_NET_EMATCH_U32=m
CONFIG_NET_EMATCH_META=m
CONFIG_NET_EMATCH_TEXT=m
CONFIG_NET_EMATCH_CANID=m
CONFIG_NET_EMATCH_IPSET=m
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=m
CONFIG_NET_ACT_GACT=m
CONFIG_GACT_PROB=y
CONFIG_NET_ACT_MIRRED=m
CONFIG_NET_ACT_IPT=m
CONFIG_NET_ACT_NAT=m
CONFIG_NET_ACT_PEDIT=m
CONFIG_NET_ACT_SIMP=m
CONFIG_NET_ACT_SKBEDIT=m
CONFIG_NET_ACT_CSUM=m
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y
CONFIG_DCB=y
CONFIG_DNS_RESOLVER=y
CONFIG_BATMAN_ADV=m
CONFIG_BATMAN_ADV_BLA=y
CONFIG_BATMAN_ADV_DAT=y
CONFIG_BATMAN_ADV_NC=y
CONFIG_BATMAN_ADV_MCAST=y
# CONFIG_BATMAN_ADV_DEBUG is not set
CONFIG_OPENVSWITCH=m
CONFIG_OPENVSWITCH_GRE=y
CONFIG_OPENVSWITCH_VXLAN=y
CONFIG_OPENVSWITCH_GENEVE=y
# CONFIG_VSOCKETS is not set
CONFIG_NETLINK_MMAP=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=y
# CONFIG_HSR is not set
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
CONFIG_CGROUP_NET_PRIO=y
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
CONFIG_BPF_JIT=y
CONFIG_NET_FLOW_LIMIT=y
#
# Network testing
#
CONFIG_NET_PKTGEN=m
# CONFIG_NET_TCPPROBE is not set
CONFIG_NET_DROP_MONITOR=m
CONFIG_HAMRADIO=y
#
# Packet Radio protocols
#
CONFIG_AX25=m
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_NETROM=m
CONFIG_ROSE=m
#
# AX.25 network device drivers
#
CONFIG_MKISS=m
CONFIG_6PACK=m
CONFIG_BPQETHER=m
CONFIG_BAYCOM_SER_FDX=m
CONFIG_BAYCOM_SER_HDX=m
CONFIG_BAYCOM_PAR=m
CONFIG_BAYCOM_EPP=m
CONFIG_YAM=m
CONFIG_CAN=m
CONFIG_CAN_RAW=m
CONFIG_CAN_BCM=m
CONFIG_CAN_GW=m
#
# CAN Device Drivers
#
CONFIG_CAN_VCAN=m
CONFIG_CAN_SLCAN=m
CONFIG_CAN_DEV=m
CONFIG_CAN_CALC_BITTIMING=y
# CONFIG_CAN_LEDS is not set
# CONFIG_CAN_TI_HECC is not set
# CONFIG_CAN_FLEXCAN is not set
# CONFIG_CAN_GRCAN is not set
# CONFIG_CAN_RCAR is not set
CONFIG_CAN_SJA1000=m
CONFIG_CAN_SJA1000_ISA=m
# CONFIG_CAN_SJA1000_PLATFORM is not set
# CONFIG_CAN_C_CAN is not set
# CONFIG_CAN_M_CAN is not set
# CONFIG_CAN_CC770 is not set
#
# CAN SPI interfaces
#
# CONFIG_CAN_MCP251X is not set
#
# CAN USB interfaces
#
CONFIG_CAN_EMS_USB=m
CONFIG_CAN_ESD_USB2=m
CONFIG_CAN_GS_USB=m
CONFIG_CAN_KVASER_USB=m
CONFIG_CAN_PEAK_USB=m
CONFIG_CAN_8DEV_USB=m
CONFIG_CAN_SOFTING=m
# CONFIG_CAN_DEBUG_DEVICES is not set
CONFIG_IRDA=m
#
# IrDA protocols
#
CONFIG_IRLAN=m
CONFIG_IRNET=m
CONFIG_IRCOMM=m
CONFIG_IRDA_ULTRA=y
#
# IrDA options
#
CONFIG_IRDA_CACHE_LAST_LSAP=y
CONFIG_IRDA_FAST_RR=y
# CONFIG_IRDA_DEBUG is not set
#
# Infrared-port device drivers
#
#
# SIR device drivers
#
CONFIG_IRTTY_SIR=m
#
# Dongle support
#
CONFIG_DONGLE=y
CONFIG_ESI_DONGLE=m
CONFIG_ACTISYS_DONGLE=m
CONFIG_TEKRAM_DONGLE=m
CONFIG_TOIM3232_DONGLE=m
CONFIG_LITELINK_DONGLE=m
CONFIG_MA600_DONGLE=m
CONFIG_GIRBIL_DONGLE=m
CONFIG_MCP2120_DONGLE=m
CONFIG_OLD_BELKIN_DONGLE=m
CONFIG_ACT200L_DONGLE=m
CONFIG_KINGSUN_DONGLE=m
CONFIG_KSDAZZLE_DONGLE=m
CONFIG_KS959_DONGLE=m
#
# FIR device drivers
#
CONFIG_USB_IRDA=m
CONFIG_SIGMATEL_FIR=m
CONFIG_MCS_FIR=m
CONFIG_BT=m
CONFIG_BT_6LOWPAN=m
CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
CONFIG_BT_HCIBTUSB=m
CONFIG_BT_HCIBTSDIO=m
# CONFIG_BT_HCIUART is not set
CONFIG_BT_HCIBCM203X=m
CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
CONFIG_BT_HCIVHCI=m
CONFIG_BT_MRVL=m
CONFIG_BT_MRVL_SDIO=m
CONFIG_BT_ATH3K=m
CONFIG_BT_WILINK=m
CONFIG_AF_RXRPC=m
# CONFIG_AF_RXRPC_DEBUG is not set
CONFIG_RXKAD=m
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_WEXT_SPY=y
CONFIG_WEXT_PRIV=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
# CONFIG_CFG80211_REG_DEBUG is not set
# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
CONFIG_CFG80211_DEFAULT_PS=y
# CONFIG_CFG80211_DEBUGFS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
CONFIG_CFG80211_WEXT=y
CONFIG_LIB80211=m
CONFIG_LIB80211_CRYPT_WEP=m
CONFIG_LIB80211_CRYPT_CCMP=m
CONFIG_LIB80211_CRYPT_TKIP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
CONFIG_MAC80211_HAS_RC=y
CONFIG_MAC80211_RC_MINSTREL=y
CONFIG_MAC80211_RC_MINSTREL_HT=y
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
CONFIG_MAC80211_MESH=y
CONFIG_MAC80211_LEDS=y
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_MESSAGE_TRACING is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
CONFIG_WIMAX=m
CONFIG_WIMAX_DEBUG_LEVEL=8
CONFIG_RFKILL=m
CONFIG_RFKILL_LEDS=y
CONFIG_RFKILL_INPUT=y
# CONFIG_RFKILL_GPIO is not set
CONFIG_NET_9P=m
# CONFIG_NET_9P_DEBUG is not set
# CONFIG_CAIF is not set
CONFIG_CEPH_LIB=m
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
CONFIG_NFC=m
CONFIG_NFC_DIGITAL=m
# CONFIG_NFC_NCI is not set
# CONFIG_NFC_HCI is not set
#
# Near Field Communication (NFC) devices
#
CONFIG_NFC_PN533=m
# CONFIG_NFC_TRF7970A is not set
CONFIG_NFC_SIM=m
CONFIG_NFC_PORT100=m
CONFIG_HAVE_BPF_JIT=y
#
# Device Drivers
#
#
# Generic Driver Options
#
# CONFIG_UEVENT_HELPER is not set
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
CONFIG_ALLOW_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP_SPI=m
CONFIG_REGMAP_MMIO=m
CONFIG_REGMAP_IRQ=y
CONFIG_DMA_SHARED_BUFFER=y
# CONFIG_FENCE_TRACE is not set
CONFIG_DMA_CMA=y
#
# Default contiguous memory area size:
#
CONFIG_CMA_SIZE_MBYTES=5
CONFIG_CMA_SIZE_SEL_MBYTES=y
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
# CONFIG_CMA_SIZE_SEL_MIN is not set
# CONFIG_CMA_SIZE_SEL_MAX is not set
CONFIG_CMA_ALIGNMENT=8
#
# Bus devices
#
# CONFIG_BRCMSTB_GISB_ARB is not set
# CONFIG_ARM_CCI is not set
# CONFIG_ARM_CCN is not set
# CONFIG_VEXPRESS_CONFIG is not set
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
# CONFIG_MTD_TESTS is not set
# CONFIG_MTD_REDBOOT_PARTS is not set
# CONFIG_MTD_CMDLINE_PARTS is not set
# CONFIG_MTD_AFS_PARTS is not set
CONFIG_MTD_OF_PARTS=m
CONFIG_MTD_AR7_PARTS=m
#
# User Modules And Translation Layers
#
CONFIG_MTD_BLKDEVS=m
CONFIG_MTD_BLOCK=m
CONFIG_MTD_BLOCK_RO=m
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
CONFIG_RFD_FTL=m
CONFIG_SSFDC=m
# CONFIG_SM_FTL is not set
CONFIG_MTD_OOPS=m
CONFIG_MTD_SWAP=m
#
# RAM/ROM/Flash chip drivers
#
# CONFIG_MTD_CFI is not set
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
CONFIG_MTD_RAM=m
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_PHYSMAP=m
# CONFIG_MTD_PHYSMAP_COMPAT is not set
# CONFIG_MTD_PHYSMAP_OF is not set
CONFIG_MTD_PLATRAM=m
#
# Self-contained MTD device drivers
#
CONFIG_MTD_DATAFLASH=m
# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
# CONFIG_MTD_DATAFLASH_OTP is not set
CONFIG_MTD_M25P80=m
CONFIG_MTD_SST25L=m
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOCG3 is not set
# CONFIG_MTD_NAND is not set
CONFIG_MTD_ONENAND=m
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
# CONFIG_MTD_ONENAND_GENERIC is not set
# CONFIG_MTD_ONENAND_OTP is not set
CONFIG_MTD_ONENAND_2X_PROGRAM=y
#
# LPDDR & LPDDR2 PCM memory drivers
#
CONFIG_MTD_LPDDR=m
CONFIG_MTD_QINFO_PROBE=m
# CONFIG_MTD_LPDDR2_NVM is not set
CONFIG_MTD_SPI_NOR=m
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
CONFIG_MTD_UBI=m
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20
# CONFIG_MTD_UBI_FASTMAP is not set
# CONFIG_MTD_UBI_GLUEBI is not set
CONFIG_MTD_UBI_BLOCK=y
CONFIG_DTC=y
CONFIG_OF=y
#
# Device Tree and Open Firmware support
#
# CONFIG_OF_SELFTEST is not set
CONFIG_OF_FLATTREE=y
CONFIG_OF_EARLY_FLATTREE=y
CONFIG_OF_ADDRESS=y
CONFIG_OF_IRQ=y
CONFIG_OF_NET=y
CONFIG_OF_MDIO=m
CONFIG_OF_MTD=y
CONFIG_OF_RESERVED_MEM=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_PARPORT=m
# CONFIG_PARPORT_PC is not set
# CONFIG_PARPORT_GSC is not set
# CONFIG_PARPORT_AX88796 is not set
CONFIG_PARPORT_1284=y
CONFIG_PARPORT_NOT_PC=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_NULL_BLK=m
CONFIG_ZRAM=m
# CONFIG_ZRAM_LZ4_COMPRESS is not set
# CONFIG_ZRAM_DEBUG is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
CONFIG_BLK_DEV_NBD=m
CONFIG_BLK_DEV_OSD=m
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
# CONFIG_BLK_DEV_XIP is not set
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
CONFIG_ATA_OVER_ETH=m
# CONFIG_MG_DISK is not set
CONFIG_BLK_DEV_RBD=m
#
# Misc devices
#
CONFIG_SENSORS_LIS3LV02D=m
CONFIG_AD525X_DPOT=m
CONFIG_AD525X_DPOT_I2C=m
CONFIG_AD525X_DPOT_SPI=m
# CONFIG_DUMMY_IRQ is not set
CONFIG_ICS932S401=m
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_APDS9802ALS=m
CONFIG_ISL29003=m
CONFIG_ISL29020=m
CONFIG_SENSORS_TSL2550=m
CONFIG_SENSORS_BH1780=m
CONFIG_SENSORS_BH1770=m
CONFIG_SENSORS_APDS990X=m
CONFIG_HMC6352=m
CONFIG_DS1682=m
CONFIG_TI_DAC7512=m
# CONFIG_BMP085_I2C is not set
# CONFIG_BMP085_SPI is not set
# CONFIG_USB_SWITCH_FSA9480 is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
# CONFIG_SRAM is not set
CONFIG_C2PORT=m
#
# EEPROM support
#
CONFIG_EEPROM_AT24=m
CONFIG_EEPROM_AT25=m
CONFIG_EEPROM_LEGACY=m
CONFIG_EEPROM_MAX6875=m
CONFIG_EEPROM_93CX6=m
# CONFIG_EEPROM_93XX46 is not set
#
# Texas Instruments shared transport line discipline
#
CONFIG_TI_ST=m
# CONFIG_SENSORS_LIS3_SPI is not set
CONFIG_SENSORS_LIS3_I2C=m
#
# Altera FPGA firmware download module
#
# CONFIG_ALTERA_STAPL is not set
CONFIG_BCM2708_VCHIQ=y
#
# Intel MIC Bus Driver
#
#
# Intel MIC Host Driver
#
#
# Intel MIC Card Driver
#
# CONFIG_ECHO is not set
# CONFIG_CXL_BASE is not set
#
# SCSI device support
#
CONFIG_SCSI_MOD=y
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_NETLINK=y
# CONFIG_SCSI_MQ_DEFAULT is not set
# CONFIG_SCSI_PROC_FS is not set
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_CHR_DEV_OSST=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_CHR_DEV_SCH=m
CONFIG_SCSI_ENCLOSURE=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
CONFIG_SCSI_ISCSI_ATTRS=y
CONFIG_SCSI_SAS_ATTRS=m
CONFIG_SCSI_SAS_LIBSAS=m
CONFIG_SCSI_SAS_ATA=y
CONFIG_SCSI_SAS_HOST_SMP=y
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=m
CONFIG_ISCSI_BOOT_SYSFS=m
CONFIG_SCSI_UFSHCD=m
# CONFIG_SCSI_UFSHCD_PLATFORM is not set
CONFIG_LIBFC=m
CONFIG_LIBFCOE=m
# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_DH=m
CONFIG_SCSI_DH_RDAC=m
CONFIG_SCSI_DH_HP_SW=m
CONFIG_SCSI_DH_EMC=m
CONFIG_SCSI_DH_ALUA=m
CONFIG_SCSI_OSD_INITIATOR=m
CONFIG_SCSI_OSD_ULD=m
CONFIG_SCSI_OSD_DPRINT_SENSE=1
# CONFIG_SCSI_OSD_DEBUG is not set
CONFIG_ATA=m
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_ATA_VERBOSE_ERROR=y
CONFIG_SATA_PMP=y
#
# Controllers with non-SFF native interface
#
# CONFIG_SATA_AHCI_PLATFORM is not set
CONFIG_ATA_SFF=y
#
# SFF controllers with custom DMA interface
#
CONFIG_ATA_BMDMA=y
#
# SATA SFF controllers with BMDMA
#
#
# PATA SFF controllers with BMDMA
#
#
# PIO-only SFF controllers
#
# CONFIG_PATA_PLATFORM is not set
#
# Generic fallback / legacy drivers
#
CONFIG_MD=y
CONFIG_BLK_DEV_MD=m
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID456=m
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
CONFIG_BCACHE=m
# CONFIG_BCACHE_DEBUG is not set
# CONFIG_BCACHE_CLOSURES_DEBUG is not set
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=m
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=m
CONFIG_DM_BIO_PRISON=m
CONFIG_DM_PERSISTENT_DATA=m
# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_THIN_PROVISIONING=m
CONFIG_DM_CACHE=m
CONFIG_DM_CACHE_MQ=m
CONFIG_DM_CACHE_CLEANER=m
CONFIG_DM_ERA=m
CONFIG_DM_MIRROR=m
CONFIG_DM_LOG_USERSPACE=m
CONFIG_DM_RAID=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_QL=m
CONFIG_DM_MULTIPATH_ST=m
CONFIG_DM_DELAY=m
CONFIG_DM_UEVENT=y
CONFIG_DM_FLAKEY=m
CONFIG_DM_VERITY=m
CONFIG_DM_SWITCH=m
CONFIG_TARGET_CORE=m
CONFIG_TCM_IBLOCK=m
CONFIG_TCM_FILEIO=m
CONFIG_TCM_PSCSI=m
# CONFIG_TCM_USER is not set
CONFIG_LOOPBACK_TARGET=m
CONFIG_TCM_FC=m
CONFIG_ISCSI_TARGET=m
CONFIG_NETDEVICES=y
CONFIG_MII=y
CONFIG_NET_CORE=y
CONFIG_BONDING=m
CONFIG_DUMMY=m
CONFIG_EQUALIZER=m
CONFIG_IFB=m
CONFIG_NET_TEAM=m
CONFIG_NET_TEAM_MODE_BROADCAST=m
CONFIG_NET_TEAM_MODE_ROUNDROBIN=m
CONFIG_NET_TEAM_MODE_RANDOM=m
CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
CONFIG_NET_TEAM_MODE_LOADBALANCE=m
CONFIG_MACVLAN=m
CONFIG_MACVTAP=m
CONFIG_VXLAN=m
CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_NETPOLL=y
CONFIG_NET_POLL_CONTROLLER=y
CONFIG_TUN=m
CONFIG_VETH=m
CONFIG_NLMON=m
CONFIG_ATM_DRIVERS=y
CONFIG_ATM_DUMMY=m
# CONFIG_ATM_TCP is not set
#
# CAIF transport drivers
#
#
# Distributed Switch Architecture drivers
#
# CONFIG_NET_DSA_MV88E6XXX is not set
# CONFIG_NET_DSA_MV88E6060 is not set
# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
# CONFIG_NET_DSA_MV88E6131 is not set
# CONFIG_NET_DSA_MV88E6123_61_65 is not set
# CONFIG_NET_DSA_MV88E6171 is not set
# CONFIG_NET_DSA_BCM_SF2 is not set
CONFIG_ETHERNET=y
# CONFIG_ALTERA_TSE is not set
# CONFIG_NET_XGENE is not set
# CONFIG_NET_VENDOR_ARC is not set
CONFIG_NET_CADENCE=y
CONFIG_NET_VENDOR_BROADCOM=y
# CONFIG_B44 is not set
# CONFIG_BCMGENET is not set
# CONFIG_SYSTEMPORT is not set
CONFIG_NET_VENDOR_CIRRUS=y
# CONFIG_CS89x0 is not set
# CONFIG_DM9000 is not set
# CONFIG_DNET is not set
CONFIG_NET_VENDOR_FARADAY=y
# CONFIG_FTMAC100 is not set
# CONFIG_FTGMAC100 is not set
CONFIG_NET_VENDOR_HISILICON=y
# CONFIG_HIX5HD2_GMAC is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_I825XX=y
CONFIG_NET_VENDOR_MARVELL=y
# CONFIG_MVMDIO is not set
CONFIG_NET_VENDOR_MICREL=y
# CONFIG_KS8842 is not set
# CONFIG_KS8851 is not set
# CONFIG_KS8851_MLL is not set
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_ENC28J60 is not set
CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NET_VENDOR_8390=y
# CONFIG_AX88796 is not set
# CONFIG_ETHOC is not set
CONFIG_NET_VENDOR_QUALCOMM=y
# CONFIG_QCA7000 is not set
CONFIG_NET_VENDOR_SAMSUNG=y
# CONFIG_SXGBE_ETH is not set
# CONFIG_NET_VENDOR_SEEQ is not set
CONFIG_NET_VENDOR_SMSC=y
# CONFIG_SMC91X is not set
# CONFIG_SMC911X is not set
# CONFIG_SMSC911X is not set
CONFIG_NET_VENDOR_STMICRO=y
# CONFIG_STMMAC_ETH is not set
CONFIG_NET_VENDOR_VIA=y
# CONFIG_VIA_RHINE is not set
CONFIG_VIA_VELOCITY=m
CONFIG_NET_VENDOR_WIZNET=y
# CONFIG_WIZNET_W5100 is not set
# CONFIG_WIZNET_W5300 is not set
CONFIG_PHYLIB=m
#
# MII PHY device drivers
#
CONFIG_AT803X_PHY=m
CONFIG_AMD_PHY=m
# CONFIG_AMD_XGBE_PHY is not set
CONFIG_MARVELL_PHY=m
CONFIG_DAVICOM_PHY=m
CONFIG_QSEMI_PHY=m
CONFIG_LXT_PHY=m
CONFIG_CICADA_PHY=m
CONFIG_VITESSE_PHY=m
CONFIG_SMSC_PHY=m
CONFIG_BROADCOM_PHY=m
# CONFIG_BCM7XXX_PHY is not set
CONFIG_BCM87XX_PHY=m
CONFIG_ICPLUS_PHY=m
CONFIG_REALTEK_PHY=m
CONFIG_NATIONAL_PHY=m
CONFIG_STE10XP=m
CONFIG_LSI_ET1011C_PHY=m
CONFIG_MICREL_PHY=m
CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_GPIO is not set
# CONFIG_MDIO_BUS_MUX_GPIO is not set
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
# CONFIG_MDIO_BCM_UNIMAC is not set
# CONFIG_MICREL_KS8995MA is not set
# CONFIG_PLIP is not set
CONFIG_PPP=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_FILTER=y
CONFIG_PPP_MPPE=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPPOATM=m
CONFIG_PPPOE=m
CONFIG_PPTP=m
CONFIG_PPPOL2TP=m
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_SLIP=m
CONFIG_SLHC=m
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLIP_SMART=y
CONFIG_SLIP_MODE_SLIP6=y
CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_RTL8152=m
CONFIG_USB_USBNET=y
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_AX88179_178A=m
CONFIG_USB_NET_CDCETHER=m
CONFIG_USB_NET_CDC_EEM=m
CONFIG_USB_NET_CDC_NCM=m
CONFIG_USB_NET_HUAWEI_CDC_NCM=m
CONFIG_USB_NET_CDC_MBIM=m
CONFIG_USB_NET_DM9601=m
CONFIG_USB_NET_SR9700=m
CONFIG_USB_NET_SR9800=m
CONFIG_USB_NET_SMSC75XX=m
CONFIG_USB_NET_SMSC95XX=y
CONFIG_USB_NET_GL620A=m
CONFIG_USB_NET_NET1080=m
CONFIG_USB_NET_PLUSB=m
CONFIG_USB_NET_MCS7830=m
CONFIG_USB_NET_RNDIS_HOST=m
CONFIG_USB_NET_CDC_SUBSET=m
CONFIG_USB_ALI_M5632=y
CONFIG_USB_AN2720=y
CONFIG_USB_BELKIN=y
CONFIG_USB_ARMLINUX=y
CONFIG_USB_EPSON2888=y
CONFIG_USB_KC2190=y
CONFIG_USB_NET_ZAURUS=m
CONFIG_USB_NET_CX82310_ETH=m
CONFIG_USB_NET_KALMIA=m
CONFIG_USB_NET_QMI_WWAN=m
CONFIG_USB_HSO=m
CONFIG_USB_NET_INT51X1=m
CONFIG_USB_CDC_PHONET=m
CONFIG_USB_IPHETH=m
CONFIG_USB_SIERRA_NET=m
CONFIG_USB_VL600=m
CONFIG_WLAN=y
CONFIG_LIBERTAS_THINFIRM=m
# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
CONFIG_LIBERTAS_THINFIRM_USB=m
CONFIG_AT76C50X_USB=m
CONFIG_USB_ZD1201=m
CONFIG_USB_NET_RNDIS_WLAN=m
CONFIG_RTL8187=m
CONFIG_RTL8187_LEDS=y
CONFIG_MAC80211_HWSIM=m
CONFIG_ATH_COMMON=m
CONFIG_ATH_CARDS=m
# CONFIG_ATH_DEBUG is not set
CONFIG_ATH9K_HW=m
CONFIG_ATH9K_COMMON=m
CONFIG_ATH9K_BTCOEX_SUPPORT=y
CONFIG_ATH9K=m
# CONFIG_ATH9K_AHB is not set
# CONFIG_ATH9K_DEBUGFS is not set
# CONFIG_ATH9K_DYNACK is not set
# CONFIG_ATH9K_WOW is not set
CONFIG_ATH9K_RFKILL=y
# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
CONFIG_ATH9K_HTC=m
# CONFIG_ATH9K_HTC_DEBUGFS is not set
CONFIG_CARL9170=m
CONFIG_CARL9170_LEDS=y
CONFIG_CARL9170_WPC=y
# CONFIG_CARL9170_HWRNG is not set
CONFIG_ATH6KL=m
CONFIG_ATH6KL_SDIO=m
CONFIG_ATH6KL_USB=m
# CONFIG_ATH6KL_DEBUG is not set
# CONFIG_ATH6KL_TRACING is not set
CONFIG_AR5523=m
CONFIG_ATH10K=m
# CONFIG_ATH10K_DEBUG is not set
# CONFIG_ATH10K_DEBUGFS is not set
# CONFIG_ATH10K_TRACING is not set
# CONFIG_WCN36XX is not set
CONFIG_B43=m
CONFIG_B43_BCMA=y
CONFIG_B43_SSB=y
CONFIG_B43_BUSES_BCMA_AND_SSB=y
# CONFIG_B43_BUSES_BCMA is not set
# CONFIG_B43_BUSES_SSB is not set
CONFIG_B43_SDIO=y
CONFIG_B43_BCMA_PIO=y
CONFIG_B43_PIO=y
CONFIG_B43_PHY_G=y
# CONFIG_B43_PHY_N is not set
CONFIG_B43_PHY_LP=y
CONFIG_B43_PHY_HT=y
CONFIG_B43_LEDS=y
CONFIG_B43_HWRNG=y
# CONFIG_B43_DEBUG is not set
CONFIG_B43LEGACY=m
CONFIG_B43LEGACY_LEDS=y
CONFIG_B43LEGACY_HWRNG=y
CONFIG_B43LEGACY_DEBUG=y
CONFIG_B43LEGACY_DMA=y
CONFIG_B43LEGACY_PIO=y
CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
# CONFIG_B43LEGACY_DMA_MODE is not set
# CONFIG_B43LEGACY_PIO_MODE is not set
CONFIG_BRCMUTIL=m
CONFIG_BRCMSMAC=m
CONFIG_BRCMFMAC=m
CONFIG_BRCMFMAC_PROTO_BCDC=y
# CONFIG_BRCMFMAC_SDIO is not set
CONFIG_BRCMFMAC_USB=y
# CONFIG_BRCM_TRACING is not set
# CONFIG_BRCMDBG is not set
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
CONFIG_LIBERTAS=m
CONFIG_LIBERTAS_USB=m
CONFIG_LIBERTAS_SDIO=m
# CONFIG_LIBERTAS_SPI is not set
# CONFIG_LIBERTAS_DEBUG is not set
CONFIG_LIBERTAS_MESH=y
CONFIG_P54_COMMON=m
CONFIG_P54_USB=m
# CONFIG_P54_SPI is not set
CONFIG_P54_LEDS=y
CONFIG_RT2X00=m
CONFIG_RT2500USB=m
CONFIG_RT73USB=m
CONFIG_RT2800USB=m
CONFIG_RT2800USB_RT33XX=y
CONFIG_RT2800USB_RT35XX=y
CONFIG_RT2800USB_RT3573=y
CONFIG_RT2800USB_RT53XX=y
CONFIG_RT2800USB_RT55XX=y
CONFIG_RT2800USB_UNKNOWN=y
CONFIG_RT2800_LIB=m
CONFIG_RT2X00_LIB_USB=m
CONFIG_RT2X00_LIB=m
CONFIG_RT2X00_LIB_FIRMWARE=y
CONFIG_RT2X00_LIB_CRYPTO=y
CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
CONFIG_RTL8192CU=m
# CONFIG_WL_TI is not set
CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
CONFIG_MWIFIEX=m
CONFIG_MWIFIEX_SDIO=m
# CONFIG_MWIFIEX_USB is not set
# CONFIG_CW1200 is not set
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
# CONFIG_RSI_SDIO is not set
CONFIG_RSI_USB=m
#
# WiMAX Wireless Broadband devices
#
CONFIG_WIMAX_I2400M=m
CONFIG_WIMAX_I2400M_USB=m
CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
# CONFIG_WAN is not set
CONFIG_IEEE802154_DRIVERS=m
CONFIG_IEEE802154_FAKEHARD=m
# CONFIG_ISDN is not set
#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_SPARSEKMAP=m
# CONFIG_INPUT_MATRIXKMAP is not set
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_JOYDEV=m
CONFIG_INPUT_EVDEV=m
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=m
CONFIG_JOYSTICK_A3D=m
CONFIG_JOYSTICK_ADI=m
CONFIG_JOYSTICK_COBRA=m
CONFIG_JOYSTICK_GF2K=m
CONFIG_JOYSTICK_GRIP=m
CONFIG_JOYSTICK_GRIP_MP=m
CONFIG_JOYSTICK_GUILLEMOT=m
CONFIG_JOYSTICK_INTERACT=m
CONFIG_JOYSTICK_SIDEWINDER=m
CONFIG_JOYSTICK_TMDC=m
CONFIG_JOYSTICK_IFORCE=m
CONFIG_JOYSTICK_IFORCE_USB=y
CONFIG_JOYSTICK_IFORCE_232=y
CONFIG_JOYSTICK_WARRIOR=m
CONFIG_JOYSTICK_MAGELLAN=m
CONFIG_JOYSTICK_SPACEORB=m
CONFIG_JOYSTICK_SPACEBALL=m
CONFIG_JOYSTICK_STINGER=m
CONFIG_JOYSTICK_TWIDJOY=m
CONFIG_JOYSTICK_ZHENHUA=m
CONFIG_JOYSTICK_DB9=m
CONFIG_JOYSTICK_GAMECON=m
CONFIG_JOYSTICK_TURBOGRAFX=m
# CONFIG_JOYSTICK_AS5011 is not set
CONFIG_JOYSTICK_JOYDUMP=m
CONFIG_JOYSTICK_XPAD=m
CONFIG_JOYSTICK_XPAD_FF=y
CONFIG_JOYSTICK_XPAD_LEDS=y
CONFIG_JOYSTICK_WALKERA0701=m
CONFIG_INPUT_TABLET=y
CONFIG_TABLET_USB_ACECAD=m
CONFIG_TABLET_USB_AIPTEK=m
CONFIG_TABLET_USB_GTCO=m
CONFIG_TABLET_USB_HANWANG=m
CONFIG_TABLET_USB_KBTAB=m
CONFIG_TABLET_SERIAL_WACOM4=m
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_OF_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_ADS7846=m
CONFIG_TOUCHSCREEN_AD7877=m
CONFIG_TOUCHSCREEN_AD7879=m
CONFIG_TOUCHSCREEN_AD7879_I2C=m
# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
# CONFIG_TOUCHSCREEN_AR1021_I2C is not set
CONFIG_TOUCHSCREEN_ATMEL_MXT=m
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
# CONFIG_TOUCHSCREEN_BU21013 is not set
# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
CONFIG_TOUCHSCREEN_DYNAPRO=m
CONFIG_TOUCHSCREEN_HAMPSHIRE=m
# CONFIG_TOUCHSCREEN_EETI is not set
# CONFIG_TOUCHSCREEN_EGALAX is not set
CONFIG_TOUCHSCREEN_FUJITSU=m
# CONFIG_TOUCHSCREEN_ILI210X is not set
CONFIG_TOUCHSCREEN_GUNZE=m
CONFIG_TOUCHSCREEN_ELO=m
CONFIG_TOUCHSCREEN_WACOM_W8001=m
# CONFIG_TOUCHSCREEN_WACOM_I2C is not set
# CONFIG_TOUCHSCREEN_MAX11801 is not set
CONFIG_TOUCHSCREEN_MCS5000=m
# CONFIG_TOUCHSCREEN_MMS114 is not set
CONFIG_TOUCHSCREEN_MTOUCH=m
CONFIG_TOUCHSCREEN_INEXIO=m
CONFIG_TOUCHSCREEN_MK712=m
CONFIG_TOUCHSCREEN_PENMOUNT=m
# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
CONFIG_TOUCHSCREEN_TOUCHWIN=m
CONFIG_TOUCHSCREEN_UCB1400=m
# CONFIG_TOUCHSCREEN_PIXCIR is not set
CONFIG_TOUCHSCREEN_WM97XX=m
CONFIG_TOUCHSCREEN_WM9705=y
CONFIG_TOUCHSCREEN_WM9712=y
CONFIG_TOUCHSCREEN_WM9713=y
CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
CONFIG_TOUCHSCREEN_USB_EGALAX=y
CONFIG_TOUCHSCREEN_USB_PANJIT=y
CONFIG_TOUCHSCREEN_USB_3M=y
CONFIG_TOUCHSCREEN_USB_ITM=y
CONFIG_TOUCHSCREEN_USB_ETURBO=y
CONFIG_TOUCHSCREEN_USB_GUNZE=y
CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
CONFIG_TOUCHSCREEN_USB_GOTOP=y
CONFIG_TOUCHSCREEN_USB_JASTEC=y
CONFIG_TOUCHSCREEN_USB_ELO=y
CONFIG_TOUCHSCREEN_USB_E2I=y
CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
CONFIG_TOUCHSCREEN_USB_NEXIO=y
CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y
CONFIG_TOUCHSCREEN_TOUCHIT213=m
# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
# CONFIG_TOUCHSCREEN_TSC2005 is not set
CONFIG_TOUCHSCREEN_TSC2007=m
# CONFIG_TOUCHSCREEN_ST1232 is not set
CONFIG_TOUCHSCREEN_SUR40=m
CONFIG_TOUCHSCREEN_TPS6507X=m
# CONFIG_TOUCHSCREEN_ZFORCE is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_AD714X=m
CONFIG_INPUT_AD714X_I2C=m
CONFIG_INPUT_AD714X_SPI=m
# CONFIG_INPUT_ARIZONA_HAPTICS is not set
# CONFIG_INPUT_BMA150 is not set
# CONFIG_INPUT_MMA8450 is not set
# CONFIG_INPUT_MPU3050 is not set
# CONFIG_INPUT_GP2A is not set
# CONFIG_INPUT_GPIO_BEEPER is not set
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
# CONFIG_INPUT_KXTJ9 is not set
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
CONFIG_INPUT_UINPUT=m
# CONFIG_INPUT_PCF8574 is not set
CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
CONFIG_INPUT_ADXL34X=m
CONFIG_INPUT_ADXL34X_I2C=m
CONFIG_INPUT_ADXL34X_SPI=m
# CONFIG_INPUT_IMS_PCU is not set
CONFIG_INPUT_CMA3000=m
# CONFIG_INPUT_CMA3000_I2C is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2667_HAPTICS is not set
#
# Hardware I/O ports
#
CONFIG_SERIO=m
CONFIG_SERIO_SERPORT=m
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_AMBAKMI is not set
# CONFIG_SERIO_LIBPS2 is not set
CONFIG_SERIO_RAW=m
CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_PS2MULT is not set
# CONFIG_SERIO_ARC_PS2 is not set
# CONFIG_SERIO_APBPS2 is not set
CONFIG_GAMEPORT=m
CONFIG_GAMEPORT_NS558=m
CONFIG_GAMEPORT_L4=m
#
# Character devices
#
CONFIG_TTY=y
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_VT_CONSOLE_SLEEP=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_SERIAL_NONSTANDARD is not set
CONFIG_N_GSM=m
# CONFIG_TRACE_SINK is not set
# CONFIG_DEVKMEM is not set
#
# Serial drivers
#
CONFIG_SERIAL_EARLYCON=y
# CONFIG_SERIAL_8250 is not set
#
# Non-8250 serial port support
#
# CONFIG_SERIAL_AMBA_PL010 is not set
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set
# CONFIG_SERIAL_KGDB_NMI is not set
# CONFIG_SERIAL_MAX3100 is not set
# CONFIG_SERIAL_MAX310X is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_CONSOLE_POLL=y
# CONFIG_SERIAL_SCCNXP is not set
# CONFIG_SERIAL_SC16IS7XX is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
# CONFIG_SERIAL_IFX6X60 is not set
# CONFIG_SERIAL_XILINX_PS_UART is not set
# CONFIG_SERIAL_ARC is not set
# CONFIG_SERIAL_FSL_LPUART is not set
# CONFIG_SERIAL_ST_ASC is not set
CONFIG_TTY_PRINTK=y
# CONFIG_PRINTER is not set
# CONFIG_PPDEV is not set
# CONFIG_HVC_DCC is not set
# CONFIG_IPMI_HANDLER is not set
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
CONFIG_HW_RANDOM_BCM2708=m
# CONFIG_NVRAM is not set
# CONFIG_R3964 is not set
CONFIG_RAW_DRIVER=y
CONFIG_MAX_RAW_DEVS=256
# CONFIG_TCG_TPM is not set
CONFIG_BRCM_CHAR_DRIVERS=y
CONFIG_BCM_VC_CMA=y
CONFIG_BCM_VC_SM=y
# CONFIG_XILLYBUS is not set
#
# I2C support
#
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=m
CONFIG_I2C_MUX=m
#
# Multiplexer I2C Chip support
#
# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
# CONFIG_I2C_MUX_GPIO is not set
# CONFIG_I2C_MUX_PCA9541 is not set
# CONFIG_I2C_MUX_PCA954x is not set
# CONFIG_I2C_MUX_PINCTRL is not set
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_ALGOPCA=m
#
# I2C Hardware Bus support
#
#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
# CONFIG_I2C_BCM2835 is not set
CONFIG_I2C_BCM2708=m
CONFIG_I2C_BCM2708_BAUDRATE=100000
# CONFIG_I2C_CBUS_GPIO is not set
# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
# CONFIG_I2C_GPIO is not set
# CONFIG_I2C_NOMADIK is not set
CONFIG_I2C_OCORES=m
CONFIG_I2C_PCA_PLATFORM=m
# CONFIG_I2C_PXA_PCI is not set
# CONFIG_I2C_RK3X is not set
CONFIG_I2C_SIMTEC=m
# CONFIG_I2C_XILINX is not set
#
# External I2C/SMBus adapter drivers
#
CONFIG_I2C_DIOLAN_U2C=m
# CONFIG_I2C_PARPORT is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
CONFIG_I2C_ROBOTFUZZ_OSIF=m
CONFIG_I2C_TAOS_EVM=m
CONFIG_I2C_TINY_USB=m
CONFIG_I2C_VIPERBOARD=m
#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y
#
# SPI Master Controller Drivers
#
# CONFIG_SPI_ALTERA is not set
# CONFIG_SPI_BCM2835 is not set
CONFIG_SPI_BCM2708=m
CONFIG_SPI_BITBANG=m
CONFIG_SPI_BUTTERFLY=m
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_GPIO is not set
CONFIG_SPI_LM70_LLP=m
# CONFIG_SPI_FSL_SPI is not set
# CONFIG_SPI_OC_TINY is not set
# CONFIG_SPI_PL022 is not set
# CONFIG_SPI_PXA2XX_PCI is not set
# CONFIG_SPI_ROCKCHIP is not set
# CONFIG_SPI_SC18IS602 is not set
# CONFIG_SPI_XCOMM is not set
# CONFIG_SPI_XILINX is not set
# CONFIG_SPI_DESIGNWARE is not set
#
# SPI Protocol Masters
#
CONFIG_SPI_SPIDEV=y
# CONFIG_SPI_TLE62X0 is not set
# CONFIG_SPMI is not set
# CONFIG_HSI is not set
#
# PPS support
#
CONFIG_PPS=m
# CONFIG_PPS_DEBUG is not set
#
# PPS clients support
#
# CONFIG_PPS_CLIENT_KTIMER is not set
CONFIG_PPS_CLIENT_LDISC=m
CONFIG_PPS_CLIENT_PARPORT=m
CONFIG_PPS_CLIENT_GPIO=m
#
# PPS generators support
#
#
# PTP clock support
#
CONFIG_PTP_1588_CLOCK=m
#
# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
#
CONFIG_PINCTRL=y
#
# Pin controllers
#
CONFIG_PINMUX=y
CONFIG_PINCONF=y
# CONFIG_DEBUG_PINCTRL is not set
CONFIG_PINCTRL_BCM2835=y
# CONFIG_PINCTRL_SINGLE is not set
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_DEVRES=y
CONFIG_OF_GPIO=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
#
# Memory mapped GPIO drivers:
#
# CONFIG_GPIO_GENERIC_PLATFORM is not set
# CONFIG_GPIO_DWAPB is not set
# CONFIG_GPIO_EM is not set
# CONFIG_GPIO_ZEVIO is not set
# CONFIG_GPIO_PL061 is not set
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_GRGPIO is not set
#
# I2C GPIO expanders:
#
CONFIG_GPIO_ARIZONA=m
# CONFIG_GPIO_MAX7300 is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_SX150X is not set
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_ADNP is not set
#
# PCI GPIO expanders:
#
#
# SPI GPIO expanders:
#
# CONFIG_GPIO_MAX7301 is not set
# CONFIG_GPIO_MCP23S08 is not set
# CONFIG_GPIO_MC33880 is not set
# CONFIG_GPIO_74X164 is not set
#
# AC97 GPIO expanders:
#
# CONFIG_GPIO_UCB1400 is not set
#
# LPC GPIO expanders:
#
#
# MODULbus GPIO expanders:
#
#
# USB GPIO expanders:
#
CONFIG_GPIO_VIPERBOARD=m
CONFIG_W1=m
CONFIG_W1_CON=y
#
# 1-wire Bus Masters
#
CONFIG_W1_MASTER_DS2490=m
CONFIG_W1_MASTER_DS2482=m
CONFIG_W1_MASTER_DS1WM=m
CONFIG_W1_MASTER_GPIO=m
#
# 1-wire Slaves
#
CONFIG_W1_SLAVE_THERM=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_DS2408=m
CONFIG_W1_SLAVE_DS2408_READBACK=y
CONFIG_W1_SLAVE_DS2413=m
CONFIG_W1_SLAVE_DS2406=m
CONFIG_W1_SLAVE_DS2423=m
CONFIG_W1_SLAVE_DS2431=m
CONFIG_W1_SLAVE_DS2433=m
# CONFIG_W1_SLAVE_DS2433_CRC is not set
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_BQ27000=m
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_GENERIC_ADC_BATTERY is not set
# CONFIG_TEST_POWER is not set
CONFIG_BATTERY_DS2760=m
# CONFIG_BATTERY_DS2780 is not set
# CONFIG_BATTERY_DS2781 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_SBS is not set
# CONFIG_BATTERY_BQ27x00 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
# CONFIG_CHARGER_MAX8903 is not set
# CONFIG_CHARGER_LP8727 is not set
# CONFIG_CHARGER_GPIO is not set
# CONFIG_CHARGER_BQ2415X is not set
# CONFIG_CHARGER_BQ24190 is not set
# CONFIG_CHARGER_BQ24735 is not set
# CONFIG_CHARGER_SMB347 is not set
# CONFIG_POWER_RESET is not set
# CONFIG_POWER_AVS is not set
# CONFIG_HWMON is not set
CONFIG_THERMAL=y
CONFIG_THERMAL_OF=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
CONFIG_THERMAL_GOV_FAIR_SHARE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
# CONFIG_THERMAL_GOV_BANG_BANG is not set
# CONFIG_THERMAL_GOV_USER_SPACE is not set
CONFIG_CPU_THERMAL=y
# CONFIG_THERMAL_EMULATION is not set
CONFIG_THERMAL_BCM2835=y
#
# Texas Instruments thermal drivers
#
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=m
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_XILINX_WATCHDOG is not set
# CONFIG_ARM_SP805_WATCHDOG is not set
# CONFIG_CADENCE_WATCHDOG is not set
# CONFIG_DW_WATCHDOG is not set
# CONFIG_MAX63XX_WATCHDOG is not set
CONFIG_BCM2708_WDT=m
# CONFIG_MEN_A21_WDT is not set
#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set
CONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
CONFIG_SSB=m
CONFIG_SSB_BLOCKIO=y
CONFIG_SSB_SDIOHOST_POSSIBLE=y
CONFIG_SSB_SDIOHOST=y
# CONFIG_SSB_SILENT is not set
# CONFIG_SSB_DEBUG is not set
# CONFIG_SSB_DRIVER_GPIO is not set
CONFIG_BCMA_POSSIBLE=y
#
# Broadcom specific AMBA
#
CONFIG_BCMA=m
CONFIG_BCMA_BLOCKIO=y
# CONFIG_BCMA_HOST_SOC is not set
# CONFIG_BCMA_DRIVER_GMAC_CMN is not set
# CONFIG_BCMA_DRIVER_GPIO is not set
# CONFIG_BCMA_DEBUG is not set
#
# Multifunction device drivers
#
CONFIG_MFD_CORE=y
# CONFIG_MFD_AS3711 is not set
# CONFIG_MFD_AS3722 is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_CROS_EC is not set
# CONFIG_MFD_ASIC3 is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_DA9052_SPI is not set
# CONFIG_MFD_DA9052_I2C is not set
# CONFIG_MFD_DA9055 is not set
# CONFIG_MFD_DA9063 is not set
# CONFIG_MFD_MC13XXX_SPI is not set
# CONFIG_MFD_MC13XXX_I2C is not set
# CONFIG_MFD_HI6421_PMIC is not set
# CONFIG_HTC_EGPIO is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_HTC_I2CPLD is not set
# CONFIG_INTEL_SOC_PMIC is not set
# CONFIG_MFD_KEMPLD is not set
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
# CONFIG_MFD_MAX14577 is not set
# CONFIG_MFD_MAX77686 is not set
# CONFIG_MFD_MAX77693 is not set
# CONFIG_MFD_MAX8907 is not set
# CONFIG_MFD_MAX8925 is not set
# CONFIG_MFD_MAX8997 is not set
# CONFIG_MFD_MAX8998 is not set
# CONFIG_MFD_MENF21BMC is not set
# CONFIG_EZX_PCAP is not set
CONFIG_MFD_VIPERBOARD=m
# CONFIG_MFD_RETU is not set
# CONFIG_MFD_PCF50633 is not set
CONFIG_UCB1400_CORE=m
# CONFIG_MFD_PM8921_CORE is not set
CONFIG_MFD_RTSX_USB=m
# CONFIG_MFD_RC5T583 is not set
# CONFIG_MFD_RK808 is not set
# CONFIG_MFD_RN5T618 is not set
# CONFIG_MFD_SEC_CORE is not set
# CONFIG_MFD_SI476X_CORE is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_MFD_SMSC is not set
# CONFIG_ABX500_CORE is not set
# CONFIG_MFD_STMPE is not set
# CONFIG_MFD_SYSCON is not set
# CONFIG_MFD_TI_AM335X_TSCADC is not set
# CONFIG_MFD_LP3943 is not set
# CONFIG_MFD_LP8788 is not set
# CONFIG_MFD_PALMAS is not set
# CONFIG_TPS6105X is not set
# CONFIG_TPS65010 is not set
# CONFIG_TPS6507X is not set
# CONFIG_MFD_TPS65090 is not set
# CONFIG_MFD_TPS65217 is not set
# CONFIG_MFD_TPS65218 is not set
# CONFIG_MFD_TPS6586X is not set
# CONFIG_MFD_TPS65910 is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912_SPI is not set
# CONFIG_MFD_TPS80031 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_TWL6040_CORE is not set
CONFIG_MFD_WL1273_CORE=m
# CONFIG_MFD_LM3533 is not set
# CONFIG_MFD_TC3589X is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_MFD_T7L66XB is not set
# CONFIG_MFD_TC6387XB is not set
# CONFIG_MFD_TC6393XB is not set
CONFIG_MFD_ARIZONA=y
CONFIG_MFD_ARIZONA_I2C=m
CONFIG_MFD_ARIZONA_SPI=m
CONFIG_MFD_WM5102=y
# CONFIG_MFD_WM5110 is not set
# CONFIG_MFD_WM8997 is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM831X_I2C is not set
# CONFIG_MFD_WM831X_SPI is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_WM8994 is not set
# CONFIG_REGULATOR is not set
CONFIG_MEDIA_SUPPORT=m
#
# Multimedia core support
#
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
CONFIG_MEDIA_RADIO_SUPPORT=y
CONFIG_MEDIA_SDR_SUPPORT=y
CONFIG_MEDIA_RC_SUPPORT=y
CONFIG_MEDIA_CONTROLLER=y
CONFIG_VIDEO_DEV=m
# CONFIG_VIDEO_V4L2_SUBDEV_API is not set
CONFIG_VIDEO_V4L2=m
# CONFIG_VIDEO_ADV_DEBUG is not set
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_TUNER=m
CONFIG_VIDEOBUF_GEN=m
CONFIG_VIDEOBUF_VMALLOC=m
CONFIG_VIDEOBUF_DVB=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_MEMOPS=m
CONFIG_VIDEOBUF2_VMALLOC=m
CONFIG_DVB_CORE=m
CONFIG_DVB_NET=y
CONFIG_TTPCI_EEPROM=m
CONFIG_DVB_MAX_ADAPTERS=8
CONFIG_DVB_DYNAMIC_MINORS=y
#
# Media drivers
#
CONFIG_RC_CORE=m
CONFIG_RC_MAP=m
CONFIG_RC_DECODERS=y
CONFIG_LIRC=m
CONFIG_IR_LIRC_CODEC=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IR_RC5_DECODER=m
CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_SANYO_DECODER=m
CONFIG_IR_SHARP_DECODER=m
CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_XMP_DECODER=m
CONFIG_RC_DEVICES=y
CONFIG_RC_ATI_REMOTE=m
# CONFIG_IR_HIX5HD2 is not set
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
CONFIG_IR_REDRAT3=m
CONFIG_IR_STREAMZAP=m
CONFIG_IR_IGUANA=m
CONFIG_IR_TTUSBIR=m
# CONFIG_IR_IMG is not set
CONFIG_RC_LOOPBACK=m
CONFIG_IR_GPIO_CIR=m
CONFIG_MEDIA_USB_SUPPORT=y
#
# Webcam devices
#
CONFIG_USB_VIDEO_CLASS=m
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
CONFIG_USB_GSPCA=m
CONFIG_USB_M5602=m
CONFIG_USB_STV06XX=m
CONFIG_USB_GL860=m
CONFIG_USB_GSPCA_BENQ=m
CONFIG_USB_GSPCA_CONEX=m
CONFIG_USB_GSPCA_CPIA1=m
CONFIG_USB_GSPCA_DTCS033=m
CONFIG_USB_GSPCA_ETOMS=m
CONFIG_USB_GSPCA_FINEPIX=m
CONFIG_USB_GSPCA_JEILINJ=m
CONFIG_USB_GSPCA_JL2005BCD=m
CONFIG_USB_GSPCA_KINECT=m
CONFIG_USB_GSPCA_KONICA=m
CONFIG_USB_GSPCA_MARS=m
CONFIG_USB_GSPCA_MR97310A=m
CONFIG_USB_GSPCA_NW80X=m
CONFIG_USB_GSPCA_OV519=m
CONFIG_USB_GSPCA_OV534=m
CONFIG_USB_GSPCA_OV534_9=m
CONFIG_USB_GSPCA_PAC207=m
CONFIG_USB_GSPCA_PAC7302=m
CONFIG_USB_GSPCA_PAC7311=m
CONFIG_USB_GSPCA_SE401=m
CONFIG_USB_GSPCA_SN9C2028=m
CONFIG_USB_GSPCA_SN9C20X=m
CONFIG_USB_GSPCA_SONIXB=m
CONFIG_USB_GSPCA_SONIXJ=m
CONFIG_USB_GSPCA_SPCA500=m
CONFIG_USB_GSPCA_SPCA501=m
CONFIG_USB_GSPCA_SPCA505=m
CONFIG_USB_GSPCA_SPCA506=m
CONFIG_USB_GSPCA_SPCA508=m
CONFIG_USB_GSPCA_SPCA561=m
CONFIG_USB_GSPCA_SPCA1528=m
CONFIG_USB_GSPCA_SQ905=m
CONFIG_USB_GSPCA_SQ905C=m
CONFIG_USB_GSPCA_SQ930X=m
CONFIG_USB_GSPCA_STK014=m
CONFIG_USB_GSPCA_STK1135=m
CONFIG_USB_GSPCA_STV0680=m
CONFIG_USB_GSPCA_SUNPLUS=m
CONFIG_USB_GSPCA_T613=m
CONFIG_USB_GSPCA_TOPRO=m
CONFIG_USB_GSPCA_TV8532=m
CONFIG_USB_GSPCA_VC032X=m
CONFIG_USB_GSPCA_VICAM=m
CONFIG_USB_GSPCA_XIRLINK_CIT=m
CONFIG_USB_GSPCA_ZC3XX=m
CONFIG_USB_PWC=m
# CONFIG_USB_PWC_DEBUG is not set
CONFIG_USB_PWC_INPUT_EVDEV=y
CONFIG_VIDEO_CPIA2=m
CONFIG_USB_ZR364XX=m
CONFIG_USB_STKWEBCAM=m
CONFIG_USB_S2255=m
CONFIG_VIDEO_USBTV=m
#
# Analog TV USB devices
#
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
CONFIG_VIDEO_PVRUSB2_DVB=y
# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
CONFIG_VIDEO_HDPVR=m
CONFIG_VIDEO_TLG2300=m
CONFIG_VIDEO_USBVISION=m
CONFIG_VIDEO_STK1160_COMMON=m
CONFIG_VIDEO_STK1160_AC97=y
CONFIG_VIDEO_STK1160=m
CONFIG_VIDEO_GO7007=m
CONFIG_VIDEO_GO7007_USB=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
#
# Analog/digital TV USB devices
#
CONFIG_VIDEO_AU0828=m
CONFIG_VIDEO_AU0828_V4L2=y
CONFIG_VIDEO_AU0828_RC=y
CONFIG_VIDEO_CX231XX=m
CONFIG_VIDEO_CX231XX_RC=y
CONFIG_VIDEO_CX231XX_ALSA=m
CONFIG_VIDEO_CX231XX_DVB=m
CONFIG_VIDEO_TM6000=m
CONFIG_VIDEO_TM6000_ALSA=m
CONFIG_VIDEO_TM6000_DVB=m
#
# Digital TV USB devices
#
CONFIG_DVB_USB=m
# CONFIG_DVB_USB_DEBUG is not set
CONFIG_DVB_USB_A800=m
CONFIG_DVB_USB_DIBUSB_MB=m
CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
CONFIG_DVB_USB_DIBUSB_MC=m
CONFIG_DVB_USB_DIB0700=m
CONFIG_DVB_USB_UMT_010=m
CONFIG_DVB_USB_CXUSB=m
CONFIG_DVB_USB_M920X=m
CONFIG_DVB_USB_DIGITV=m
CONFIG_DVB_USB_VP7045=m
CONFIG_DVB_USB_VP702X=m
CONFIG_DVB_USB_GP8PSK=m
CONFIG_DVB_USB_NOVA_T_USB2=m
CONFIG_DVB_USB_TTUSB2=m
CONFIG_DVB_USB_DTT200U=m
CONFIG_DVB_USB_OPERA1=m
CONFIG_DVB_USB_AF9005=m
CONFIG_DVB_USB_AF9005_REMOTE=m
CONFIG_DVB_USB_PCTV452E=m
CONFIG_DVB_USB_DW2102=m
CONFIG_DVB_USB_CINERGY_T2=m
CONFIG_DVB_USB_DTV5100=m
CONFIG_DVB_USB_FRIIO=m
CONFIG_DVB_USB_AZ6027=m
CONFIG_DVB_USB_TECHNISAT_USB2=m
CONFIG_DVB_USB_V2=m
CONFIG_DVB_USB_AF9015=m
CONFIG_DVB_USB_AF9035=m
CONFIG_DVB_USB_ANYSEE=m
CONFIG_DVB_USB_AU6610=m
CONFIG_DVB_USB_AZ6007=m
CONFIG_DVB_USB_CE6230=m
CONFIG_DVB_USB_EC168=m
CONFIG_DVB_USB_GL861=m
CONFIG_DVB_USB_LME2510=m
CONFIG_DVB_USB_MXL111SF=m
CONFIG_DVB_USB_RTL28XXU=m
CONFIG_DVB_USB_DVBSKY=m
CONFIG_SMS_USB_DRV=m
CONFIG_DVB_B2C2_FLEXCOP_USB=m
# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
CONFIG_DVB_AS102=m
#
# Webcam, TV (analog/digital) USB devices
#
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_EM28XX_V4L2=m
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX_RC=m
#
# Software defined radio USB devices
#
CONFIG_USB_AIRSPY=m
CONFIG_USB_HACKRF=m
CONFIG_USB_MSI2500=m
CONFIG_V4L_PLATFORM_DRIVERS=y
# CONFIG_SOC_CAMERA is not set
CONFIG_VIDEO_BCM2835=y
CONFIG_VIDEO_BCM2835_MMAL=m
CONFIG_V4L_MEM2MEM_DRIVERS=y
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
# CONFIG_VIDEO_SH_VEU is not set
CONFIG_V4L_TEST_DRIVERS=y
CONFIG_VIDEO_VIVID=m
# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set
#
# Supported MMC/SDIO adapters
#
CONFIG_SMS_SDIO_DRV=m
CONFIG_MEDIA_PARPORT_SUPPORT=y
# CONFIG_VIDEO_BWQCAM is not set
# CONFIG_VIDEO_CQCAM is not set
# CONFIG_VIDEO_W9966 is not set
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_TEA575X=m
CONFIG_RADIO_SI470X=y
CONFIG_USB_SI470X=m
CONFIG_I2C_SI470X=m
CONFIG_RADIO_SI4713=m
# CONFIG_USB_SI4713 is not set
# CONFIG_PLATFORM_SI4713 is not set
CONFIG_I2C_SI4713=m
CONFIG_USB_MR800=m
CONFIG_USB_DSBR=m
CONFIG_RADIO_SHARK=m
CONFIG_RADIO_SHARK2=m
CONFIG_USB_KEENE=m
CONFIG_USB_RAREMONO=m
CONFIG_USB_MA901=m
CONFIG_RADIO_TEA5764=m
CONFIG_RADIO_SAA7706H=m
CONFIG_RADIO_TEF6862=m
CONFIG_RADIO_WL1273=m
#
# Texas Instruments WL128x FM driver (ST based)
#
CONFIG_RADIO_WL128X=m
CONFIG_MEDIA_COMMON_OPTIONS=y
#
# common driver options
#
CONFIG_VIDEO_CX2341X=m
CONFIG_VIDEO_TVEEPROM=m
CONFIG_CYPRESS_FIRMWARE=m
CONFIG_DVB_B2C2_FLEXCOP=m
CONFIG_SMS_SIANO_MDTV=m
CONFIG_SMS_SIANO_RC=y
# CONFIG_SMS_SIANO_DEBUGFS is not set
#
# Media ancillary drivers (tuners, sensors, i2c, frontends)
#
# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
CONFIG_MEDIA_ATTACH=y
CONFIG_VIDEO_IR_I2C=m
#
# Encoders, decoders, sensors and other helper chips
#
#
# Audio decoders, processors and mixers
#
CONFIG_VIDEO_TVAUDIO=m
CONFIG_VIDEO_TDA7432=m
CONFIG_VIDEO_TDA9840=m
CONFIG_VIDEO_TEA6415C=m
CONFIG_VIDEO_TEA6420=m
CONFIG_VIDEO_MSP3400=m
# CONFIG_VIDEO_CS5345 is not set
CONFIG_VIDEO_CS53L32A=m
CONFIG_VIDEO_TLV320AIC23B=m
CONFIG_VIDEO_UDA1342=m
CONFIG_VIDEO_WM8775=m
CONFIG_VIDEO_WM8739=m
# CONFIG_VIDEO_VP27SMPX is not set
CONFIG_VIDEO_SONY_BTF_MPX=m
#
# RDS decoders
#
CONFIG_VIDEO_SAA6588=m
#
# Video decoders
#
# CONFIG_VIDEO_ADV7180 is not set
# CONFIG_VIDEO_ADV7183 is not set
CONFIG_VIDEO_BT819=m
CONFIG_VIDEO_BT856=m
# CONFIG_VIDEO_BT866 is not set
CONFIG_VIDEO_KS0127=m
# CONFIG_VIDEO_ML86V7667 is not set
CONFIG_VIDEO_SAA7110=m
CONFIG_VIDEO_SAA711X=m
# CONFIG_VIDEO_SAA7191 is not set
# CONFIG_VIDEO_TVP514X is not set
CONFIG_VIDEO_TVP5150=m
# CONFIG_VIDEO_TVP7002 is not set
CONFIG_VIDEO_TW2804=m
CONFIG_VIDEO_TW9903=m
CONFIG_VIDEO_TW9906=m
CONFIG_VIDEO_VPX3220=m
#
# Video and audio decoders
#
# CONFIG_VIDEO_SAA717X is not set
CONFIG_VIDEO_CX25840=m
#
# Video encoders
#
CONFIG_VIDEO_SAA7127=m
CONFIG_VIDEO_SAA7185=m
CONFIG_VIDEO_ADV7170=m
CONFIG_VIDEO_ADV7175=m
# CONFIG_VIDEO_ADV7343 is not set
# CONFIG_VIDEO_ADV7393 is not set
# CONFIG_VIDEO_AK881X is not set
# CONFIG_VIDEO_THS8200 is not set
#
# Camera sensor devices
#
CONFIG_VIDEO_OV7640=m
CONFIG_VIDEO_OV7670=m
CONFIG_VIDEO_VS6624=m
CONFIG_VIDEO_MT9V011=m
CONFIG_VIDEO_SR030PC30=m
#
# Flash devices
#
# CONFIG_VIDEO_ADP1653 is not set
# CONFIG_VIDEO_AS3645A is not set
# CONFIG_VIDEO_LM3560 is not set
# CONFIG_VIDEO_LM3646 is not set
#
# Video improvement chips
#
CONFIG_VIDEO_UPD64031A=m
CONFIG_VIDEO_UPD64083=m
#
# Audio/Video compression chips
#
# CONFIG_VIDEO_SAA6752HS is not set
#
# Miscellaneous helper chips
#
# CONFIG_VIDEO_THS7303 is not set
# CONFIG_VIDEO_M52790 is not set
#
# Sensors used on soc_camera driver
#
CONFIG_MEDIA_TUNER=m
#
# Customize TV tuners
#
CONFIG_MEDIA_TUNER_SIMPLE=m
CONFIG_MEDIA_TUNER_TDA8290=m
CONFIG_MEDIA_TUNER_TDA827X=m
CONFIG_MEDIA_TUNER_TDA18271=m
CONFIG_MEDIA_TUNER_TDA9887=m
CONFIG_MEDIA_TUNER_TEA5761=m
CONFIG_MEDIA_TUNER_TEA5767=m
CONFIG_MEDIA_TUNER_MSI001=m
CONFIG_MEDIA_TUNER_MT20XX=m
CONFIG_MEDIA_TUNER_MT2060=m
CONFIG_MEDIA_TUNER_MT2063=m
CONFIG_MEDIA_TUNER_MT2266=m
CONFIG_MEDIA_TUNER_MT2131=m
CONFIG_MEDIA_TUNER_QT1010=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
CONFIG_MEDIA_TUNER_XC4000=m
CONFIG_MEDIA_TUNER_MXL5005S=m
CONFIG_MEDIA_TUNER_MXL5007T=m
CONFIG_MEDIA_TUNER_MC44S803=m
CONFIG_MEDIA_TUNER_MAX2165=m
CONFIG_MEDIA_TUNER_TDA18218=m
CONFIG_MEDIA_TUNER_FC0011=m
CONFIG_MEDIA_TUNER_FC0012=m
CONFIG_MEDIA_TUNER_FC0013=m
CONFIG_MEDIA_TUNER_TDA18212=m
CONFIG_MEDIA_TUNER_E4000=m
CONFIG_MEDIA_TUNER_FC2580=m
CONFIG_MEDIA_TUNER_M88TS2022=m
CONFIG_MEDIA_TUNER_TUA9001=m
CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_TUNER_IT913X=m
CONFIG_MEDIA_TUNER_R820T=m
CONFIG_MEDIA_TUNER_MXL301RF=m
CONFIG_MEDIA_TUNER_QM1D1C0042=m
#
# Customise DVB Frontends
#
#
# Multistandard (satellite) frontends
#
CONFIG_DVB_STB0899=m
CONFIG_DVB_STB6100=m
CONFIG_DVB_STV090x=m
CONFIG_DVB_STV6110x=m
CONFIG_DVB_M88DS3103=m
#
# Multistandard (cable + terrestrial) frontends
#
CONFIG_DVB_DRXK=m
CONFIG_DVB_TDA18271C2DD=m
CONFIG_DVB_SI2165=m
#
# DVB-S (satellite) frontends
#
CONFIG_DVB_CX24110=m
CONFIG_DVB_CX24123=m
CONFIG_DVB_MT312=m
CONFIG_DVB_ZL10036=m
CONFIG_DVB_ZL10039=m
CONFIG_DVB_S5H1420=m
CONFIG_DVB_STV0288=m
CONFIG_DVB_STB6000=m
CONFIG_DVB_STV0299=m
CONFIG_DVB_STV6110=m
CONFIG_DVB_STV0900=m
CONFIG_DVB_TDA8083=m
CONFIG_DVB_TDA10086=m
CONFIG_DVB_TDA8261=m
CONFIG_DVB_VES1X93=m
CONFIG_DVB_TUNER_ITD1000=m
CONFIG_DVB_TUNER_CX24113=m
CONFIG_DVB_TDA826X=m
CONFIG_DVB_TUA6100=m
CONFIG_DVB_CX24116=m
CONFIG_DVB_CX24117=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_TS2020=m
CONFIG_DVB_DS3000=m
CONFIG_DVB_MB86A16=m
CONFIG_DVB_TDA10071=m
#
# DVB-T (terrestrial) frontends
#
CONFIG_DVB_SP8870=m
CONFIG_DVB_SP887X=m
CONFIG_DVB_CX22700=m
CONFIG_DVB_CX22702=m
CONFIG_DVB_S5H1432=m
CONFIG_DVB_DRXD=m
CONFIG_DVB_L64781=m
CONFIG_DVB_TDA1004X=m
CONFIG_DVB_NXT6000=m
CONFIG_DVB_MT352=m
CONFIG_DVB_ZL10353=m
CONFIG_DVB_DIB3000MB=m
CONFIG_DVB_DIB3000MC=m
CONFIG_DVB_DIB7000M=m
CONFIG_DVB_DIB7000P=m
CONFIG_DVB_DIB9000=m
CONFIG_DVB_TDA10048=m
CONFIG_DVB_AF9013=m
CONFIG_DVB_EC100=m
CONFIG_DVB_HD29L2=m
CONFIG_DVB_STV0367=m
CONFIG_DVB_CXD2820R=m
CONFIG_DVB_RTL2830=m
CONFIG_DVB_RTL2832=m
CONFIG_DVB_RTL2832_SDR=m
CONFIG_DVB_SI2168=m
CONFIG_DVB_AS102_FE=m
#
# DVB-C (cable) frontends
#
CONFIG_DVB_VES1820=m
CONFIG_DVB_TDA10021=m
CONFIG_DVB_TDA10023=m
CONFIG_DVB_STV0297=m
#
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
#
CONFIG_DVB_NXT200X=m
CONFIG_DVB_OR51211=m
CONFIG_DVB_OR51132=m
CONFIG_DVB_BCM3510=m
CONFIG_DVB_LGDT330X=m
CONFIG_DVB_LGDT3305=m
CONFIG_DVB_LG2160=m
CONFIG_DVB_S5H1409=m
CONFIG_DVB_AU8522=m
CONFIG_DVB_AU8522_DTV=m
CONFIG_DVB_AU8522_V4L=m
CONFIG_DVB_S5H1411=m
#
# ISDB-T (terrestrial) frontends
#
CONFIG_DVB_S921=m
CONFIG_DVB_DIB8000=m
CONFIG_DVB_MB86A20S=m
CONFIG_DVB_TC90522=m
#
# Digital terrestrial only tuners/PLL
#
CONFIG_DVB_PLL=m
CONFIG_DVB_TUNER_DIB0070=m
CONFIG_DVB_TUNER_DIB0090=m
#
# SEC control devices for DVB-S
#
CONFIG_DVB_DRX39XYJ=m
CONFIG_DVB_LNBP21=m
CONFIG_DVB_LNBP22=m
CONFIG_DVB_ISL6405=m
CONFIG_DVB_ISL6421=m
CONFIG_DVB_ISL6423=m
CONFIG_DVB_A8293=m
CONFIG_DVB_SP2=m
CONFIG_DVB_LGS8GL5=m
CONFIG_DVB_LGS8GXX=m
CONFIG_DVB_ATBM8830=m
CONFIG_DVB_TDA665x=m
CONFIG_DVB_IX2505V=m
CONFIG_DVB_M88RS2000=m
CONFIG_DVB_AF9033=m
#
# Tools to develop new frontends
#
CONFIG_DVB_DUMMY_FE=m
#
# Graphics support
#
#
# Direct Rendering Manager
#
# CONFIG_DRM is not set
#
# Frame buffer Devices
#
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_CMDLINE=y
# CONFIG_FB_DDC is not set
# CONFIG_FB_BOOT_VESA_SUPPORT is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
CONFIG_FB_SYS_FILLRECT=m
CONFIG_FB_SYS_COPYAREA=m
CONFIG_FB_SYS_IMAGEBLIT=m
# CONFIG_FB_FOREIGN_ENDIAN is not set
CONFIG_FB_SYS_FOPS=m
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set
#
# Frame buffer hardware drivers
#
CONFIG_FB_BCM2708=y
# CONFIG_FB_ARMCLCD is not set
# CONFIG_FB_UVESA is not set
# CONFIG_FB_OPENCORES is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_SMSCUFX=m
CONFIG_FB_UDL=m
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_BROADSHEET is not set
# CONFIG_FB_AUO_K190X is not set
# CONFIG_FB_SIMPLE is not set
# CONFIG_FB_SSD1307 is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_GENERIC is not set
# CONFIG_BACKLIGHT_ADP8860 is not set
# CONFIG_BACKLIGHT_ADP8870 is not set
# CONFIG_BACKLIGHT_LM3639 is not set
# CONFIG_BACKLIGHT_GPIO is not set
# CONFIG_BACKLIGHT_LV5207LP is not set
# CONFIG_BACKLIGHT_BD6107 is not set
# CONFIG_VGASTATE is not set
#
# Console display driver support
#
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_SOUND=y
CONFIG_SOUND_OSS_CORE=y
# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_DMAENGINE_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_COMPRESS_OFFLOAD=m
CONFIG_SND_JACK=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_HRTIMER=m
CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_MAX_CARDS=32
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
CONFIG_SND_VMASTER=y
CONFIG_SND_RAWMIDI_SEQ=m
# CONFIG_SND_OPL3_LIB_SEQ is not set
# CONFIG_SND_OPL4_LIB_SEQ is not set
# CONFIG_SND_SBAWE_SEQ is not set
# CONFIG_SND_EMU10K1_SEQ is not set
CONFIG_SND_MPU401_UART=m
CONFIG_SND_AC97_CODEC=m
CONFIG_SND_DRIVERS=y
CONFIG_SND_DUMMY=m
CONFIG_SND_ALOOP=m
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
CONFIG_SND_MTS64=m
CONFIG_SND_SERIAL_U16550=m
CONFIG_SND_MPU401=m
CONFIG_SND_PORTMAN2X4=m
CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
#
# HD-Audio
#
CONFIG_SND_ARM=y
# CONFIG_SND_ARMAACI is not set
CONFIG_SND_BCM2835=m
CONFIG_SND_SPI=y
CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_UA101=m
CONFIG_SND_USB_CAIAQ=m
CONFIG_SND_USB_CAIAQ_INPUT=y
CONFIG_SND_USB_6FIRE=m
CONFIG_SND_USB_HIFACE=m
CONFIG_SND_BCD2000=m
CONFIG_SND_SOC=m
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
# CONFIG_SND_ATMEL_SOC is not set
CONFIG_SND_BCM2708_SOC_I2S=m
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m
CONFIG_SND_BCM2708_SOC_RPI_DAC=m
CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
# CONFIG_SND_DESIGNWARE_I2S is not set
#
# SoC Audio for Freescale CPUs
#
#
# Common SoC Audio options for Freescale CPUs:
#
# CONFIG_SND_SOC_FSL_ASRC is not set
# CONFIG_SND_SOC_FSL_SAI is not set
# CONFIG_SND_SOC_FSL_SSI is not set
# CONFIG_SND_SOC_FSL_SPDIF is not set
# CONFIG_SND_SOC_FSL_ESAI is not set
# CONFIG_SND_SOC_IMX_AUDMUX is not set
CONFIG_SND_SOC_I2C_AND_SPI=m
#
# CODEC drivers
#
# CONFIG_SND_SOC_ADAU1701 is not set
# CONFIG_SND_SOC_AK4104 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_ALC5623 is not set
# CONFIG_SND_SOC_CS35L32 is not set
# CONFIG_SND_SOC_CS42L52 is not set
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS4265 is not set
# CONFIG_SND_SOC_CS4270 is not set
# CONFIG_SND_SOC_CS4271 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
# CONFIG_SND_SOC_HDMI_CODEC is not set
# CONFIG_SND_SOC_ES8328 is not set
# CONFIG_SND_SOC_PCM1681 is not set
# CONFIG_SND_SOC_PCM1792A is not set
CONFIG_SND_SOC_PCM512x=m
CONFIG_SND_SOC_PCM512x_I2C=m
# CONFIG_SND_SOC_PCM512x_SPI is not set
CONFIG_SND_SOC_PCM1794A=m
CONFIG_SND_SOC_PCM5102A=m
# CONFIG_SND_SOC_SGTL5000 is not set
# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
# CONFIG_SND_SOC_SPDIF is not set
# CONFIG_SND_SOC_SSM2602_SPI is not set
# CONFIG_SND_SOC_SSM2602_I2C is not set
# CONFIG_SND_SOC_SSM4567 is not set
# CONFIG_SND_SOC_STA350 is not set
# CONFIG_SND_SOC_TAS2552 is not set
# CONFIG_SND_SOC_TAS5086 is not set
CONFIG_SND_SOC_TAS5713=m
# CONFIG_SND_SOC_TLV320AIC31XX is not set
# CONFIG_SND_SOC_TLV320AIC3X is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
CONFIG_SND_SOC_WM8731=m
# CONFIG_SND_SOC_WM8737 is not set
# CONFIG_SND_SOC_WM8741 is not set
# CONFIG_SND_SOC_WM8750 is not set
# CONFIG_SND_SOC_WM8753 is not set
# CONFIG_SND_SOC_WM8770 is not set
# CONFIG_SND_SOC_WM8776 is not set
CONFIG_SND_SOC_WM8804=m
# CONFIG_SND_SOC_WM8903 is not set
# CONFIG_SND_SOC_WM8962 is not set
# CONFIG_SND_SOC_WM8978 is not set
# CONFIG_SND_SOC_TPA6130A2 is not set
CONFIG_SND_SIMPLE_CARD=m
CONFIG_SOUND_PRIME=m
CONFIG_AC97_BUS=m
#
# HID support
#
CONFIG_HID=y
# CONFIG_HID_BATTERY_STRENGTH is not set
CONFIG_HIDRAW=y
CONFIG_UHID=m
CONFIG_HID_GENERIC=m
#
# Special HID drivers
#
CONFIG_HID_A4TECH=m
CONFIG_HID_ACRUX=m
CONFIG_HID_ACRUX_FF=y
CONFIG_HID_APPLE=m
# CONFIG_HID_APPLEIR is not set
CONFIG_HID_AUREAL=m
CONFIG_HID_BELKIN=m
CONFIG_HID_CHERRY=m
CONFIG_HID_CHICONY=m
CONFIG_HID_PRODIKEYS=m
CONFIG_HID_CP2112=m
CONFIG_HID_CYPRESS=m
CONFIG_HID_DRAGONRISE=m
CONFIG_DRAGONRISE_FF=y
CONFIG_HID_EMS_FF=m
CONFIG_HID_ELECOM=m
CONFIG_HID_ELO=m
CONFIG_HID_EZKEY=m
CONFIG_HID_HOLTEK=m
CONFIG_HOLTEK_FF=y
# CONFIG_HID_GT683R is not set
CONFIG_HID_HUION=m
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=m
CONFIG_HID_UCLOGIC=m
CONFIG_HID_WALTOP=m
CONFIG_HID_GYRATION=m
CONFIG_HID_ICADE=m
CONFIG_HID_TWINHAN=m
CONFIG_HID_KENSINGTON=m
CONFIG_HID_LCPOWER=m
CONFIG_HID_LENOVO=m
CONFIG_HID_LOGITECH=m
CONFIG_HID_LOGITECH_DJ=m
CONFIG_LOGITECH_FF=y
CONFIG_LOGIRUMBLEPAD2_FF=y
CONFIG_LOGIG940_FF=y
CONFIG_LOGIWHEELS_FF=y
CONFIG_HID_MAGICMOUSE=m
CONFIG_HID_MICROSOFT=m
CONFIG_HID_MONTEREY=m
CONFIG_HID_MULTITOUCH=m
CONFIG_HID_NTRIG=m
CONFIG_HID_ORTEK=m
CONFIG_HID_PANTHERLORD=m
CONFIG_PANTHERLORD_FF=y
CONFIG_HID_PENMOUNT=m
CONFIG_HID_PETALYNX=m
CONFIG_HID_PICOLCD=m
CONFIG_HID_PICOLCD_FB=y
CONFIG_HID_PICOLCD_BACKLIGHT=y
CONFIG_HID_PICOLCD_LEDS=y
CONFIG_HID_PICOLCD_CIR=y
CONFIG_HID_PRIMAX=m
CONFIG_HID_ROCCAT=m
CONFIG_HID_SAITEK=m
CONFIG_HID_SAMSUNG=m
CONFIG_HID_SONY=m
CONFIG_SONY_FF=y
CONFIG_HID_SPEEDLINK=m
CONFIG_HID_STEELSERIES=m
CONFIG_HID_SUNPLUS=m
CONFIG_HID_RMI=m
CONFIG_HID_GREENASIA=m
CONFIG_GREENASIA_FF=y
CONFIG_HID_SMARTJOYPLUS=m
CONFIG_SMARTJOYPLUS_FF=y
CONFIG_HID_TIVO=m
CONFIG_HID_TOPSEED=m
CONFIG_HID_THINGM=m
CONFIG_HID_THRUSTMASTER=m
CONFIG_THRUSTMASTER_FF=y
CONFIG_HID_WACOM=m
CONFIG_HID_WIIMOTE=m
CONFIG_HID_XINMO=m
CONFIG_HID_ZEROPLUS=m
CONFIG_ZEROPLUS_FF=y
CONFIG_HID_ZYDACRON=m
CONFIG_HID_SENSOR_HUB=m
#
# USB HID support
#
CONFIG_USB_HID=y
CONFIG_HID_PID=y
CONFIG_USB_HIDDEV=y
#
# I2C HID support
#
# CONFIG_I2C_HID is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
# Miscellaneous USB options
#
CONFIG_USB_DEFAULT_PERSIST=y
CONFIG_USB_DYNAMIC_MINORS=y
# CONFIG_USB_OTG is not set
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
# CONFIG_USB_OTG_FSM is not set
CONFIG_USB_MON=m
CONFIG_USB_WUSB=m
CONFIG_USB_WUSB_CBAF=m
# CONFIG_USB_WUSB_CBAF_DEBUG is not set
#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
CONFIG_USB_XHCI_HCD=m
# CONFIG_USB_EHCI_HCD is not set
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_ISP1760_HCD is not set
# CONFIG_USB_ISP1362_HCD is not set
# CONFIG_USB_FUSBH200_HCD is not set
# CONFIG_USB_FOTG210_HCD is not set
# CONFIG_USB_MAX3421_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
CONFIG_USB_U132_HCD=m
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
CONFIG_USB_HWA_HCD=m
CONFIG_USB_DWCOTG=y
# CONFIG_USB_HCD_BCMA is not set
# CONFIG_USB_HCD_SSB is not set
# CONFIG_USB_HCD_TEST_MODE is not set
#
# USB Device Class drivers
#
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=m
CONFIG_USB_WDM=m
CONFIG_USB_TMC=m
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#
#
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_REALTEK=m
CONFIG_REALTEK_AUTOPM=y
CONFIG_USB_STORAGE_DATAFAB=m
CONFIG_USB_STORAGE_FREECOM=m
CONFIG_USB_STORAGE_ISD200=m
CONFIG_USB_STORAGE_USBAT=m
CONFIG_USB_STORAGE_SDDR09=m
CONFIG_USB_STORAGE_SDDR55=m
CONFIG_USB_STORAGE_JUMPSHOT=m
CONFIG_USB_STORAGE_ALAUDA=m
CONFIG_USB_STORAGE_ONETOUCH=m
CONFIG_USB_STORAGE_KARMA=m
CONFIG_USB_STORAGE_CYPRESS_ATACB=m
CONFIG_USB_STORAGE_ENE_UB6250=m
CONFIG_USB_UAS=m
#
# USB Imaging devices
#
CONFIG_USB_MDC800=m
CONFIG_USB_MICROTEK=m
# CONFIG_USBIP_CORE is not set
# CONFIG_USB_MUSB_HDRC is not set
# CONFIG_USB_DWC3 is not set
# CONFIG_USB_DWC2 is not set
#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_SIMPLE=m
CONFIG_USB_SERIAL_AIRCABLE=m
CONFIG_USB_SERIAL_ARK3116=m
CONFIG_USB_SERIAL_BELKIN=m
CONFIG_USB_SERIAL_CH341=m
CONFIG_USB_SERIAL_WHITEHEAT=m
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_CP210X=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
CONFIG_USB_SERIAL_IR=m
CONFIG_USB_SERIAL_EDGEPORT=m
CONFIG_USB_SERIAL_EDGEPORT_TI=m
CONFIG_USB_SERIAL_F81232=m
CONFIG_USB_SERIAL_GARMIN=m
CONFIG_USB_SERIAL_IPW=m
CONFIG_USB_SERIAL_IUU=m
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
CONFIG_USB_SERIAL_KEYSPAN=m
CONFIG_USB_SERIAL_KLSI=m
CONFIG_USB_SERIAL_KOBIL_SCT=m
CONFIG_USB_SERIAL_MCT_U232=m
CONFIG_USB_SERIAL_METRO=m
CONFIG_USB_SERIAL_MOS7720=m
CONFIG_USB_SERIAL_MOS7715_PARPORT=y
CONFIG_USB_SERIAL_MOS7840=m
CONFIG_USB_SERIAL_MXUPORT=m
CONFIG_USB_SERIAL_NAVMAN=m
CONFIG_USB_SERIAL_PL2303=m
CONFIG_USB_SERIAL_OTI6858=m
CONFIG_USB_SERIAL_QCAUX=m
CONFIG_USB_SERIAL_QUALCOMM=m
CONFIG_USB_SERIAL_SPCP8X5=m
CONFIG_USB_SERIAL_SAFE=m
# CONFIG_USB_SERIAL_SAFE_PADDED is not set
CONFIG_USB_SERIAL_SIERRAWIRELESS=m
CONFIG_USB_SERIAL_SYMBOL=m
CONFIG_USB_SERIAL_TI=m
CONFIG_USB_SERIAL_CYBERJACK=m
CONFIG_USB_SERIAL_XIRCOM=m
CONFIG_USB_SERIAL_WWAN=m
CONFIG_USB_SERIAL_OPTION=m
CONFIG_USB_SERIAL_OMNINET=m
CONFIG_USB_SERIAL_OPTICON=m
CONFIG_USB_SERIAL_XSENS_MT=m
CONFIG_USB_SERIAL_WISHBONE=m
CONFIG_USB_SERIAL_SSU100=m
CONFIG_USB_SERIAL_QT2=m
CONFIG_USB_SERIAL_DEBUG=m
#
# USB Miscellaneous drivers
#
CONFIG_USB_EMI62=m
CONFIG_USB_EMI26=m
CONFIG_USB_ADUTUX=m
CONFIG_USB_SEVSEG=m
CONFIG_USB_RIO500=m
CONFIG_USB_LEGOTOWER=m
CONFIG_USB_LCD=m
CONFIG_USB_LED=m
CONFIG_USB_CYPRESS_CY7C63=m
CONFIG_USB_CYTHERM=m
CONFIG_USB_IDMOUSE=m
CONFIG_USB_FTDI_ELAN=m
CONFIG_USB_APPLEDISPLAY=m
CONFIG_USB_LD=m
CONFIG_USB_TRANCEVIBRATOR=m
CONFIG_USB_IOWARRIOR=m
CONFIG_USB_TEST=m
CONFIG_USB_EHSET_TEST_FIXTURE=m
CONFIG_USB_ISIGHTFW=m
CONFIG_USB_YUREX=m
CONFIG_USB_EZUSB_FX2=m
# CONFIG_USB_HSIC_USB3503 is not set
# CONFIG_USB_LINK_LAYER_TEST is not set
CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
CONFIG_USB_CXACRU=m
CONFIG_USB_UEAGLEATM=m
CONFIG_USB_XUSBATM=m
#
# USB Physical Layer drivers
#
# CONFIG_USB_PHY is not set
# CONFIG_NOP_USB_XCEIV is not set
# CONFIG_AM335X_PHY_USB is not set
# CONFIG_USB_GPIO_VBUS is not set
# CONFIG_USB_ISP1301 is not set
# CONFIG_USB_ULPI is not set
# CONFIG_USB_GADGET is not set
CONFIG_USB_LED_TRIG=y
CONFIG_UWB=m
CONFIG_UWB_HWA=m
CONFIG_UWB_I1480U=m
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_CLKGATE is not set
#
# MMC/SD/SDIO Card Drivers
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_MINORS=32
CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_SDIO_UART=m
# CONFIG_MMC_TEST is not set
#
# MMC/SD/SDIO Host Controller Drivers
#
# CONFIG_MMC_ARMMMCI is not set
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
# CONFIG_MMC_SDHCI_OF_ARASAN is not set
# CONFIG_MMC_SDHCI_PXAV3 is not set
# CONFIG_MMC_SDHCI_PXAV2 is not set
CONFIG_MMC_BCM2835=y
CONFIG_MMC_BCM2835_DMA=y
CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2
CONFIG_MMC_SPI=m
# CONFIG_MMC_DW is not set
CONFIG_MMC_VUB300=m
CONFIG_MMC_USHC=m
# CONFIG_MMC_USDHI6ROL0 is not set
CONFIG_MMC_REALTEK_USB=m
CONFIG_MEMSTICK=m
# CONFIG_MEMSTICK_DEBUG is not set
#
# MemoryStick drivers
#
# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
CONFIG_MSPRO_BLOCK=m
# CONFIG_MS_BLOCK is not set
#
# MemoryStick Host Controller Drivers
#
CONFIG_MEMSTICK_REALTEK_USB=m
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
#
# LED drivers
#
# CONFIG_LEDS_LM3530 is not set
# CONFIG_LEDS_LM3642 is not set
# CONFIG_LEDS_PCA9532 is not set
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_LP3944=m
# CONFIG_LEDS_LP5521 is not set
# CONFIG_LEDS_LP5523 is not set
# CONFIG_LEDS_LP5562 is not set
# CONFIG_LEDS_LP8501 is not set
CONFIG_LEDS_PCA955X=m
# CONFIG_LEDS_PCA963X is not set
CONFIG_LEDS_DAC124S085=m
CONFIG_LEDS_BD2802=m
CONFIG_LEDS_LT3593=m
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_LM355x is not set
#
# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
#
# CONFIG_LEDS_BLINKM is not set
#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_ONESHOT=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_BACKLIGHT=y
CONFIG_LEDS_TRIGGER_CPU=y
CONFIG_LEDS_TRIGGER_GPIO=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
#
# iptables trigger is under Netfilter config (LED target)
#
CONFIG_LEDS_TRIGGER_TRANSIENT=m
CONFIG_LEDS_TRIGGER_CAMERA=m
CONFIG_LEDS_TRIGGER_INPUT=m
CONFIG_ACCESSIBILITY=y
CONFIG_A11Y_BRAILLE_CONSOLE=y
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
# CONFIG_RTC_HCTOSYS is not set
CONFIG_RTC_SYSTOHC=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set
#
# I2C RTC drivers
#
CONFIG_RTC_DRV_DS1307=m
CONFIG_RTC_DRV_DS1374=m
CONFIG_RTC_DRV_DS1672=m
CONFIG_RTC_DRV_DS3232=m
# CONFIG_RTC_DRV_HYM8563 is not set
CONFIG_RTC_DRV_MAX6900=m
CONFIG_RTC_DRV_RS5C372=m
CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_ISL12022=m
CONFIG_RTC_DRV_ISL12057=m
CONFIG_RTC_DRV_X1205=m
CONFIG_RTC_DRV_PCF2127=m
CONFIG_RTC_DRV_PCF8523=m
CONFIG_RTC_DRV_PCF8563=m
# CONFIG_RTC_DRV_PCF85063 is not set
CONFIG_RTC_DRV_PCF8583=m
CONFIG_RTC_DRV_M41T80=m
# CONFIG_RTC_DRV_M41T80_WDT is not set
CONFIG_RTC_DRV_BQ32K=m
CONFIG_RTC_DRV_S35390A=m
CONFIG_RTC_DRV_FM3130=m
CONFIG_RTC_DRV_RX8581=m
CONFIG_RTC_DRV_RX8025=m
CONFIG_RTC_DRV_EM3027=m
CONFIG_RTC_DRV_RV3029C2=m
#
# SPI RTC drivers
#
CONFIG_RTC_DRV_M41T93=m
CONFIG_RTC_DRV_M41T94=m
CONFIG_RTC_DRV_DS1305=m
# CONFIG_RTC_DRV_DS1343 is not set
# CONFIG_RTC_DRV_DS1347 is not set
CONFIG_RTC_DRV_DS1390=m
CONFIG_RTC_DRV_MAX6902=m
CONFIG_RTC_DRV_R9701=m
CONFIG_RTC_DRV_RS5C348=m
CONFIG_RTC_DRV_DS3234=m
CONFIG_RTC_DRV_PCF2123=m
CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_MCP795 is not set
#
# Platform RTC drivers
#
CONFIG_RTC_DRV_CMOS=m
# CONFIG_RTC_DRV_DS1286 is not set
# CONFIG_RTC_DRV_DS1511 is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_DS2404 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T35 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_MSM6242 is not set
# CONFIG_RTC_DRV_BQ4802 is not set
# CONFIG_RTC_DRV_RP5C01 is not set
# CONFIG_RTC_DRV_V3020 is not set
#
# on-CPU RTC drivers
#
# CONFIG_RTC_DRV_PL030 is not set
# CONFIG_RTC_DRV_PL031 is not set
# CONFIG_RTC_DRV_SNVS is not set
# CONFIG_RTC_DRV_XGENE is not set
#
# HID Sensor RTC drivers
#
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
CONFIG_DMADEVICES=y
# CONFIG_DMADEVICES_DEBUG is not set
#
# DMA Devices
#
# CONFIG_AMBA_PL08X is not set
# CONFIG_DW_DMAC_CORE is not set
# CONFIG_DW_DMAC is not set
# CONFIG_PL330_DMA is not set
CONFIG_DMA_BCM2708=y
# CONFIG_FSL_EDMA is not set
# CONFIG_NBPFAXI_DMA is not set
CONFIG_DMA_ENGINE=y
CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_DMA_OF=y
#
# DMA Clients
#
CONFIG_ASYNC_TX_DMA=y
# CONFIG_DMATEST is not set
# CONFIG_AUXDISPLAY is not set
CONFIG_UIO=m
CONFIG_UIO_PDRV_GENIRQ=m
# CONFIG_UIO_DMEM_GENIRQ is not set
CONFIG_VIRT_DRIVERS=y
#
# Virtio drivers
#
# CONFIG_VIRTIO_MMIO is not set
#
# Microsoft Hyper-V guest support
#
CONFIG_STAGING=y
CONFIG_PRISM2_USB=m
# CONFIG_COMEDI is not set
# CONFIG_PANEL is not set
# CONFIG_RTLLIB is not set
CONFIG_R8712U=m
CONFIG_R8188EU=m
CONFIG_88EU_AP_MODE=y
CONFIG_R8723AU=m
CONFIG_8723AU_AP_MODE=y
CONFIG_8723AU_BT_COEXIST=y
# CONFIG_LINE6_USB is not set
CONFIG_VT6656=m
#
# IIO staging drivers
#
#
# Accelerometers
#
# CONFIG_ADIS16201 is not set
# CONFIG_ADIS16203 is not set
# CONFIG_ADIS16204 is not set
# CONFIG_ADIS16209 is not set
# CONFIG_ADIS16220 is not set
# CONFIG_ADIS16240 is not set
# CONFIG_LIS3L02DQ is not set
# CONFIG_SCA3000 is not set
#
# Analog to digital converters
#
# CONFIG_AD7606 is not set
# CONFIG_AD7780 is not set
# CONFIG_AD7816 is not set
# CONFIG_AD7192 is not set
# CONFIG_AD7280 is not set
#
# Analog digital bi-direction converters
#
# CONFIG_ADT7316 is not set
#
# Capacitance to digital converters
#
# CONFIG_AD7150 is not set
# CONFIG_AD7152 is not set
# CONFIG_AD7746 is not set
#
# Direct Digital Synthesis
#
# CONFIG_AD9832 is not set
# CONFIG_AD9834 is not set
#
# Digital gyroscope sensors
#
# CONFIG_ADIS16060 is not set
#
# Network Analyzer, Impedance Converters
#
# CONFIG_AD5933 is not set
#
# Light sensors
#
# CONFIG_SENSORS_ISL29018 is not set
# CONFIG_SENSORS_ISL29028 is not set
# CONFIG_TSL2583 is not set
# CONFIG_TSL2x7x is not set
#
# Magnetometer sensors
#
# CONFIG_SENSORS_HMC5843_I2C is not set
# CONFIG_SENSORS_HMC5843_SPI is not set
#
# Active energy metering IC
#
# CONFIG_ADE7753 is not set
# CONFIG_ADE7754 is not set
# CONFIG_ADE7758 is not set
# CONFIG_ADE7759 is not set
# CONFIG_ADE7854 is not set
#
# Resolver to digital converters
#
# CONFIG_AD2S90 is not set
# CONFIG_AD2S1200 is not set
# CONFIG_AD2S1210 is not set
#
# Triggers - standalone
#
# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
# CONFIG_IIO_SIMPLE_DUMMY is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
#
# Speakup console speech
#
CONFIG_SPEAKUP=m
CONFIG_SPEAKUP_SYNTH_ACNTSA=m
CONFIG_SPEAKUP_SYNTH_APOLLO=m
CONFIG_SPEAKUP_SYNTH_AUDPTR=m
CONFIG_SPEAKUP_SYNTH_BNS=m
CONFIG_SPEAKUP_SYNTH_DECTLK=m
CONFIG_SPEAKUP_SYNTH_DECEXT=m
CONFIG_SPEAKUP_SYNTH_LTLK=m
CONFIG_SPEAKUP_SYNTH_SOFT=m
CONFIG_SPEAKUP_SYNTH_SPKOUT=m
CONFIG_SPEAKUP_SYNTH_TXPRT=m
CONFIG_SPEAKUP_SYNTH_DUMMY=m
# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
CONFIG_STAGING_MEDIA=y
# CONFIG_I2C_BCM2048 is not set
# CONFIG_VIDEO_TCM825X is not set
CONFIG_LIRC_STAGING=y
CONFIG_LIRC_IGORPLUGUSB=m
CONFIG_LIRC_IMON=m
# CONFIG_LIRC_PARALLEL is not set
CONFIG_LIRC_RPI=m
CONFIG_LIRC_SASEM=m
CONFIG_LIRC_SERIAL=m
CONFIG_LIRC_SERIAL_TRANSMITTER=y
# CONFIG_LIRC_SIR is not set
# CONFIG_LIRC_ZILOG is not set
#
# Android
#
# CONFIG_ANDROID is not set
# CONFIG_USB_WPAN_HCD is not set
# CONFIG_WIMAX_GDM72XX is not set
# CONFIG_LTE_GDM724X is not set
# CONFIG_LUSTRE_FS is not set
# CONFIG_DGAP is not set
# CONFIG_GS_FPGABOOT is not set
CONFIG_FB_TFT=m
CONFIG_FB_TFT_AGM1264K_FL=m
CONFIG_FB_TFT_BD663474=m
CONFIG_FB_TFT_HX8340BN=m
CONFIG_FB_TFT_HX8347D=m
CONFIG_FB_TFT_HX8353D=m
CONFIG_FB_TFT_ILI9320=m
CONFIG_FB_TFT_ILI9325=m
CONFIG_FB_TFT_ILI9340=m
CONFIG_FB_TFT_ILI9341=m
CONFIG_FB_TFT_ILI9481=m
CONFIG_FB_TFT_ILI9486=m
CONFIG_FB_TFT_PCD8544=m
CONFIG_FB_TFT_RA8875=m
CONFIG_FB_TFT_S6D02A1=m
CONFIG_FB_TFT_S6D1121=m
CONFIG_FB_TFT_SSD1289=m
CONFIG_FB_TFT_SSD1306=m
CONFIG_FB_TFT_SSD1331=m
CONFIG_FB_TFT_SSD1351=m
CONFIG_FB_TFT_ST7735R=m
CONFIG_FB_TFT_TINYLCD=m
CONFIG_FB_TFT_TLS8204=m
CONFIG_FB_TFT_UC1701=m
CONFIG_FB_TFT_UPD161704=m
CONFIG_FB_TFT_WATTEROTT=m
CONFIG_FB_FLEX=m
CONFIG_FB_TFT_FBTFT_DEVICE=m
#
# SOC (System On Chip) specific Drivers
#
# CONFIG_SOC_TI is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
CONFIG_COMMON_CLK=y
#
# Common Clock Framework
#
# CONFIG_COMMON_CLK_SI5351 is not set
# CONFIG_COMMON_CLK_SI570 is not set
# CONFIG_COMMON_CLK_PXA is not set
# CONFIG_COMMON_CLK_QCOM is not set
#
# Hardware Spinlock drivers
#
#
# Clock Source drivers
#
CONFIG_CLKSRC_OF=y
CONFIG_ARM_ARCH_TIMER=y
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
# CONFIG_ATMEL_PIT is not set
# CONFIG_SH_TIMER_CMT is not set
# CONFIG_SH_TIMER_MTU2 is not set
# CONFIG_SH_TIMER_TMU is not set
# CONFIG_EM_TIMER_STI is not set
# CONFIG_CLKSRC_VERSATILE is not set
# CONFIG_MAILBOX is not set
# CONFIG_IOMMU_SUPPORT is not set
#
# Remoteproc drivers
#
# CONFIG_STE_MODEM_RPROC is not set
#
# Rpmsg drivers
#
#
# SOC (System On Chip) specific Drivers
#
CONFIG_PM_DEVFREQ=y
#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
#
# DEVFREQ Drivers
#
CONFIG_EXTCON=m
#
# Extcon Device Drivers
#
# CONFIG_EXTCON_ADC_JACK is not set
CONFIG_EXTCON_ARIZONA=m
# CONFIG_EXTCON_GPIO is not set
# CONFIG_EXTCON_RT8973A is not set
# CONFIG_EXTCON_SM5502 is not set
CONFIG_MEMORY=y
CONFIG_IIO=m
CONFIG_IIO_BUFFER=y
# CONFIG_IIO_BUFFER_CB is not set
CONFIG_IIO_KFIFO_BUF=m
CONFIG_IIO_TRIGGERED_BUFFER=m
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
#
# Accelerometers
#
# CONFIG_BMA180 is not set
# CONFIG_BMC150_ACCEL is not set
CONFIG_HID_SENSOR_ACCEL_3D=m
# CONFIG_IIO_ST_ACCEL_3AXIS is not set
# CONFIG_KXSD9 is not set
# CONFIG_MMA8452 is not set
# CONFIG_KXCJK1013 is not set
#
# Analog to digital converters
#
# CONFIG_AD7266 is not set
# CONFIG_AD7291 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7476 is not set
# CONFIG_AD7791 is not set
# CONFIG_AD7793 is not set
# CONFIG_AD7887 is not set
# CONFIG_AD7923 is not set
# CONFIG_AD799X is not set
# CONFIG_MAX1027 is not set
# CONFIG_MAX1363 is not set
# CONFIG_MCP320X is not set
# CONFIG_MCP3422 is not set
# CONFIG_NAU7802 is not set
# CONFIG_TI_ADC081C is not set
# CONFIG_TI_ADC128S052 is not set
# CONFIG_VF610_ADC is not set
CONFIG_VIPERBOARD_ADC=m
#
# Amplifiers
#
# CONFIG_AD8366 is not set
#
# Hid Sensor IIO Common
#
CONFIG_HID_SENSOR_IIO_COMMON=m
CONFIG_HID_SENSOR_IIO_TRIGGER=m
#
# Digital to analog converters
#
# CONFIG_AD5064 is not set
# CONFIG_AD5360 is not set
# CONFIG_AD5380 is not set
# CONFIG_AD5421 is not set
# CONFIG_AD5446 is not set
# CONFIG_AD5449 is not set
# CONFIG_AD5504 is not set
# CONFIG_AD5624R_SPI is not set
# CONFIG_AD5686 is not set
# CONFIG_AD5755 is not set
# CONFIG_AD5764 is not set
# CONFIG_AD5791 is not set
# CONFIG_AD7303 is not set
# CONFIG_MAX517 is not set
# CONFIG_MAX5821 is not set
# CONFIG_MCP4725 is not set
# CONFIG_MCP4922 is not set
#
# Frequency Synthesizers DDS/PLL
#
#
# Clock Generator/Distribution
#
# CONFIG_AD9523 is not set
#
# Phase-Locked Loop (PLL) frequency synthesizers
#
# CONFIG_ADF4350 is not set
#
# Digital gyroscope sensors
#
# CONFIG_ADIS16080 is not set
# CONFIG_ADIS16130 is not set
# CONFIG_ADIS16136 is not set
# CONFIG_ADIS16260 is not set
# CONFIG_ADXRS450 is not set
# CONFIG_BMG160 is not set
CONFIG_HID_SENSOR_GYRO_3D=m
# CONFIG_IIO_ST_GYRO_3AXIS is not set
# CONFIG_ITG3200 is not set
#
# Humidity sensors
#
# CONFIG_DHT11 is not set
# CONFIG_SI7005 is not set
#
# Inertial measurement units
#
# CONFIG_ADIS16400 is not set
# CONFIG_ADIS16480 is not set
# CONFIG_INV_MPU6050_IIO is not set
#
# Light sensors
#
# CONFIG_ADJD_S311 is not set
# CONFIG_AL3320A is not set
# CONFIG_APDS9300 is not set
# CONFIG_CM32181 is not set
# CONFIG_CM36651 is not set
# CONFIG_GP2AP020A00F is not set
# CONFIG_ISL29125 is not set
CONFIG_HID_SENSOR_ALS=m
CONFIG_HID_SENSOR_PROX=m
# CONFIG_LTR501 is not set
# CONFIG_TCS3414 is not set
# CONFIG_TCS3472 is not set
# CONFIG_SENSORS_TSL2563 is not set
# CONFIG_TSL4531 is not set
# CONFIG_VCNL4000 is not set
#
# Magnetometer sensors
#
# CONFIG_AK8975 is not set
# CONFIG_AK09911 is not set
# CONFIG_MAG3110 is not set
CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
# CONFIG_IIO_ST_MAGN_3AXIS is not set
#
# Inclinometer sensors
#
CONFIG_HID_SENSOR_INCLINOMETER_3D=m
CONFIG_HID_SENSOR_DEVICE_ROTATION=m
#
# Triggers - standalone
#
# CONFIG_IIO_INTERRUPT_TRIGGER is not set
# CONFIG_IIO_SYSFS_TRIGGER is not set
#
# Pressure sensors
#
CONFIG_HID_SENSOR_PRESS=m
# CONFIG_MPL115 is not set
# CONFIG_MPL3115 is not set
# CONFIG_IIO_ST_PRESS is not set
# CONFIG_T5403 is not set
#
# Lightning sensors
#
# CONFIG_AS3935 is not set
#
# Temperature sensors
#
# CONFIG_MLX90614 is not set
# CONFIG_TMP006 is not set
# CONFIG_PWM is not set
CONFIG_IRQCHIP=y
# CONFIG_IPACK_BUS is not set
# CONFIG_RESET_CONTROLLER is not set
# CONFIG_FMC is not set
#
# PHY Subsystem
#
# CONFIG_GENERIC_PHY is not set
# CONFIG_BCM_KONA_USB2_PHY is not set
# CONFIG_POWERCAP is not set
# CONFIG_MCB is not set
#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
CONFIG_JFS_FS=m
CONFIG_JFS_POSIX_ACL=y
CONFIG_JFS_SECURITY=y
# CONFIG_JFS_DEBUG is not set
CONFIG_JFS_STATISTICS=y
CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_XFS_RT=y
# CONFIG_XFS_WARN is not set
# CONFIG_XFS_DEBUG is not set
CONFIG_GFS2_FS=m
CONFIG_GFS2_FS_LOCKING_DLM=y
CONFIG_OCFS2_FS=m
CONFIG_OCFS2_FS_O2CB=m
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCFS2_FS_STATS=y
CONFIG_OCFS2_DEBUG_MASKLOG=y
# CONFIG_OCFS2_DEBUG_FS is not set
CONFIG_BTRFS_FS=m
CONFIG_BTRFS_FS_POSIX_ACL=y
# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
# CONFIG_BTRFS_DEBUG is not set
# CONFIG_BTRFS_ASSERT is not set
CONFIG_NILFS2_FS=m
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_FANOTIFY=y
# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_PRINT_QUOTA_WARNING=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=m
CONFIG_QFMT_V1=m
CONFIG_QFMT_V2=m
CONFIG_QUOTACTL=y
CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=m
CONFIG_CUSE=m
CONFIG_OVERLAY_FS=m
#
# Caches
#
CONFIG_FSCACHE=y
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE_HISTOGRAM=y
# CONFIG_FSCACHE_DEBUG is not set
# CONFIG_FSCACHE_OBJECT_LIST is not set
CONFIG_CACHEFILES=y
# CONFIG_CACHEFILES_DEBUG is not set
# CONFIG_CACHEFILES_HISTOGRAM is not set
#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_UDF_FS=m
CONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_TMPFS_XATTR=y
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_CONFIGFS_FS=y
CONFIG_MISC_FILESYSTEMS=y
CONFIG_ADFS_FS=m
# CONFIG_ADFS_FS_RW is not set
CONFIG_AFFS_FS=m
CONFIG_ECRYPT_FS=m
CONFIG_ECRYPT_FS_MESSAGING=y
CONFIG_HFS_FS=m
CONFIG_HFSPLUS_FS=m
# CONFIG_HFSPLUS_FS_POSIX_ACL is not set
CONFIG_BEFS_FS=m
# CONFIG_BEFS_DEBUG is not set
CONFIG_BFS_FS=m
CONFIG_EFS_FS=m
CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
CONFIG_JFFS2_SUMMARY=y
CONFIG_JFFS2_FS_XATTR=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_JFFS2_FS_SECURITY=y
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_LZO=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
# CONFIG_JFFS2_CMODE_NONE is not set
CONFIG_JFFS2_CMODE_PRIORITY=y
# CONFIG_JFFS2_CMODE_SIZE is not set
# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
CONFIG_UBIFS_FS=m
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
CONFIG_UBIFS_FS_LZO=y
CONFIG_UBIFS_FS_ZLIB=y
CONFIG_LOGFS=m
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_FILE_CACHE=y
# CONFIG_SQUASHFS_FILE_DIRECT is not set
CONFIG_SQUASHFS_DECOMP_SINGLE=y
# CONFIG_SQUASHFS_DECOMP_MULTI is not set
# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
# CONFIG_SQUASHFS_EMBEDDED is not set
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
CONFIG_VXFS_FS=m
CONFIG_MINIX_FS=m
CONFIG_OMFS_FS=m
# CONFIG_HPFS_FS is not set
CONFIG_QNX4FS_FS=m
CONFIG_QNX6FS_FS=m
# CONFIG_QNX6FS_DEBUG is not set
CONFIG_ROMFS_FS=m
# CONFIG_ROMFS_BACKED_BY_BLOCK is not set
# CONFIG_ROMFS_BACKED_BY_MTD is not set
CONFIG_ROMFS_BACKED_BY_BOTH=y
CONFIG_ROMFS_ON_BLOCK=y
CONFIG_ROMFS_ON_MTD=y
# CONFIG_PSTORE is not set
CONFIG_SYSV_FS=m
CONFIG_UFS_FS=m
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_UFS_DEBUG is not set
CONFIG_EXOFS_FS=m
# CONFIG_EXOFS_DEBUG is not set
CONFIG_F2FS_FS=y
CONFIG_F2FS_STAT_FS=y
CONFIG_F2FS_FS_XATTR=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_SECURITY=y
# CONFIG_F2FS_CHECK_FS is not set
CONFIG_ORE=m
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V2=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_NFS_SWAP=y
CONFIG_NFS_V4_1=y
CONFIG_NFS_V4_2=y
CONFIG_PNFS_FILE_LAYOUT=y
CONFIG_PNFS_BLOCK=m
CONFIG_PNFS_OBJLAYOUT=m
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
# CONFIG_NFS_V4_1_MIGRATION is not set
CONFIG_NFS_V4_SECURITY_LABEL=y
CONFIG_ROOT_NFS=y
CONFIG_NFS_FSCACHE=y
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
CONFIG_NFS_DEBUG=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
# CONFIG_NFSD_V4_SECURITY_LABEL is not set
# CONFIG_NFSD_FAULT_INJECTION is not set
CONFIG_GRACE_PERIOD=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_SUNRPC_BACKCHANNEL=y
CONFIG_SUNRPC_SWAP=y
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_SUNRPC_DEBUG=y
CONFIG_CEPH_FS=m
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS_POSIX_ACL=y
CONFIG_CIFS=m
# CONFIG_CIFS_STATS is not set
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
CONFIG_CIFS_ACL=y
CONFIG_CIFS_DEBUG=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
CONFIG_CIFS_FSCACHE=y
CONFIG_NCP_FS=m
CONFIG_NCPFS_PACKET_SIGNING=y
CONFIG_NCPFS_IOCTL_LOCKING=y
CONFIG_NCPFS_STRONG=y
CONFIG_NCPFS_NFS_NS=y
CONFIG_NCPFS_OS2_NS=y
# CONFIG_NCPFS_SMALLDOS is not set
CONFIG_NCPFS_NLS=y
CONFIG_NCPFS_EXTRAS=y
CONFIG_CODA_FS=m
CONFIG_AFS_FS=m
# CONFIG_AFS_DEBUG is not set
CONFIG_AFS_FSCACHE=y
CONFIG_9P_FS=m
CONFIG_9P_FSCACHE=y
CONFIG_9P_FS_POSIX_ACL=y
CONFIG_9P_FS_SECURITY=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_737=m
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
CONFIG_NLS_CODEPAGE_852=m
CONFIG_NLS_CODEPAGE_855=m
CONFIG_NLS_CODEPAGE_857=m
CONFIG_NLS_CODEPAGE_860=m
CONFIG_NLS_CODEPAGE_861=m
CONFIG_NLS_CODEPAGE_862=m
CONFIG_NLS_CODEPAGE_863=m
CONFIG_NLS_CODEPAGE_864=m
CONFIG_NLS_CODEPAGE_865=m
CONFIG_NLS_CODEPAGE_866=m
CONFIG_NLS_CODEPAGE_869=m
CONFIG_NLS_CODEPAGE_936=m
CONFIG_NLS_CODEPAGE_950=m
CONFIG_NLS_CODEPAGE_932=m
CONFIG_NLS_CODEPAGE_949=m
CONFIG_NLS_CODEPAGE_874=m
CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_ISO8859_6=m
CONFIG_NLS_ISO8859_7=m
CONFIG_NLS_ISO8859_9=m
CONFIG_NLS_ISO8859_13=m
CONFIG_NLS_ISO8859_14=m
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_KOI8_U=m
CONFIG_NLS_MAC_ROMAN=m
CONFIG_NLS_MAC_CELTIC=m
CONFIG_NLS_MAC_CENTEURO=m
CONFIG_NLS_MAC_CROATIAN=m
CONFIG_NLS_MAC_CYRILLIC=m
CONFIG_NLS_MAC_GAELIC=m
CONFIG_NLS_MAC_GREEK=m
CONFIG_NLS_MAC_ICELAND=m
CONFIG_NLS_MAC_INUIT=m
CONFIG_NLS_MAC_ROMANIAN=m
CONFIG_NLS_MAC_TURKISH=m
CONFIG_NLS_UTF8=m
CONFIG_DLM=m
CONFIG_DLM_DEBUG=y
#
# Kernel hacking
#
#
# printk and dmesg options
#
CONFIG_PRINTK_TIME=y
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_DYNAMIC_DEBUG=y
#
# Compile-time checks and compiler options
#
# CONFIG_DEBUG_INFO is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_READABLE_ASM is not set
CONFIG_UNUSED_SYMBOLS=y
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set
CONFIG_FRAME_POINTER=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
CONFIG_DEBUG_KERNEL=y
#
# Memory Debugging
#
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_HAVE_DEBUG_KMEMLEAK=y
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_VM is not set
CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_PER_CPU_MAPS is not set
# CONFIG_DEBUG_SHIRQ is not set
#
# Debug Lockups and Hangs
#
CONFIG_LOCKUP_DETECTOR=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_SCHED_STACK_END_CHECK is not set
CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_PREEMPT is not set
#
# Lock Debugging (spinlocks, mutexes, etc...)
#
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_LOCK_TORTURE_TEST is not set
CONFIG_TRACE_IRQFLAGS=y
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_PI_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_CREDENTIALS is not set
#
# RCU Debugging
#
# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_TORTURE_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=21
CONFIG_RCU_CPU_STALL_VERBOSE=y
# CONFIG_RCU_CPU_STALL_INFO is not set
# CONFIG_RCU_TRACE is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
# CONFIG_FAULT_INJECTION is not set
CONFIG_NOP_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_TRACER_MAX_TRACE=y
CONFIG_TRACE_CLOCK=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
CONFIG_GENERIC_TRACER=y
CONFIG_TRACING_SUPPORT=y
CONFIG_FTRACE=y
CONFIG_FUNCTION_TRACER=y
CONFIG_FUNCTION_GRAPH_TRACER=y
CONFIG_IRQSOFF_TRACER=y
# CONFIG_PREEMPT_TRACER is not set
CONFIG_SCHED_TRACER=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_TRACER_SNAPSHOT=y
CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y
CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
# CONFIG_PROFILE_ALL_BRANCHES is not set
CONFIG_STACK_TRACER=y
CONFIG_BLK_DEV_IO_TRACE=y
# CONFIG_KPROBE_EVENT is not set
CONFIG_UPROBE_EVENT=y
CONFIG_PROBE_EVENTS=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_FUNCTION_PROFILER=y
CONFIG_FTRACE_MCOUNT_RECORD=y
# CONFIG_FTRACE_STARTUP_TEST is not set
# CONFIG_TRACEPOINT_BENCHMARK is not set
# CONFIG_RING_BUFFER_BENCHMARK is not set
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
#
# Runtime Testing
#
# CONFIG_LKDTM is not set
# CONFIG_TEST_LIST_SORT is not set
# CONFIG_KPROBES_SANITY_TEST is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_RBTREE_TEST is not set
# CONFIG_INTERVAL_TREE_TEST is not set
# CONFIG_PERCPU_TEST is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_ASYNC_RAID6_TEST is not set
# CONFIG_TEST_STRING_HELPERS is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_TEST_LKM is not set
# CONFIG_TEST_USER_COPY is not set
# CONFIG_TEST_BPF is not set
# CONFIG_TEST_FIRMWARE is not set
# CONFIG_TEST_UDELAY is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
# CONFIG_KGDB_TESTS is not set
CONFIG_KGDB_KDB=y
CONFIG_KDB_KEYBOARD=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
# CONFIG_ARM_PTDUMP is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
CONFIG_OLD_MCOUNT=y
# CONFIG_DEBUG_USER is not set
CONFIG_DEBUG_LL=y
CONFIG_DEBUG_LL_UART_NONE=y
# CONFIG_DEBUG_ICEDCC is not set
# CONFIG_DEBUG_SEMIHOSTING is not set
# CONFIG_DEBUG_LL_UART_8250 is not set
# CONFIG_DEBUG_LL_UART_PL01X is not set
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
# CONFIG_DEBUG_UART_PL01X is not set
# CONFIG_DEBUG_UART_8250 is not set
# CONFIG_DEBUG_UART_BCM63XX is not set
CONFIG_UNCOMPRESS_INCLUDE="mach/uncompress.h"
CONFIG_EARLY_PRINTK=y
# CONFIG_OC_ETM is not set
# CONFIG_ARM_KPROBES_TEST is not set
# CONFIG_PID_IN_CONTEXTIDR is not set
# CONFIG_DEBUG_SET_MODULE_RONX is not set
#
# Security options
#
CONFIG_KEYS=y
# CONFIG_PERSISTENT_KEYRINGS is not set
# CONFIG_BIG_KEYS is not set
# CONFIG_ENCRYPTED_KEYS is not set
CONFIG_KEYS_DEBUG_PROC_KEYS=y
# CONFIG_SECURITY_DMESG_RESTRICT is not set
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_PATH=y
CONFIG_LSM_MMAP_MIN_ADDR=32768
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
# CONFIG_SECURITY_SMACK is not set
CONFIG_SECURITY_TOMOYO=y
CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set
CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init"
CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init"
CONFIG_SECURITY_APPARMOR=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
CONFIG_SECURITY_APPARMOR_HASH=y
CONFIG_SECURITY_YAMA=y
CONFIG_SECURITY_YAMA_STACKED=y
CONFIG_INTEGRITY=y
# CONFIG_INTEGRITY_SIGNATURE is not set
CONFIG_INTEGRITY_AUDIT=y
# CONFIG_IMA is not set
# CONFIG_EVM is not set
# CONFIG_DEFAULT_SECURITY_SELINUX is not set
# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
# CONFIG_DEFAULT_SECURITY_APPARMOR is not set
# CONFIG_DEFAULT_SECURITY_YAMA is not set
CONFIG_DEFAULT_SECURITY_DAC=y
CONFIG_DEFAULT_SECURITY=""
CONFIG_XOR_BLOCKS=m
CONFIG_ASYNC_CORE=m
CONFIG_ASYNC_MEMCPY=m
CONFIG_ASYNC_XOR=m
CONFIG_ASYNC_PQ=m
CONFIG_ASYNC_RAID6_RECOV=m
CONFIG_CRYPTO=y
#
# Crypto core or helper
#
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=m
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_PCOMP=m
CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_USER=m
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=m
# CONFIG_CRYPTO_MCRYPTD is not set
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_ABLK_HELPER=m
#
# Authenticated Encryption with Associated Data
#
CONFIG_CRYPTO_CCM=m
CONFIG_CRYPTO_GCM=m
CONFIG_CRYPTO_SEQIV=m
#
# Block modes
#
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=m
CONFIG_CRYPTO_CTS=m
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=m
#
# Hash modes
#
CONFIG_CRYPTO_CMAC=m
CONFIG_CRYPTO_HMAC=m
CONFIG_CRYPTO_XCBC=m
CONFIG_CRYPTO_VMAC=m
#
# Digest
#
CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_CRC32=m
CONFIG_CRYPTO_CRCT10DIF=y
CONFIG_CRYPTO_GHASH=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_RMD128=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RMD256=m
CONFIG_CRYPTO_RMD320=m
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA1_ARM=m
CONFIG_CRYPTO_SHA1_ARM_NEON=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_SHA512_ARM_NEON=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_WP512=m
#
# Ciphers
#
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_AES_ARM=m
CONFIG_CRYPTO_AES_ARM_BS=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_BLOWFISH_COMMON=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_CAST_COMMON=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_SALSA20=m
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
#
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=y
CONFIG_CRYPTO_LZ4=m
CONFIG_CRYPTO_LZ4HC=m
#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
# CONFIG_CRYPTO_DRBG_MENU is not set
CONFIG_CRYPTO_USER_API=m
CONFIG_CRYPTO_USER_API_HASH=m
CONFIG_CRYPTO_USER_API_SKCIPHER=m
# CONFIG_CRYPTO_HW is not set
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
CONFIG_BINARY_PRINTF=y
#
# Library routines
#
CONFIG_RAID6_PQ=m
CONFIG_BITREVERSE=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_IO=y
CONFIG_PERCPU_RWSEM=y
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
CONFIG_CRC_CCITT=m
CONFIG_CRC16=y
CONFIG_CRC_T10DIF=y
CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
# CONFIG_CRC32_SELFTEST is not set
CONFIG_CRC32_SLICEBY8=y
# CONFIG_CRC32_SLICEBY4 is not set
# CONFIG_CRC32_SARWATE is not set
# CONFIG_CRC32_BIT is not set
CONFIG_CRC7=m
CONFIG_LIBCRC32C=y
# CONFIG_CRC8 is not set
CONFIG_AUDIT_GENERIC=y
# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_LZ4_COMPRESS=m
CONFIG_LZ4HC_COMPRESS=m
CONFIG_LZ4_DECOMPRESS=y
CONFIG_XZ_DEC=y
# CONFIG_XZ_DEC_X86 is not set
# CONFIG_XZ_DEC_POWERPC is not set
# CONFIG_XZ_DEC_IA64 is not set
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_ARMTHUMB=y
# CONFIG_XZ_DEC_SPARC is not set
CONFIG_XZ_DEC_BCJ=y
# CONFIG_XZ_DEC_TEST is not set
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DECOMPRESS_LZO=y
CONFIG_DECOMPRESS_LZ4=y
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_BTREE=y
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT_MAP=y
CONFIG_HAS_DMA=y
CONFIG_CPU_RMAP=y
CONFIG_DQL=y
CONFIG_GLOB=y
# CONFIG_GLOB_SELFTEST is not set
CONFIG_NLATTR=y
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
CONFIG_LRU_CACHE=m
CONFIG_AVERAGE=y
CONFIG_CORDIC=m
# CONFIG_DDR is not set
CONFIG_LIBFDT=y
CONFIG_OID_REGISTRY=y
CONFIG_FONT_SUPPORT=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
# CONFIG_ARCH_HAS_SG_CHAIN is not set
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_KVM_MMIO=y
CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=y
CONFIG_KVM_ARM_HOST=y
CONFIG_KVM_ARM_MAX_VCPUS=4
# CONFIG_KVM_ARM_VGIC is not set
CONFIG_KVM_ARM_VGIC_EMU=y
CONFIG_KVM_ARM_TIMER=y
This page shall be describing how to run Debian nicely on the RaspberryPi2. Many of the problems affecting the RaspberryPi
also affect the RaspberryPi2 - but let's devote this page to making the
machine usable with Debian Jessie (and soon Stretch) using two
approaches:
the non-free binary blob for the GPU
the free driver in development
I'm planing to extend this page with instructions for both approaches soon.
Apart from being somewhat slow, one of the downsides of the
original Raspberry Pi SoC was that it had an old ARM11 core which
implements the ARMv6 architecture. This was particularly
unfortunate as most common distributions (Debian, Ubuntu, Fedora,
etc) standardized on the ARMv7-A architecture as a minimum for
their ARM hardfloat ports. Which is one of the reasons for Raspbian
and the various other RPI specific distributions.
Happily, with the new Raspberry Pi
2 using Cortex-A7 Cores (which implement the ARMv7-A
architecture) this issue is out of the way, which means that a a
standard Debian hardfloat userland will run just fine. So the
obvious first thing to do when an RPI 2 appeared on my desk was to
put together a quick Debian Jessie image for it.
Login as root with password debian (Obviously do change the
password and create a normal user after booting). The image is 3G,
so should fit on any SD card marketed as 4G or bigger. Using
bmap-tools
for flashing is recommended, otherwise you'll be waiting for 2.5G
of zeros to be written to the card, which tends to be rather
boring. Note that the image is really basic and will just get you
to a login prompt on either serial or hdmi, batteries are very much
not included, but can be apt-getted :).
Technically, this image is simply a Debian Jessie debootstrap
with a extra packages for hardware support. Unlike Raspbian the
first partition (which contains the firmware & kernel files to
boot the system) is mounted on /boot/firmware rather then on /boot.
This is because the VideoCore expects the first partition to be a
FAT filesystem, but mounting FAT on /boot really doesn't work right
on Debian systems as it contains files managed by dpkg (e.g. the
kernel package) which requires a POSIX compatible filesystem.
Essentially the same reason why Debian is using /boot/efi for the
ESP partition on Intel systems rather the mounting it on /boot
directly.
For reference, the RPI2 specific packages in this image are from
https://repositories.collabora.co.uk/debian/
in the jessie distribution and rpi2 component (this repository is
enabled by default on the image). The relevant packages there
are:
linux: Current 3.18 based package from Debian experimental
(3.18.5-1~exp1 at the time of this writing) with a stack of patches
on top from the raspberrypi github
repository and tweaked to build an rpi2 flavour as the patchset
isn't multiplatform capable
raspberrypi-firmware-nokernel: Firmware package and misc
libraries packages taken from Raspbian, with a slight tweak to
install in /boot/firmware rather then /boot.
flash-kernel: Current flash-kernel package from debian
experimental, with a small addition to detect the RPI 2 and "flash"
the kernel to /boot/firmware/kernel7.img (which is what the GPU
will try to boot on this board).
For the future, it would be nice to see the Raspberry Pi 2
support out of the box on Debian. For that to happen, the most
important thing would be to have some mainline kernel support for
this board (supporting multiplatform!) so it can be build as part
of debians armmp kernel flavour. And ideally, having the firmware
load a bootloader (such as u-boot) rather than a kernel directly to
allow for a much more flexible boot sequence and support for using
an initramfs (u-boot has some support for the original Raspberry
Pi, so adding Raspberry Pi 2 support should hopefully not be too
tricky)
Update: An updated image (20150705)
is available with the latest packages from Jessie and a GPG key
that's not expired :).
I'm really pleased to see that you're trying to integrate the RPi
hardware support with Debian's packages. I'm especially impressed
you've already rebased onto 3.18.5.
Comment by
Ben Hutchings
- Tue Feb 3 17:40:43 2015
Ben, I can't take the credit for it being based on 3.18.x
already, the raspberry pi github was already 3.18.5 based so i just
had to add those patches to the Debian kernel package and tweak it
a tiny bit.
Nickolai, Debian Jessie is in hard freeze even if these packages
were acceptable for Debian (which at least the kernel one is not
imho), it is too late for Jessie. Hopefully for Stretch RPI2 will
be supported out of the box.
Samat, No i didn't bother writing a script to generate the
image. It's rather simple though:
debootstrap a standard debian armhf chroot
add the repository mentioned in the post and install the
packages mentioned there
add config.txt and cmdline.txt in /boot/firmware from the
standard rpi image
create an image file starting with a fat partition (and put the
content from /boot/firmware on it) and an ex4 partition and put
every else on it
update etc/fstab to mount the two partitions on respectively
/boot/firmware and /
set a password for root (or alterntively create a new user with
sudo rights and install sudo)
done!
At some point this will probably get automated, but it wasn't
important for me now.
Hi, I wanted to thank you very much for this release. I got my Pi2
yesterday and for some reason official Ubuntu Snappy does not work
for me apart from logging from console. So I searched around and
downloaded your image and it works and it is PRETTY DAMN FAST!!!
Thank you so much for it. I would love if this became a supported
distro for Pi2!!!
For everyone who had problems running it on the rp2 a simple
solution is to use the bmap-tools to copy the image (as the author
says) on the sd instead of any other programs. The procedure that
worked for me was:
Download and extract the jessie-rpi2-20150202.img.gz to get an
.img file
On any debian-based linux type "sudo apt-get install
bmap-tools" and install it.
Then type "sudo bmaptool copy --nobmap
'yourlocation/jessie-rpi2.img' /dev/sdx" (Change yourlocation to
the location of the .img file and sdx for the letter where the SD
is mounted, if you don't know it type "sudo fdisk -l" and look for
it).
Wait until it finishes and then put the SD on your rp2.
Actually this port is pretty damm fast, it seems a clearly
replacement for our lovely Raspbian
I don't suppose there is a write up of what you did anywhere - I'd
like to be able to do my own network install (with the mimimum
number of packages). Plan on looking to see if I can adapt the
raspbain network instal image or the raspbian installer when I get
time. Thanks for showing it is possible.
Turns out you can get this running with just Win32DiskImager!
You just need to unzip the .GZ archive and write the image to your
sd card like you would with a normal raspbian distro. When you get
to the command line just run apt-get install task-lxde-desktop to
get a basic desktop running, it will take a long time to install.
If the screen goes blank just press a key on your keyboard as the
hdmi output of the pi loves to go idle.
After several downloads a few bouts of configuration pages you
should get to a full fat desktop! You will then want to edit the
config.txt in the /boot/firmware folder to disable overscan (then
reboot) and you will also want to expand your primary partition to
use all the space on your SD card or you won't have anything to
spare:
I know this all works because I'm writing from a Pi 2 with
debian on it right now! I still need to get sound working but this
is great, thanks to the OP!
Hey Vitali! About your wifi issue. You might need to install
firmware for your usb wifi adapter. This worked for me:
Add Jessie repositories for contrib and non-free.
nano /etc/apt/sources.list
deb http://ftp.debian.org/debian jessie main contrib non-free
apt-get update
Identify your hardware:
apt-get install usbutils
lsusb
My wifi showed up as realtek RTL8188CUS
Install firmware:
apt-get install firmware-realtek
If not sure, use a sledgehammer to crack a nut:
apt-get install firmware*
Configure the network
apt-get install wicd-curses
wicd-curses
Highlight your ssid and tap right-arrow. Enable "automatically
connect to this network", enter the secret key and tap F10 to
finish. Highlight wired networks and tap (uppercase) D to
disconnect. Highlight your ssid again and tap Enter to connect. Tap
Q to exit.
Check for a connection:
ping bbc.co.uk
Reboot to check persistence ie that interface comes up
automatically.
You may wish to install ssh in order to run headless.
apt-get install ssh
Good luck - Chris
Comment by
Untrammelled
- Sat Feb 21 17:58:54 2015
How is the performance compared to Raspbian, same? Is the tools
to expand the partition to use the entire SD card included?
I don't suppose, that I can just use dist-upgrade the kernel
after installation? I am thinking about security here - I like to
always have the most up-to-date system.
3.18.7 applies nearly cleanly on top of 3.18.5 + BCM2709
patches, if you want to produce an updated kernel. My 3.18.0-14.15
kernel is based upon vivid's 3.18.0-14.15 kernel, which is based on
3.18.7.
The firmware in the raspberrypi-firmware-nokernel package is
ancient (relatively speaking) from December, and is probably
causing some of the problems in the comments here. The activity LED
not working is definitely one of them.
I've adopted your change of putting the firmware in
/boot/firmware. Hopefully that sticks, as it's a good idea.
I've split raspberrypi-firmware-nokernel (previously binary
bootloader firmware + binary userland utils in /opt/vc) into
raspberrypi-firmware-nokernel (which now just has the firmware) and
raspberrypi-vc (which compiles the userland utils / libraries from
source and installs them "properly" in /usr).
I've packaged xserver-xorg-video-fbturbo, for faster window
move/scroll operations on the Raspberry Pi. The packaging is based
on xserver-xorg-video-fbdev from trusty, but should be portable to
jessie with little/no modification.
Juan: If you're in the directory that you downloaded all 3 files
to (and have "bmap-tools" installed -- as suggested using "apt-get
install bmap-tools" on a Debian based system), the following
command is enough:
where sdX is your SD card's device (and you don't need the
"sudo" if you're root already) of course.
Using bmaptool is really a time saver and it is pretty clever in
discovering the *.bmap file and extracting the *.gz automagically
prior to writing the image file to the SD card.
Great work ! I bmapped the image to a 16gb stick, booted the
rpi, then did "apt-get install xbmc gnome"! Ran into space issues
(the partitions are for a 4GB stick) so i resized the partition and
the filesystem on the fly without rebooting and continued apt-get.
So now i have a full xorg and gnome install.
However, on reboot GDM seems to start, but only presents a black
screen, no login box or anything.
I installed this as my first raspberry OS and it works great. I
have a gcc 4.9.2 development environment up and running. But now I
want to enable the perfomance counter and for that I need to make a
kernel module, I know little more than the guides on the web
provide but to get things right, I need the kernel sources. Do I
need the patched sources you built from, and in that case may I
have them? I understand if you don't have an answer...
Anders, it looks like the kernel is packaged in the regular Debian
way. To get the full kernel source, you can apt-get install
linux-source-3.18, which puts a source tarball in /usr/src. To get
just the headers (which usually suffices to build a kernel module),
you can apt-get install linux-headers-3.18. That puts the headers
in the place where they're found by the usual module-building
process.
You have done a very good job!I now have been working with it
some days. But is there a Descrption how to get the Act-Led still
working without building a new SD-image ? ? What has to be updated
on the SD-image ? What files ? I think noone needs to use the
bitmap-tools. To copy the 3M-image bit by bit took me about 10
Minutes with Rasbian and my RPI-2. you than can expand the image
with fdisk or Gparted. I installed the mate-desktop-environment
together with lightDM and it seems to be perfect for this image on
RPI-2. Jessie with mate-desktop seems to be something faster than
Ubuntu 14.04 with XFCE so I will stay at Jessie with Mate. I
managed to install the Chromium-Webbrowser 37.xxx together with the
Pepperflashplayer-Plugin an it also runs perfect. I refered to this
link here:
in now could manage to get the newest firmware and ACT led is
working. For a quick solution I installes andrew Hessets udate
script which is in Rasbian and can be started with "rpi-update" To
install the script please type or copy this commands in a
terminal
Now the script has written the new files to ./boot directory but
we need them under .boot/firmware
you have to move now all new files from ./boot to
./boot/firmware. The old files there have to be replaced with the
new ones. If done so make a reboot.
Now the act-led should blink again.
Later we should update Andrews script for us with the right
download directory.
Hi Jeff, thanks for the pointers. Installing the headers using
apt-get was not possible. But I got the source instead, unpacked
it, ran make modules_prepare and pointed the makefile to the kernel
source root. I can now build a kernel module that I can force feed
the kernel with modprobe -f, I am close to success...
There are some things still missing in this image.
First you need the alsa-utils:
apt-get install alsa-utils
Configure the output to go to 3,5mm jack:
amixer cset numid=3 1
Than load modprobe:
modprobe snd_bcm2835
If all is done you should have sound on 3,5mm jack.
If you want sound on hdmi outut:
amixer cset numid=3 2
This modprobe and others should be loaded already at boot.
Configuration should be possible at ./etc/modprobe.d Maybe one can
refer to the already existing settings at Rasbian.
on initial boot... after apt-get update && apt-get
upgrade...
Setting up initramfs-tools (0.119) ... update-initramfs:
deferring update (trigger activated) Processing triggers for
initramfs-tools (0.119) ... update-initramfs: Generating
/boot/initrd.img-3.18.0-trunk-rpi2 Unsupported platform. run-parts:
/etc/initramfs/post-update.d//flash-kernel exited with return code
1 dpkg: error processing package initramfs-tools (--configure):
subprocess installed post-installation script returned error exit
status 1 Errors were encountered while processing: initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1) -- Is this
to be expected ?
root@jessie-rpi:~# apt-get install linux-headers-3.18 Reading
package lists... Done Building dependency tree
Reading state information... Done Note, selecting
'linux-headers-3.18.0-trunk-all-armhf' for regex
'linux-headers-3.18' Note, selecting
'linux-headers-3.18.0-trunk-rpi2' for regex 'linux-headers-3.18'
Note, selecting 'linux-headers-3.18.0-trunk-all' for regex
'linux-headers-3.18' Note, selecting
'linux-headers-3.18.0-trunk-common' for regex 'linux-headers-3.18'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming. The following information may help
to resolve the situation:
The following packages have unmet dependencies:
linux-headers-3.18.0-trunk-rpi2 : Depends: linux-kbuild-3.18 but it
is not installable E: Unable to correct problems, you have held
broken packages. ---seems trying to install headers does not work
as previously stated?
I encountered the same problem as Spencer above. Everything
worked fine until I did an apt-get update & upgrade after which
I got the same error messages as above. Not sure what to do about
this. Everything worked beautifully before.
I ran into the same problem as above when upgrading the image.
The short term problem is that flash-kernel 3.33 does not recognize
the RPI2.
A temporary fix is to hold back flash-kernel to 3.31 until 3.33
is fixed. Do "apt-mark hold flash-kernel" before you upgrade. After
it is fixed you can lift the hold with "apt-mark unhold
flash-kernel"
Steve
Comment by
Steve Zingman
- Fri Mar 13 01:50:24 2015
It seems that flash-kernel gets updated to main version instead
of the collabora one. You can downgrade (and hold), but it might be
useful to pin the collabora repo to a high enough priority. Someone
might post a helpful file.
You can have the Hexxeh rpi-update tool update a different
directory with BOOT_PATH and ROOT_PATH environment variables. They
default to / and /boot, so I should just be able to set them to /
and /boot/firmware right?
Also I wasn't able to get OC working on this image. My Pi
refused to go any faster than 800Mhz.
For those having issues with upgrading due to flash-kernel, the
flash-kernel package in the collabora repositories has been rebased
on the version in jessie which should solve the problem
What is the difference between Debian Jessie and Raspbian Jessie
(get it by taking Raspbian Wheezy and change sources.lst to
jessie), other than the fact that Raspbian delivers rpi specific
packages already? I'm using Raspbian Jessie for two weeks now and
it seems to have all the same package versions just like Debian
Jessie. I'm running on an "old" Pi B, however (fully headless, too,
so no GUI related stuff whatsoever installed). I'm thinking of
getting a RPi2, will there be any benefit of using Debian Jessie
instead of Raspbian Jessie?
I just upgraded firmware and still xbmc from debian repos will
not run due to missing OpenGL support. What i do not understand is
that in the debian xbmc source makefile it automatically uses
opengles compile parameters on ARM platforms, so it seems its
actually compiled the right way.
This guy has working kodi on debian jessie on rpi2:
http://www.raspberrypi.org/forums/viewtopic.php?f=56&t=101831
I installed it and it just works. Its version 14.1 so its newer
than jessies 13.2 but he seems not to want to disclose how he did
it. I would really prefer a straight debian install like we discuss
here, with just kernel and a few other packages not from the repos,
if we could just get xbmc/kodi running....
Is there a way to get EGL working (e.g. for clutter
or qtquick based things to work)? There is
libraspberrypi0 package, but it seems most libraries
pull in and use Mesa, which leads to failure starting anything.
Example hello worlds:
$ qml -qt5 test4.qml
libEGL warning: GLX/DRI2 is not supported
libEGL warning: DRI2: failed to authenticate
Unable to find an X11 visual which matches EGL config 77
Could not initialize OpenGL
Aborted
$ ./testclutter.py
libEGL warning: GLX/DRI2 is not supported
libEGL warning: DRI2: failed to authenticate
(testclutter.py:6885): Clutter-CRITICAL **: Unable to initialize Clutter: Unable to eglMakeCurrent with no surface
Segmentation fault
If you're having trouble installing linux-kbuild-3.18, it's in
the experimental release of debian. Just add the following line to
/etc/apt/sources.list:
deb http://ftp.debian.org/debian experimental main
For (my) reference, I have been able to successfully run
outofthebox omxplayer
(omxplayer_0.3.6~git20150319~7c752d3_armhf.deb) after installing
the following :
libraspberrypi0:armhf 1.20141219-1~nokernel1.co1+b3
libraspberrypi-bin:armhf 1.20141219-1~nokernel1.co1+b3
(and of course the omxplayer dependency)
gpu_mem=192
I wonder when the latest firmware that supports gpu_mem_1024 is
going to be released on the repository ? Working great !
Just be warned you'll need to have the additional raspberry pi
stuff from the collabora repository: I didn't have them installed
on my image and apt-get couldn't find them, so I had to wget and
install manually...
SSH keys are included in the image, which is insecure. It means
that anyone can who has access to your network can impersonate your
specific Raspberry Pi, which is one of the things that SSH is
designed to prevent.
As a workaround, users can remove the existing keys:
sudo rm /etc/ssh/ssh_host_*_key*
And then regenerate their own unique keys:
sudo dpkg-reconfigure openssh-server
If you've ssh'd to your Raspberry Pi previously, you'll get a
warning or error about the key having been changed. On your client
machine, remove the entries in ~/.ssh/known_hosts listing your
Raspberry Pi's old key to rectify this.
Comment by
J.P. Larocque
- Wed Apr 8 00:18:10 2015
Thanks for your work and building an Image based on Debian
jessie.
i've recreated my own Repository and added some packages for my
own system. so u can also this repo. http://debian.gunah.eu/debian/
i've provid also a new version of flash-kernel (with your patch),
because i got an issue with "Unsupported Platform".
About the Problem of some user with the serial of the raspberry
pi, i've used the original raspbian to find it out.
To install the linux-headers-3.18.0-trunk-rpi2 package, you have
a dependency on the virtual package linux- kbuild - 3.18. This
package come from experimental Debian
repositories. You must add them to the end of sources.list file and
adjust the priority of those repositories.
pardon my giant text but I had to do it to be heard over the last
guy. it's not safe, see what support says about it:
http://ircbots.debian.net/factoids/factoid.php?key=dmm
sjoerd, the version of flash-kernel in jessie overtook the
version in your repo. please bumb the version. for now I will use
apt pinning as a work around.
I have downloaded the Debian image from
https://images.collabora.co.uk/rpi2/ and am very impressed with the
way it my webserver. On my RPI2's I also have the Raspberry Pi
camera module which work perfectly under Raspian but I do not know
what is needed or the steps to make it work under this pure Debian
environment. I would be very grateful if someone could explain the
steps required to get it working. Ultimately I want to steam video
to a web page (not using VLC) in html. Regards Chris Bussey
Comment by
Chris Bussey
- Sun Apr 26 19:32:20 2015
My notes say you can get the camera working (at least in some way)
by adding the line start_x=1 to
config.txt (see note about location above). Then you
can load the module bcm2835-v4l2.
CHANGE HOSTNAME (see also
https://wiki.debian.org/HowTo/ChangeHostname)
'grep -R jessie-rpi /etc/*' check which files you need to
edit
'vi /etc/hostname' edit the hostname in /etc/hostname
'vi /etc/hosts' edit the hostname in /etc/hosts
'dpkg-reconfigure exim4-config' reconfigure exim4
'reboot' reboots the system
PREVENT PACKAGE FLASH-KERNEL UPDATING FROM OFFICIAL REPO
WITH APT PINNING
'touch /etc/apt/preferences.d/flash-kernel' create a new file
'vi /etc/apt/preferences.d/flash-kernel' edit it an add the
following lines to it:
Package: flash-kernel
Pin: origin repositories.collabora.co.uk
Pin-Priority: 1000
'apt-cache policy flash-kernel' check if the package is
pinned
GENERATE NEW SSH KEYS (from
http://sjoerd.luon.net/posts/2015/02/debian-jessie-on-rpi2/#comment-4c4e1defb59a765819781eddc928fd6d)
'rm /etc/ssh/ssh_host_*_key*' remove the old ones
'dpkg-reconfigure openssh-server' create new ones
RECONFIGURE LOCALES AND TIMEZONE
'dpkg-reconfigure locales'
'dpkg-reconfigure tzdata'
ACTIVATE ADDITIONAL REPOS
'vi /etc/apt/sources.list' open editor and add the following:
deb http://ftp.us.debian.org/debian/ jessie contrib non-free
deb http://security.debian.org/ jessie/updates main contrib
non-free
deb http://ftp.us.debian.org/debian/ jessie-updates main contrib
non-free
NOW YOU CAN SAFELY UPDATE THE SYSTEM
'apt-get update'
'apt-get upgrade'
I've instaled it without problem. But when I try to configure
the keyboard to my localization, it does not work.
I do: dpkg-reconfigure keyboard-configuration and
all is ok. But when I finished, there were two warnings about some
"invoke-rc deprecated mode" (or similar) and the keyboard
arrangement didn't change.
After this I tried service keyboard-setup start but
nothing happens: I get stucked in English keyboard, and it is a
mess to keep track of many symbols.
I tested the image in various ways (I mean various burn image
& boot) and it hangs after some time up (some hours). For the
symptomps seems more a software lock than a hardware issue, as in
all cases I'm able to ping the Pi and even TCP-connect via SSH (but
not getting prompt), even serial console don't show me the login
prompt.
On my first install, I upgraded packages and reconfigured some
settings so I supossed I made some mistake/error (as the settings
were from wheezy/sysvinit) which made the system unable to work as
expected.
But on my second try, I simply wrote the image to the SD and
booted the pi2, leaving it up for some hours, so no
changes/upgrades of flash-kernel done on the image, nothing no
changes.
I left some sessions logged (via serial and via SSH) and wait to
things happen.
After some hours I found that the load is starting to increase
(3, 5, 7 and up to 10 when finnally got fully unresponsive). During
that I tried to check for top/dmesg output but that commands hang
simply sitting down there, although other commands (free, ps, ..)
work. (ps doens't show any process eating too much CPU).
As I still had access (when load was below 10), I preferred to
reboot and start again to monitor the issue, but voila:
root@tessa:~# reboot
Failed to start reboot.target: Connection timed out
Broadcast message from root@tessa on pts/1 (Thu 2015-05-21
08:27:49 UTC):
Seems the GPG keys for the collabora repository have expired
(from apt-get update)
Reading package lists... Done W: An error occurred during the
signature verification. The repository is not updated and the
previous index files will be used. GPG error:
https://repositories.collabora.co.uk jessie InRelease: The
following signatures were invalid: KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1401577200 KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1433150817 KEYEXPIRED 1433150817 KEYEXPIRED
1401577200 KEYEXPIRED 1433150817
W: Failed to fetch
https://repositories.collabora.co.uk/debian/dists/jessie/InRelease
W: Some index files failed to download. They have been ignored,
or old ones used instead.
An error occurred during the signature verification. The repository
is not updated and the previous index files will be used. GPG
error: https://repositories.collabora.co.uk jessie InRelease: The
following signatures were invalid: KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1401577200 KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1433150817 KEYEXPIRED 1433150817 KEYEXPIRED
1401577200 KEYEXPIRED 1433150817
First I must say, very good job. I've had no problems at all
with that image on my new RPI2. All things I need for my project
are working as expected. Thanks a lot for that.
I just want to update the PI with apt-get update ... It says ERR
https://repositories.collabora.co.uk/debian/
And at the end:
W: An error occurred during the signature verification. The
repository is not updated and the previous index files will be
used. GPG error: https://repositories.collabora.co.uk jessie
InRelease: The following signatures were invalid: KEYEXPIRED
1433150817 KEYEXPIRED 1433150817 KEYEXPIRED 1401577200 KEYEXPIRED
1433150817 KEYEXPIRED 1433150817 KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1401577200 KEYEXPIRED 1433150817
I'm pretty bad when it comes to apt and security, I failed
miserably with gpg and apt-key usual
commands. In the end, I downloaded and installed manually the
latest keyring package from Collabora. It may not be the right way
to do it, but it works like a charm now.
Just wanted to report this is still working after updating to
8.1 (with flash-kernel pinned as above).
Only issue is the apt key for your repo has expired (and is
registered to an @example.com email address!)... Could these be
updated/signed properly please?
There is a mismatch in the repository about the version of
flash-kernel (at least). The one actually present is much more
recent that the one advertised in the list.
Seems there is a problem in one of the default sources:
Reading package lists... Done W: An error occurred during the
signature verification. The repository is not updated and the
previous index files will be used. GPG error:
https://repositories.collabora.co.uk jessie InRelease: The
following signatures were invalid: KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1401577200 KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1433150817 KEYEXPIRED 1433150817 KEYEXPIRED
1401577200 KEYEXPIRED 1433150817
W: Failed to fetch
https://repositories.collabora.co.uk/debian/dists/jessie/InRelease
Seems there is a problem in one of the default sources:
Reading package lists... Done W: An error occurred during the
signature verification. The repository is not updated and the
previous index files will be used. GPG error:
https://repositories.collabora.co.uk jessie InRelease: The
following signatures were invalid: KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1401577200 KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1433150817 KEYEXPIRED 1433150817 KEYEXPIRED
1401577200 KEYEXPIRED 1433150817
W: Failed to fetch
https://repositories.collabora.co.uk/debian/dists/jessie/InRelease
doing an apt-update it complains about invalid signatures and
expired keys:
W: An error occurred during the signature verification.
The repository is not updated and the previous index files will be used.
GPG error: https://repositories.collabora.co.uk jessie InRelease:
The following signatures were invalid: KEYEXPIRED 1433150817 KEYEXPIRED 1433150817
KEYEXPIRED 1401577200 KEYEXPIRED 1433150817 KEYEXPIRED 1433150817 KEYEXPIRED 1433150817
KEYEXPIRED 1433150817 KEYEXPIRED 1401577200 KEYEXPIRED 1433150817
I tried to get new keys but I do not know where to get them.
Using 'apt-key net-update' didn't work. I have the impression that
those keys turned invalid only few days before...
Could you please help me to get valid keys for:
repositories.collabora.co.uk jessie InRelease
I've been using the image and updating it without issue since
February. Recently on running apt-get update I've been getting an
error with the repository as follows:
Hit http://ftp.debian.org jessie InRelease
Hit http://ftp.debian.org jessie/main armhf Packages Hit
http://ftp.debian.org jessie/main Translation-en Get:1
https://repositories.collabora.co.uk jessie InRelease Get:2
https://repositories.collabora.co.uk jessie InRelease [2,707 B] Err
https://repositories.collabora.co.uk jessie InRelease
Fetched 2,707 B in 19s (140 B/s)
Reading package lists... Done W: An error occurred during the
signature verification. The repository is not updated and the
previous index files will be used. GPG error:
https://repositories.collabora.co.uk jessie InRelease: The
following signatures were invalid: KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1401577200 KEYEXPIRED 1433150817 KEYEXPIRED
1433150817 KEYEXPIRED 1433150817 KEYEXPIRED 1433150817 KEYEXPIRED
1401577200 KEYEXPIRED 1433150817
W: Failed to fetch
https://repositories.collabora.co.uk/debian/dists/jessie/InRelease
W: Some index files failed to download. They have been ignored,
or old ones used instead.
I was looking for a good linux distro to use my RPI2 as a
server, but all the other ones are bloated, or don't have good
sources. All I had to do was use rufus to burn this to my MicroSD
card, pop it in to my RPI2, and SSH into it. I changed the sources
to the standard jessie list, ran apt-get update, then upgrade, now
I have a surprisingly fast, cheap, mini server. ProFTPd-basic is
super fast and awesome. Nginx and php5-fpm run flawlessly. And I
can use it as an RTMP server too. So much value for the $. Thanks
for the distro.
I've just installed my second RPI2 with current image
jessie-rpi2-20150705.img.gz on the weekend. I saw that
"trusted=yes" is set on Sjoerd's repository in
/etc/apt/sources.list. I strongly recommend to remove this setting.
I've already emailed Sjoerd about this. He will generate a fresh
image. Thank you in adavance
I just ran into the same issue. The image is using
systemd-timesyncd for time synchronization. Yet, I couldn't find
out what's causing the problem, as systemd-timesyncd is running and
seems to be confgured properly.
Raspbian Jessie Lite - the Minimal image based on Debian Jessie
on official RPi site (
https://www.raspberrypi.org/downloads/raspbian/ ) looks like our
image here.
Did anyone compare the official image and the one of this site?
Sjoerd what do you think?
I solved the "time sync problem" a few weeks ago: It has been a
hardware issue for me. I thought it had to be a timesync issue
because my Pi was pingable but not reacting to https and ssh
anymore (http wasn't active). As I posted before, systemd-timesync
was configured properly. When I tried getting help on IRC, someone
suggested to check hardware related stuff. He was right
I appreciate to hear comments and/or test results if anybody
already tested or plan to use this excellent debootstrap on the new
RPi 3. Does it work good as it does on RPi 2? What differs?
As far as I could recall, I changed the string "file=solydxrpi_201606.img" to
"file=2016-05-27-raspbian-jessie.img", we can successfully boot Rpi2 4.4.X.
However, not native Rpi2, we simulate it as rpi (-M versatilepb -cpu arm1176).
Don't forget to uncomment the only line in /etc/ld.so.preload. Otherwise,
kernel panic.
[ 7.498620] sdhost-bcm2835 3f202000.sdhost: no support for card's volts
[ 7.499638] mmc0: error -22 whilst initialising SDIO card
[ 7.503127] sdhost-bcm2835 3f202000.sdhost: no support for card's volts
[ 7.504709] mmc0: error -22 whilst initialising MMC card
Fixes:
$ cd devuan-boot;
$ mv bcm2709-rpi-2-b.dtb bcm2709-rpi-2-b.dtb-4.1.21
# In another xterm
$ cp 2016-03-18-raspbian-boot/bcm2709-rpi-2-b.dtb /tmp/devuan-rpi/devuan-boot/bcm2709-rpi-2-b.dtb-4.1.19
# In fact, I stole this dtb file from bcm2709-rpi-2-b.dtb-2015-11-21. The original
# 2016-03-18-raspbian-boot/bcm2709-rpi-2-b.dtb.orig also failed to boot rpi2.
$ ln -s bcm2709-rpi-2-b.dtb-4.1.19 bcm2709-rpi-2-b.dtb; cd ..
username: root
password: toor
During System booting: hang at: [ ok ] Starting slim: slim.
Emulation is a necessary aspect of embedded system development and
QEMU is the right open source tool to do so for linux based SBCs.
To emulate RPi on QEMU, you will need these two files.
RPi kernel,
RPi rootfs (which would be a second portion of official .img file).
If you want to emulate newer jessie images with 4.1.x kernel from this repo, you should prepare your image as per given on this Emulating-Jessie-image-with-4.x.xx-kernel.
To emulate Jessie image with 4.x.xx kernel in this repo,
steps differ slightly compared to a lot of (and standard) wheezy
emulating guides on the internet.
In order to prepare your image for the first time, you will need a
Linux box (or any other OS that can mount an ext4 file from a .img file).
I'm assuming that you have:
Latest jessie image
4.x.xx qemu-kernel for versatilepb.
Steps:
fdisk -l <image-file>. It should show output like this one :
Disk 2015-11-21-raspbian-jessie.img: 3.7 GiB, 3934257152 bytes, 7684096 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xea0e7380
Device Boot Start End Sectors Size Id Type
2015-11-21-raspbian-jessie.img1 8192 131071 122880 60M c W95 FAT32 (LBA)
2015-11-21-raspbian-jessie.img2 131072 7684095 7553024 3.6G 83 Linux
The filesystem (.img2) starts at sector 131072, which equals 512 *
131072 = 67108864 bytes. Use this as the offset, ie. mount -v -o offset=67108864 -t ext4 your-image-file.img /path/to/mnt/
cd /path/to/mnt
sudo nano ./etc/ld.so.preload
Comment out every entry in it, Ctrl-x >> Y to save and exit
sudo nano ./etc/fstab
Comment out entries containing /dev/mmcblk, Ctrl-x >> Y to save and exit
cd ~
sudo umount /path/to/mnt
Once done with these changes, you can emulate it on Qemu by:
Last line of the article is "And that's it, now you can extract the full potential of your Raspberry Pi 2!"
Can someone explain this to me? I know almost nothing about virtualization, but isn't it be definition slower than straight up OS install?
I think that "full potential" means he enable hardware-assited virtualization feature (ARM VE) and porting KVM/ARM on raspberry Pi2. You know, when you got any ARM boards, vendor always hide the hardware-assited virtualization feature because in normal development processes (i.e., linux, RTOS and android), you don't need to use the feature. Therefore, they always provide BSP (board support package) for normal development. If you want to use hardware-assisted virtualization feature for ARM Board, you must modify firmware or bootloader to enable HYP mode. Do you want to know how the board boot with HYP mode, you need to study about ARM boot procedure.
Anyway, as you know, virtualization give us some benefits e.g. supporting multiple os onto single platform but give us some drawbacks e.g. performacen degradation. This is the fact and it make us to use virtualizaion uncomfortably way in terms of performace. Sometimes, however, system have to work long time without downtime, for example, factory automation. Those kind of system, they don't consider performance of system, they only consider how long can system work or reducing downtime without human intervention (It's unpredictable behavior). In this case, virtualization offers many benefits.
I have not tested it myself, but this is some remarkable job! Thanks for your awesome work :)!
Thanks!
Thats a great article, thanks. Would it be possible to do the opposite in cpu isolation that you did and dedicate 1 core to the native kernel and interropts and have 3 cores for virtualisation? This way it would be feasable to have more that one VM running...
Sure, you can use something like
isolcpus=1,2,3
on your/boot/cmdline.txt
. You'll need to tweak QEMU a little too, to be able to specify which core you want to use from the command line (in my patch, the core number is hardcoded).Hi,
Ok to use multi core for several VM instance. But how to allow a single VM to use several cores. Even if I specify several cores with the smp option when qemu is launching, only one core is used by the VM !
Thanks
Ninja mastery at play. Great article and good examples. What next?
The RPi2 has ARM JTAG on the GPIOs.
Awesome tutorial. I failed initially to configure networking, but with some qemu net nic,tap hacks it finally worked, following all your steps.
Would you have the details on how you got the networking working on the QEMU image?
I got opensuse to boot but without the -net tap option. When i use the -net tap option, I get the following error:
Could you suggest how you fixed this error and enabled networking?For your premade kernel, could you upload the modules?
In many normal cases, you could not insert the modules into prebuilt kernel.
However, If prebuilt kernel has configuration for your module, you can insert your module.
Answer is that depends on your prebuilt kernel.
Great tutorial. I have managed to run the guest (Linaro) on top of the Raspbian by following your tutorial. Now I am trying to install wiringPi library on the guest and trying to control the GPIO of the raspberryPi. The library is successfully installed but when I use the command "gpio readall" I get the message
"I see Hardware: ARM-Versatile Express - expecting BCM2708 or BCM2709"
. I have checked the list of available machines for the qemu-system-arm (qemu-system-arm -M help) but BCM2708 or BCM2709 are not listed. How can I access the GPIO of the raspberryPi from the guest (Linaro) ? Any suggestion or help will be highly appreciated. Thanks in advance.Hi, is it possible to compile the kernel from your repo for rpi2 with kernel version 4.0?
That would require some effort to port the code to 4.x, but shouldn't be hard.
Hello, I followed the steps and everything was compiled sucessfully on RPi2. During boot I get:
But when trying to start Qemu (Patched 2.2.1) I get the following:
Is KVM not supported for i386 on RPi2?
No way to accellerate? Read some threads emulating WinXP-Machines that where referring this post.
Thanks and best regards,
Stefan
Nope, by its own nature, virtualization only works when both Guest and Host use the same architecture. Otherwise, it would be emulation.
Might taskset work rather than patching qemu?
for using core 2 and 3 config.txt would have:
the command line would become:Is it possible for i386 emu instead of arm with your guide ? Well done sir!
Nice Article. YUP. Done it!!
Hi, I've tried your guide and it works very well. I was wondering, have you tried with newer version of the Kernel something like 4.0+?
Great blog by the way! Just wondering if anybody managed to get the networking enabled on their OpenSUSE VM? I have the VM up and running but I'm getting a few errors on start-up, most of which are in relation to networking. Any suggestions welcome!
I used
for network.With tap network a bridge has to be set up an configured beforhand.
/etc/network/interfaces:
/etc/qemu-ifup:
Excellent tutorial! I am a Sr Engineer with Virtuozzo and we have been making Container / VM Virtualization for 15yrs but this makes me wonder how small I could make a cluster. What I would love to know is if you could load our bare metal Virtuozzo load, Linux based, on 5x Pi's and then cluster the SD's together from the 5x using our software defined storage option built into Virtuozzo giving you fail over between the 5 Pi's... I have done it with 5x Lenovo Notebooks but it would be way cool done on some Raspberry's. Any thoughts on this or any desire in playing with some copies of our solution to see if it would work? Just an awesome walk through either way. Thanks for sharing and email me directly if you want to work on this project with me...
i am trying to run car diagnosis software( vw vcds and toyota MiniVCI), which only support windows, on my raspberry pi2 . this is very helpful
Found your article and I am interested to know if you have done this with the Raspberry Pi 3? Are there any differences?