Emulating raspbian with QEMU

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.

  1. Emulate Rapberry Pi 2 in QEMU
  2. Emulating raspbian with QEMU
  3. Build Kernel Qemu
  4. Build Raspberry Pi Linux Kernel For QEMU
  5. Enabling KVM Virtualization for RPi2
  6. QEMU - Emulating Raspberry Pi the easy way
  7. Build Your ARM Image for QEMU
  8. qemu-rpi-kernel. Seems not working
  9. KVM on the Raspberry Pi2
  10. Raspbian on Travis CI
  11. Compiling kernel module for Rpi2
  12. Slackware Rpi2   Slackware ARM
  13. Debian RaspberryPi2
  14. Devuan And SlackWare Arm
  15. Qemu Rpi Kernel
  16. Make Root File System   Make Root File System Via Buildroot

Emulate Rapberry Pi 2 in QEMU (Source Origin)

| 13 Comments

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.

Get kernel and device tree

  1. 2016-05-10-raspbian-jessie.zip   2016-05-27-raspbian-jessie.zip
;; cd /src4/KVM 
;; mkdir raspbian-img; cd raspbian-img 
1  wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2016-05-13/2016-05-10-raspbian-jessie.zip
2  unzip 2016-05-10-raspbian-jessie.zip
3  [23:35:23] pietrushnic:rpi2_qemu $ sudo /sbin/fdisk -lu 2016-05-10-raspbian-jessie.img 
4  Disk 2016-05-10-raspbian-jessie.img: 3.7 GiB, 3934257152 bytes, 7684096 sectors
5  Units: sectors of 1 * 512 = 512 bytes
6  Sector size (logical/physical): 512 bytes / 512 bytes
7  I/O size (minimum/optimal): 512 bytes / 512 bytes
8  Disklabel type: dos
9  Disk identifier: 0xea0e7380
10  
11  Device                          Boot  Start     End Sectors  Size Id Type
12  2016-05-10-raspbian-jessie.img1        8192  137215  122880   60M  c W95 FAT32 (LBA)
13  2016-05-10-raspbian-jessie.img2      137216 7843839 7706624  3.7G 83 Linux

Check start of W95 FAT32 (LBA) partition. It is 8192. Sector size is 512. So calculate offset in bytes 8192 * 512 = 4194304.

2  sudo mount -o loop,offset=4194304 2016-05-10-raspbian-jessie.img /mnt/tmp
3  mkdir raspbian-boot
4  cp /mnt/tmp/kernel7.img raspbian-boot
5  cp /mnt/tmp/bcm2709-rpi-2-b.dtb raspbian-boot
6  sudo umount /mnt/tmp 

Then if you try to boot 2016-05-10 Rapbian with 0xabu code:

1  qemu-system-arm -M raspi2 -kernel raspbian-boot/kernel7.img \
2  -sd 2016-05-10-raspbian-jessie.img \
3  -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2" \
4  -dtb raspbian-boot/bcm2709-rpi-2-b.dtb -serial stdio

You will experience kernel crash:

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:

sudo emacs /mnt/tmp/etc/ld.so.preload
$ sudo mv /mnt/tmp/etc/ld.so.preload~ /mnt/tmp/etc/ld.so.preload.orig
$ diff /mnt/tmp/etc/ld.so.preload /mnt/tmp/etc/ld.so.preload.orig
1c1
< # /usr/lib/arm-linux-gnueabihf/libarmmem.so
---
> /usr/lib/arm-linux-gnueabihf/libarmmem.so
$ sync
$ sudo umount /mnt/tmp 

Final booting

;; qemu-system-arm -M help
Supported machines are:
  .
  .
raspi2
  .
  .
1  qemu-system-arm -M raspi2 -kernel raspbian-boot/kernel7.img \
2  -sd 2016-05-10-raspbian-jessie.img \
3  -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2" \
4  -dtb raspbian-boot/bcm2709-rpi-2-b.dtb -serial stdio
5  emacs Rpi2-boot.sh&
6  chmod 755 Rpi2-boot.sh
7  cat Rpi2-boot.sh
#! /bin/bash 

qemu-system-arm -M raspi2 -kernel raspbian-boot/kernel7.img \
     -sd 2016-05-10-raspbian-jessie.img \
     -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2" \
     -dtb raspbian-boot/bcm2709-rpi-2-b.dtb -serial stdio
8  Rpi2-boot.sh
      .
      .
      .
[  153.876127] INFO: rcu_sched detected stalls on CPUs/tasks:
[  153.877041] 	1-O..: (11 GPs behind) idle=001/140000000000000/0 softirq=0/0 fqs=0 
[  153.878031] 	2-O..: (11 GPs behind) idle=001/140000000000000/0 softirq=0/0 fqs=0 
[  153.878979] 	3-O..: (11 GPs behind) idle=001/140000000000000/0 softirq=0/0 fqs=0 
[  153.879900] 	(detected by 0, t=14712 jiffies, g=-289, c=-290, q=1)
[  153.880757] Task dump for CPU 1:
[  153.881204] swapper/1       R running      0     0      1 0x00000000
[  153.882122] Task dump for CPU 2:
[  153.882538] swapper/2       R running      0     0      1 0x00000000
[  153.883371] Task dump for CPU 3:
[  153.883803] swapper/3       R running      0     0      1 0x00000000
[  153.884738] rcu_sched kthread starved for 14712 jiffies! g4294967007 c4294967006 f0x2 s3 ->state=0x0
      .
      .
      .

9 ctrl-c to terminate infinite loop

Summary

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.

Compiling Our Own Linux Kernel

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:

Emulating ARM Jessie image

Linux Source

  1. Compiling Linux Kernel Module Rpi2
  2. Linux Source from Raspberry Pi Foundation
  3. firmware

Emulating raspbian with QEMU (Source Origin)

by dhruvvyas90 >> Wed Jun 03, 2015 5:02 am

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.

  1. compiling-a-kernel/
  2. compiling-qemu/
  3. working-with-qemu/
  4. emulating-pi-the-easy-way/

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)

qemu-rpi-kernel   kernel-qemu-4.4.11-jessie

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:

https://github.com/polaco1782/raspberry-qemu

Thanks

Is there any way to get Qemu running with more than 256MB of RAM or multiple cores?
Microprocessor, Raspberry Pi & Arduino Hacker
Mainframe database troubleshooter
MQTT Evangelist
RPi owner since '12.
Twitter: @DougieLawson

2B, B+, A+, 5Bs, zero, 3B

Please post ALL technical questions on the forum.Do not send private messages.

Posts: 22024

by polaco1782 >> Wed Oct 21, 2015 10:25 pm

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:

https://github.com/polaco1782/raspberry-qemu

Thanks

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:

https://github.com/polaco1782/raspberry-qemu

Thanks

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:

https://github.com/polaco1782/raspberry-qemu

Thanks


@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.

Thanks.

Attached is the snapshot : (link: http://i.imgur.com/va8l51Z.png)

Image

Update :

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 ...

Mounting the image and checking issues:

Code: Select all
mount -t auto -o loop,offset=$((122880*512)) 2015-09-24-raspbian-jessie.img /mnt/rpi

cat /mnt/rpi/etc/ld.so.preload
#/usr/lib/arm-linux-gnueabihf/libarmmem.so

# cat /mnt/rpi/etc/fstab
proc            /proc           proc    defaults          0       0
#/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
/dev/sda1  /boot           vfat    defaults          0       2
/dev/sda2  /               ext4    defaults,noatime  0       1



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

Code: Select all
qemu-system-arm -kernel kernel-qemu-4.1.7-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -drive format=raw,file=2015-09-24-raspbian-jessie.img


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 ...

Mounting the image and checking issues:
Code: Select all
mount -t auto -o loop,offset=$((122880*512)) 2015-09-24-raspbian-jessie.img /mnt/rpi

cat /mnt/rpi/etc/ld.so.preload
#/usr/lib/arm-linux-gnueabihf/libarmmem.so

# cat /mnt/rpi/etc/fstab
proc            /proc           proc    defaults          0       0
#/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
/dev/sda1  /boot           vfat    defaults          0       2
/dev/sda2  /               ext4    defaults,noatime  0       1



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

Code: Select all
qemu-system-arm -kernel kernel-qemu-4.1.7-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -drive format=raw,file=2015-09-24-raspbian-jessie.img


I've also tried both your github kernel image as well as @polaco1782's, with the same result.

Any pointers/tips appreciated.


@vortexvortex

DO NOT ADD `/dev/sda` entries in fstab. Just comment `mmcblk` entries and you're good to go. Ie, your fstab should look like this,

Code: Select all
proc            /proc           proc    defaults          0       0
#/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1


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.

You should be able to emulate it with,

Code: Select all
qemu-system-arm -kernel kernel-qemu-4.1.7-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2015-09-24-raspbian-jessie.img


Hope it helps.

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 ...

Mounting the image and checking issues:
Code: Select all
mount -t auto -o loop,offset=$((122880*512)) 2015-09-24-raspbian-jessie.img /mnt/rpi

cat /mnt/rpi/etc/ld.so.preload
#/usr/lib/arm-linux-gnueabihf/libarmmem.so

# cat /mnt/rpi/etc/fstab
proc            /proc           proc    defaults          0       0
#/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
/dev/sda1  /boot           vfat    defaults          0       2
/dev/sda2  /               ext4    defaults,noatime  0       1



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

Code: Select all
qemu-system-arm -kernel kernel-qemu-4.1.7-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -drive format=raw,file=2015-09-24-raspbian-jessie.img


I've also tried both your github kernel image as well as @polaco1782's, with the same result.

Any pointers/tips appreciated.


@vortexvortex

DO NOT ADD `/dev/sda` entries in fstab. Just comment `mmcblk` entries and you're good to go. Ie, your fstab should look like this,

Code: Select all
proc            /proc           proc    defaults          0       0
#/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1


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.

You should be able to emulate it with,

Code: Select all
qemu-system-arm -kernel kernel-qemu-4.1.7-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2015-09-24-raspbian-jessie.img


Hope it helps.


Thanks! Works like a charm. Now to see how far I can push with getting 1Mb memory working & maybe KVM/libvirt ...

Posts: 2 by trojanspike >> Mon Nov 23, 2015 4:16 pm

I created a qemu cli to help me created minibian images ::

https://github.com/trojanspike/qbian

Support me in No-Shave November :: https://www.no-shave.org/member/trojanspike

Posts: 3 by leighma >> Wed Dec 09, 2015 12:49 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:

https://github.com/polaco1782/raspberry-qemu

Thanks


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 ?

Many thanks in advanced!

leigh

Posts: 1 by cil8 >> Sat Mar 12, 2016 2:32 pm

I followed all your instructions and tried all your kernels, but I invariably get a kernel panic as in the screenshot attached.

I'm running Ubuntu 15.04 and qemu 2.2.0.

Any hints?

Thanks!

Attachments

qemu_raspbian_kernel_panic.png (27.37 KiB) Viewed 3993 times

Posts: 161 by furansa >> Wed Apr 06, 2016 12:42 pm

Hi everyone.

Some of you already tried to run Raspberry Pi with QEmu using the virt manager interface (www.virt-manager.org)?

I've search on the Internet but just found old information.

My virt-manager (running on Debian 8) have the arm option with some boards like cubieboard but no RPi board.

I'll appreciate with someone could share some experience.

Thanks in advance, best regards.

--
Fernando Franca
http://desconstruindo.eng.br

Linux user #263682

Emulating raspbian with QEMU (Source Origin)

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?

edited Jun 3 '15 at 8:40   asked Jun 3 '15 at 5:04

I used QEmu from sourceforge.net/projects/rpiqemuwindows/?source=typ_redirectThomas Weller Mar 31 at 22:03 related raspberrypi.stackexchange.com/questions/165/...Jun 22 at 10:44

3 Answers

Here is a link for that file I have uploaded it to dropbox. kernel-qemu?dl=0 Also, it's been made available on github. Link --> qemu-rpi-kernel

edited Jun 25 '15 at 17:24   answered Jun 7 '15 at 4:11

Sandor Megyeri

Thanks a lot. :)dastaan Jun 7 '15 at 5:29

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 above link does appear dead, however this raspberrypi/linux one is good.

answered Jun 3 '15 at 7:36

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

polaco1782/raspberry-qemu   (Source Origin)

build-kernel-qemu   executable file   47 lines (42 sloc)  1.09 KB

#!/bin/bash
#
# Build ARM kernel 4.1.7 for QEMU Raspberry Pi Emulation
#
#######################################################


TOOLCHAIN=)/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf


git clone https://github.com/raspberrypi/linux.git
git clone https://github.com/raspberrypi/tools.git
cd linux
git checkout 77798915750db46f10bb449e1625d6368ea42e25
patch -p1 < ../linux-arm.patch


make ARCH=arm versatile_defconfig
cat << EOF
CONFIG_CROSS_COMPILE="
CONFIG_CPU_V6=y
CONFIG_ARM_ERRATA_411920=y
CONFIG_ARM_ERRATA_364296=y
CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y
CONFIG_PCI=y
CONFIG_SCSI=y
CONFIG_SCSI_SYM53C8XX_2=y
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_TMPFS=y
CONFIG_INPUT_EVDEV=y
CONFIG_EXT3_FS=y
CONFIG_EXT4_FS=y
CONFIG_VFAT_FS=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
CONFIG_VFP=y
CONFIG_CGROUPS=y
EOF


make -j 8 -k ARCH=arm CROSS_COMPILE=${TOOLCHAIN}- menuconfig
make -j 8 -k ARCH=arm CROSS_COMPILE=${TOOLCHAIN}-
cd ..
cp linux/arch/arm/boot/zImage kernel-qemu

More References:

  1. dhruvvyas90/qemu-rpi-kernel

Build Raspberry Pi Linux Kernel For QEMU (Source Origin)

Try the next procedure first

(Source Origin)

3. Configure the Kernel

Then we need to configure the kernel accordingly:
 $ 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)

Enable the event interface:

Device Drivers --->
    Input device support--->
        [*] Event interface

Adding RaspberryPi Logo into Kernel:

Device Drivers --->
    Graphics Support --->
        Console display driver support --->
            [ ] Select compiled-in fonts
                [*] Bootup logo (optional)
Exit, saving the configuration.

4. Compiling the Kernel

 $ make ARCH=arm 
 $ mkdir ../modules 
 $ make ARCH=arm INSTALL_MOD_PATH=../modules modules_install 

Troubleshooting

Error 1:
scripts/mod/modpost.c:1465:7: error: use of undeclared identifier 'R_386_32'
        case R_386_32: 

Create a new file elf.h and paste this code from the opensource.apple.com.

 
 $ nano /usr/local/include/elf.h

In the same file append these...

 
#define R_386_NONE 0
#define R_386_32 1
#define R_386_PC32 2
#define R_ARM_NONE 0
#define R_ARM_PC24 1
#define R_ARM_ABS32 2
#define R_MIPS_NONE 0
#define R_MIPS_16 1
#define R_MIPS_32 2
#define R_MIPS_REL32 3
#define R_MIPS_26 4
#define R_MIPS_HI16 5
#define R_MIPS_LO16 6

Error2:
/usr/local/include/elf.h:45:10: fatal error: 'elftypes.h' file not found
#include "elftypes.h" /* In lieu of Solaris <sys/elftypes.h> */

create a new file elftypes.h and paste this code from  the opensource.apple.com.

 $ nano /usr/local/include/elftypes.h

Error 3:
xargs: illegal option -- r
This is because BSD xargs doesn't have the same options as GNU xargs. Install 
GNU xargs from macports (It should show up earlier in your search path)

Install GNU `find`, `locate`, `updatedb`, and `xargs`, g-prefixed

 $ brew install findutils

Replace all files using 'xargs' to 'gxargs'. (Use a sublime or any texteditor).

5. Copy compiled Kernel

Copy the compiled kernel to your working directory:

 $ cp arch/arm/boot/zImage ../
Done! You should now have a QEMU-bootable linux kernel and modules in your work directory.

Compile the Kernel

Make a working directory:

 mkdir /tmp/rpi-linux
 cd /tmp/rpi-linux

Get the RPI tools and kernel:

 git clone https://github.com/raspberrypi/tools
 git clone https://github.com/raspberrypi/linux

Point to the cross compiler (N.B. there's a dash "-" at the end!):

 export CCPREFIX=/tmp/rpi-linux/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-

Save the following patch as linux-rpi-qemu.patch:

 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:

 cd ..
 qemu-system-arm -M versatilepb -cpu arm1176 -kernel linux/arch/arm/boot/zImage -initrd initramfs.gz -append "console=ttyAMA0" -nographic

References

  1. https://www.raspberrypi.org/documentation/linux/kernel/building.md
  2. http://elinux.org/Raspberry_Pi_Kernel_Compilation
  3. https://github.com/cantora/qemu-arm-rpi-kernel
  4. http://tiriboy.blogspot.com/2015/04/compiling-arm1176-for-qemu-raspberry-pi.html
  5. http://mgalgs.github.io/2015/05/16/how-to-build-a-custom-linux-kernel-for-qemu-2015-edition.html
  6. https://balau82.wordpress.com/2012/03/31/compile-linux-kernel-3-2-for-arm-and-emulate-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!):

mv /boot/kernel7.img /boot/kernel7.img.bak
cp kernel7.img /boot

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:

Now build both kernel and dtb:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage dtbs

Building it yourself (Part III: bundling all pieces)

This is the easy part, just concatenate them:

cat rpi2-hyp-boot/bootblk.bin linux/arch/arm/boot/zImage linux/arch/arm/boot/dts/bcm2709-rpi-2-b.dtb > kernel7.img

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:

Download the build dependencies:

pi@raspberrypi:~$ sudo apt-get build-dep qemu
pi@raspberrypi:~$ sudo apt-get install libpixman-1-dev

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:

pi@raspberrypi:~/srcs/qemu-2.2.0$ ./configure --enable-kvm --target-list=arm-softmmu

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:

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"

  1. mkoryak says: 18 March, 2015 at 2:02 pm

    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
    1. 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.

  2. Nico Maas says: 18 March, 2015 at 2:30 pm

    I have not tested it myself, but this is some remarkable job! Thanks for your awesome work :)!

    Reply
    1. Sergio L. Pascual says: 18 March, 2015 at 5:06 pm

      Thanks!

  3. 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
    1. 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
      1. 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

  4. Alex Ellis says: 18 March, 2015 at 5:22 pm

    Ninja mastery at play. Great article and good examples. What next?

  5. MY123 says: 19 March, 2015 at 6:51 pm

    The RPi2 has ARM JTAG on the GPIOs.

  6. 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
    1. 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?

  7. 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?

  8. Icey590 says: 15 July, 2015 at 1:22 pm

    For your premade kernel, could you upload the modules?

    Reply
    1. 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.

  9. 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.

  10. 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
    1. 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.

  11. 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:

    ...
    [    0.000000] Kernel command line: ... isolcpus=3
    ...
    [    0.154274] CPU: All CPU(s) started in HYP mode.
    [    0.154301] CPU: Virtualization extensions available.
    ...
    [    0.972826] kvm [1]: timer IRQ99
    [    0.976111] kvm [1]: Hyp mode initialized successfully
    ...
    

    But when trying to start Qemu (Patched 2.2.1) I get the following:

    MiniPi ~ # qemu-system-i386 -enable-kvm -cpu n270 -drive \
    file=/root/HS-debian.qcow,if=ide,index=0,media=disk -net nic -net \
    tap,ifname=tap0,script=no,downscript=no -m 512M -usb -vnc :1 -daemonize
    
    "kvm" accelerator not found.
    No accelerator found!
    

    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

    Reply
    1. Sergio L. Pascual says: 17 August, 2015 at 9:43 am

      Nope, by its own nature, virtualization only works when both Guest and Host use the same architecture. Otherwise, it would be emulation.

  12. chisight says: 16 September, 2015 at 10:15 pm

    Might taskset work rather than patching qemu?

    for using core 2 and 3 config.txt would have:

    isolcpus=2,3
    
    the command line would become:
    taskset 0x0000000C qemu-system-arm -enable-kvm -smp 2 -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

    		
  13. Sebastjan says: 18 October, 2015 at 1:44 am

    Is it possible for i386 emu instead of arm with your guide ? Well done sir!

  14. Mallapuram Phanirajkiran says: 26 October, 2015 at 7:46 pm

    Nice Article. YUP. Done it!!

  15. Vincent says: 30 October, 2015 at 4:00 pm

    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+?

  16. Pingback: Quora
  17. Garrett says: 18 November, 2015 at 12:25 pm

    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!

    1. Christian says: 29 February, 2016 at 11:31 pm

      I used

      -netdev user,id=net0 -device virtio-net-device,netdev=net0,mac=00:11:22:33:44:55
      
      for network.

      With tap network a bridge has to be set up an configured beforhand.

      -netdev tap,id=net0,script=/etc/qemu-ifup -device virtio-net-device,netdev=net0,mac=00:11:22:33:44:55
      

      /etc/network/interfaces:

      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
      
  18. Travis M says: 5 December, 2015 at 6:32 am

    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...

  19. su xing yu says: 17 February, 2016 at 3:48 am

    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

  20. Pingback: Virtualization Blog |
  21. Ian says: 7 May, 2016 at 9:44 pm

    Found your article and I am interested to know if you have done this with the Raspberry Pi 3? Are there any differences?

QEMU - Emulating Raspberry Pi the easy way (Source Origin)

Important Notes:
  1. Root Image: Pisces Images
  2. 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

  3. Username: raspbian
  4. Passwd: raspbian
  5. cat Rpi-boot.sh
    #! /bin/bash 
    
    qemu-system-arm -M versatilepb -m 256 -cpu arm1176 -kernel kernel-qemu \
         -hda rpi_pisces_r3.img \
         -append "rw earlyprintk loglevel=8 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/sda3 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait" \
         -serial stdio
    
The usual routine
  1. Download the Rpi2 image zip file.
  2. Unzip the image .zip file to get *.img file
  3. sudo fdisk -lu *.img

    Usually we get two partitions. The first one is fat32, the second is ext4.

  4. Offset=$((starting-sector * 512))
    • Creating *-boot directory
    • Mount the first partition via
       $ sudo mount -o loop,offset=$Offset *.img /mnt/tmp 
       $ ls -l /mnt/tmp 
       $ cp /mnt/tmp/kernel7.img /mnt/tmp/bcm2079-rpi-2-b.dtb *-boot 
       $ sudo umount /mnt/tmp 
      
  5. Copy a working *Rpi2*boot.sh and edit the file accordingly.
  6. Boot the image. If fails with "kernel panic" message,
  7. Mount the second partition, check the /mnt/tmp/etc/ld.so.preload file

    If this file exists, comment its (usual) only line.

    $ diff /mnt/tmp/etc/ld.so.preload /mnt/tmp/etc/ld.so.preload.orig
    1c1
    < # /usr/lib/arm-linux-gnueabihf/libarmmem.so
    ---
    > /usr/lib/arm-linux-gnueabihf/libarmmem.so
    
      
  8. 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.

  9. 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:

Preparing the environment

  1. Create and enter the work directory.
  2. Download the linux kernel:
  3.  Download and extract the disk image .img file to the working directory.
  4. All of the instructions will be carried out in this directory.

Check that you have everything

  1. Make sure you have kernel-qemu and your disk image files.
  2. qemu-system-arm -cpu ?

If everything looks right, you should be ready to go.

First boot

  1. qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda3 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda rpi_pisces_r3.img

    • Windows users should use qemu-system-armw.exe instead of qemu-system-arm.
    • Make sure you replace 'rpi_pisces_r3.img' with the name of your disc image.
    • Do not try to use more than 256 MB of RAM, the value is hard-coded in and QEMU will not work correctly.
    • You should be presented with a minimal shell. From here, you will need to make some modifications before you can boot properly.
  2. nano /etc/ld.so.preload
  3. Put a # in front of the first line so that it looks like this:

    #/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so

  4. Press ctrl-x then y then enter to save and exit.
  5. (Optional) Use steps 2 to 4 above to create a file /etc/udev/rules.d/90-qemu.rules with the following content:

    KERNEL=="sda", SYMLINK+="mmcblk0"
    KERNEL=="sda?", SYMLINK+="mmcblk0p%n",

    • The kernel sees the disk as /dev/sda, while a real pi sees /dev/mmcblk0. This will create symlinks to be more consistent with the real pi.
  6. halt

First (proper) boot

  1. qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda3 panic=1 rootfstype=ext4 rw" -hda rpi_pisces_r3.img
    • 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.
QEMU running raspbian
That's it, you should see the system starting to boot.

Things to keep in mind

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.

Filed under: Kernel, QEMU, Raspberry Pi, Tutorials

Leave a comment

Comments (146) Trackbacks (11)

  1. Bob May 9th, 2012 - 00:26

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

( REPLY )

  • Bob May 9th, 2012 - 00:28

NOTE - I grabbed the QEMU binaries from http://xecdesign.com/downloads/linux-qemu/kernel-qemu which worked with the Debian disk image on the RasPi main download site

( REPLY )

Thanks, I have updated the post with the new info.

  • Steve July 6th, 2012 - 02:40

    I used

    http://qemu.weilnetz.de/w32/2012-06-28/qemu-system-arm.exe

    But is complains of missing DLLs.

    SDL.dll
    libcrypto.dll
    libcurl-4.dll
    libglib-2.0-0.dll
    libssl.dll

    Some, but not all of them, can be found here

    http://qemu.weilnetz.de/w32/mingw/

    Cheers, Steve

  • Sorry for asking suck a stupid question.

    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.

  • 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

  • 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 )

  • 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 )

  • 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 )

  • MJL November 23rd, 2012 - 23:56

    I have had reasonable success using the windows binaries from here
    http://lassauge.free.fr/qemu/

    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 )

  • 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 )

    • 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 )

      • 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.

  • 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 )

  • 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.

    Any ideas what's wrong?

    ( REPLY )

  • 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 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 )

  • 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.

    qemu-img create boot.img 4G
    sudo mkfs.ext4 boot.img
    sudo mount boot.img /mnt/b -t ext4 -o loop
    sudo mount -o loop,offset=$(( 512 * 122880)) 2012-10-28-wheezy-raspbian.img /mnt/img
    cd /mnt/b
    sudo cp -R -a /mnt/img/* .
    cd -
    qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda panic=1" -hda boot.img

    (note /dev/sda)

    ( REPLY )

  • Miguel Risco January 3rd, 2013 - 17:37

    Windows 7 x64:
    QEmu v1.3.0 from http://lassauge.free.fr/qemu/release/Qemu-1.3.0-windows.zip
    Kernel from http://xecdesign.com/downloads/linux-qemu/kernel-qemu

    Start with:
    qemu-system-armw.exe -M versatilepb -cpu arm1176 -hda Raspbian.img -kernel kernel-qemu -m 256 -serial stdio -append "root=/dev/sda3 panic=1"

    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 )

  • 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).

    ( REPLY )

  • 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 )

  • 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 )

  • 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 )

  • @Alexandre It's identical for me ;) in waiting a solution THX

  • @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 )

  • 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 )

  • 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 )

  • 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

    http://unix.stackexchange.com/questions/2661/mounting-a-img-file

    as suggested.

    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?

    ( REPLY )

  • 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 )

  • Ryu1000 April 22nd, 2013 - 03:27

    wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu

    It returns me ERROR 403

    ( REPLY )

  • Thomas May 3rd, 2013 - 06:36

    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 )

  • 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.

  • 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 )

  • 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 )

  • 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 )

  • 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 )

  • 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 :P 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 )

  • 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)

    Would be great to have some help about this

    ( REPLY )

  • 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 )

  • 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 )

  • 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 )

  • 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.

  • 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 )

  • 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 )

  • 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 )

    • I was able to fix this by adding "rw" to the argument string for -append, like so:

      -append "root=/dev/sda3 rw panic=1 rootfstype=ext4 ..."

      ( REPLY )

      • Shift November 2nd, 2013 - 02:18

      Ah, thanks. Forgot to add the 'rw' when I updated the instructions, sorry.

      ( REPLY )

      • 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 )

  • 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

    ( REPLY )

  • Build Your ARM Image for QEMU (Source Origin)

    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.

    1. Wiki
    2. Device Tree for Dummies
    3. Xilinx Zynq Example

    How to Build an ARM Image

    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.

    Git Repos:

    Websites:

    Prepare ARM compiler:

    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.

    ~/.bashrc
     export PATH=~/bin/linaro-arm-linux-gnueabihf/bin:$PATH
     export PATH=~/bin/linaro-arm-linux-gnueabi/bin:$PATH
    

    Then, reload the file by:

     ~$source ~/.bashrc
    

    Compiling Linux Kernel:

    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:

    ~/linux$ qemu-system-arm \
    -M vexpress-a9 \
    -dtb ./arch/arm/boot/dts/vexpress-v2p-ca9.dtb \
    -kernel ./arch/arm/boot/zImage \
    -append "console=ttyAMA0" \
    --nographic
    

    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
    

    Now, you can run QEMU with this rootfs.

    ~/$ qemu-system-arm \
    -M vexpress-a9 \
    -dtb ./linux/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \
    -kernel ./linux/arch/arm/boot/zImage \
    -append "root=/dev/mmcblk0 console=ttyAMA0" \
    -sd ./a9rootfs.ext3 \
    --nographic
    

    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.

    Buildroot, Making Embedded Linux Easy

    1. buildroot Github
    2. Buildroot Online Docs
    3. Buildroot Tarballs Download
    4. Buildroot Wiki
    5. Build Rpi Image via Buildroot

    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.

    ~/$ qemu-system-arm \
         -M vexpress-a9 \
         -dtb ./linux/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \
         -kernel ./linux/arch/arm/boot/zImage \
         -append "console=ttyAMA0" \
         -initrd ./buildroot/output/images/rootfs.cpio \
         --nographic
    
    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.

    ~/$ mkdir root
    ~/$ dd if=/dev/zero of=./arch_rootfs.ext4 bs=1M count=$((4 * 1024))
    ~/$ mkfs.ext4 ./arch_rootfs.ext4
    ~/$ sudo mount ./arch_rootfs.ext4 ./root
    ~/$ wget http://archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz
    ~/$ sudo bsdtar -xpf ArchLinuxARM-armv7-latest.tar.gz -C ./root
    ~/$ sync
    ~/$ cp ./root/boot/zImage ./zImage_arch
    ~/$ cp ./root/boot/dtbs/vexpress-v2p-ca9.dtb ./
    ~/$ sudo umount ./root
    

    Now, the linux Kernel and Arch rootfs are ready. We don't need boot loader here. You can now execute QEMU with the following command:

    ~/$ qemu-system-arm \
         -M vexpress-a9 \
         -dtb ./vexpress-v2p-ca9.dtb \
         -kernel ./zImage_arch \
         -append "root=/dev/mmcblk0 rw roottype=ext4 console=ttyAMA0" \
         -drive if=sd,driver=raw,cache=writeback,file=./arch_rootfs.ext4 \
         --nographic \
         -snapshot
    

    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.

    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.

    ~/$ arm-linux-gnueabihf-strip --strip-debug --strip-dwo ./rootfs/lib/*
    ~/$ arm-linux-gnueabihf-strip --strip-debug --strip-dwo ./rootfs/usr/lib/*
    

    QEMU Arguments

    QEMU has very complicated arguments. Here is an example to wrap up all the arguments I used in this tutorial.

    The following example can run QEMU with internet access. Please refer to QEMU's NAT and Arch's QEMU networking for further details.

    #!/bin/bash
    #export an environment variable with format print
    printf - v macaddr "52:54:%02x:%02x:%02x:%02x" $(( $RANDOM & 0xff)) $(( $RANDOM & 0xff )) $(( $RANDOM & 0xff)) $(( $RANDOM & 0xff ))
    sudo qemu-system-arm \
          -M vexpress-a9 \
          -kernel ./zImage_arch \
          -dtb ./vexpress-v2p-ca9.dtb \
          --nographic \
          -append &quot;root=/dev/mmcblk0 rw roottype=ext4 console=ttyAMA0&quot; \
          -drive if=sd,driver=raw,cache=writeback, file=./arch_rootfs.ext4 \
          -net nic,macaddr=$macaddr \
          -net tap,vlan=0,ifname=tap0 \
          -snapshot
    

    You can now execute QEMU with the following command to run your kernel:

    ~/$ qemu-system-arm \
         -M vexpress-a9 \
         -dtb ./vexpress-v2p-ca9.dtb \
         -kernel ./zImage_arch \
         -append "root=/dev/mmcblk0 rw roottype=ext4 console=ttyAMA0" \
         -drive if=sd,driver=raw,cache=writeback,file=./arch_rootfs.ext4 \
         --nographic \
         -snapshot
    

    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"

    1. 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.

      // Cheers
      Joakim

      1. 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.

      dhruvvyas90   qemu-rpi-kernel (Source Origin)

      Download ZIP

      README.md

      qemu-rpi-kernel

      Qemu kernel for emulating Rpi on QEMU

      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.

      This repo contains two types of kernels.

      kernel-qemu-3.10.25-wheezy, which is the original kernel from link https://xecdesign.com/downloads/linux-qemu/kernel-qemu - Works fine with any wheezy image with changes mentioned in wiki.

      kernel-qemu-4.x.xx-jessie, are newer kernels compiled compatible with jessie as well as they work well with older wheezy images.

      Build scripts are kept in tools folder for reference.

      Go through wiki page for step by step guide how to emulate Raspberry Pi on Qemu on any platform (Win, linux or Mac OS)

      KVM on the Raspberry Pi2 (Source Origin)

      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 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.

      CONFIG_NET=y
      CONFIG_NET_CORE=y
      CONFIG_NETDEVICES=y
      CONFIG_BLOCK=y
      CONFIG_BLK_DEV=y
      CONFIG_NETWORK_FILESYSTEMS=y
      CONFIG_INET=y
      CONFIG_TTY=y
      CONFIG_SERIAL_8250=y
      CONFIG_SERIAL_8250_CONSOLE=y
      CONFIG_IP_PNP=y
      # CONFIG_IP_PNP_DHCP=y
      CONFIG_BINFMT_ELF=y
      CONFIG_PCI=y
      CONFIG_PCI_MSI=y
      CONFIG_DEBUG_KERNEL=y
      CONFIG_VIRTUALIZATION=y
      CONFIG_HYPERVISOR_GUEST=y
      CONFIG_PARAVIRT=y
      CONFIG_KVM_GUEST=y
      CONFIG_VIRTIO=y
      CONFIG_VIRTIO_PCI=y
      CONFIG_VIRTIO_BLK=y
      CONFIG_VIRTIO_CONSOLE=y
      CONFIG_VIRTIO_NET=y
      CONFIG_9P_FS=y
      CONFIG_NET_9P=y
      CONFIG_NET_9P_VIRTIO=y
      CONFIG_SCSI_LOWLEVEL=y
      CONFIG_SCSI_VIRTIO=y
      CONFIG_VIRTIO_INPUT=y
      

      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)
        • DISABLE Virtualization -> KVM support for Virtual GIC
        • ENABLE Virtualization -> 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

      cat /working/rpi2/arch/arm/boot/zImage /working/rpi2/arch/arm/boot/dts/bcm2709-rpi-2-b.dtb > /tmp/rpi-kernel/kernel7.img
      

      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:

      setenv "${bootargs} isolcpus=3"
      saveenv
      

      A final reboot and you should get this in dmesg

      dmesg | grep kvm
      kvm [1]: timer IRQ99
      kvm [1]: Hyp mode initialized successfully
      

      Booting your first Virtual Machine

      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
      

      References

      1. Device Trees, overlays and parameters
      2. Rpi Kernel Building
      3. raspbian archive

      Debian RaspberryPi2

      1. RaspberryPi2
      2. Debian Jessie on Raspberry Pi 2
      3. QEMU User Emulation Rpi

      RaspberryPi2 (Source Origin)

      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.

      Help and collaboration very much welcome!

      The basic Debian install

      Add U-boot to the basic Debian install

      Advanced Debian Jessie debootstrap script

      read drtyhlpr/rpi2-gen-image webpage    rpi2-gen-image.sh

    2. The free driver

      The non-free driver

      Debian Jessie on Raspberry Pi 2 (Source Origin)

      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.

      The result of which can be found at: https://images.collabora.co.uk/rpi2/

      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:

      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
      You just answered all my questions - before my Pi2 turns up :D
      Comment by Andy Cater - Tue Feb 3 19:28:27 2015

      Thank you for your work!

      Will this RPi2 support get upstream into Debian Jessie? That would be awesome.

      Comment by Nickolai Leschov - Tue Feb 3 19:55:16 2015
      Do you have scripts that generated the image, in case we wanted to reproduce it/add more packages?
      Comment by Samat Jain - Wed Feb 4 05:01:16 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.

      Comment by sjoerd - Wed Feb 4 09:30:45 2015

      Hi, is there a way to get the serial for the license key? I tried cat /proc/cpuinfo, but the command returned just "Serial : 0000000000000000". THX

      Comment by motz_e - Wed Feb 4 14:54:01 2015
      Hi. Justed wanted to say thank you for this quick "up-and-running" solution! Nice work! :-)
      Comment by jsl123 - Wed Feb 4 15:29:39 2015

      Can I use win32diskimager http://win32diskimager.sourceforge.net to install the image? Not sure how to flash a .gz image in a WIN8.1 ?

      Comment by skywave - Wed Feb 4 21:25:18 2015
      Unzip the .gz first? Then use the Win32Imager.
      Comment by Anonymous - Thu Feb 5 16:16:44 2015

      Great work, boots super fast, thx a lot!

      Btw, does it include the videocore drivers for X or even better xwayland?

      Comment by OliD - Thu Feb 5 16:36:45 2015
      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!!!
      Comment by Random Geek - Fri Feb 6 10:25:38 2015
      Can you post your kernel source and config?
      Comment by Anonymous - Fri Feb 6 13:38:50 2015
      This image is corrupted. Root partition fails to mount.
      Comment by f4exb - Fri Feb 6 23:44:43 2015
      WTF is bmap tools and what's the use for it? Can't you just create an image file?
      Comment by Anonymous - Fri Feb 6 23:51:24 2015
      Hey what's the userid and password?
      Comment by Anonymous - Sat Feb 7 00:27:23 2015
      The Debian contrib and non-free repos as well as the security repos should be in the apt sources configuration.
      Comment by OliD - Sat Feb 7 05:28:04 2015
      Hello, how to install it? I am unpacking it, writing image to sd with a Win32DiskImager and inserting into RPI2 but nothing is happening
      Comment by A K - Sat Feb 7 18:19:26 2015

      Thanks a ton. I am in the process to get proview.se running on the rpi2 / Jessie ...

      Comment by maba - Tue Feb 10 14:20:58 2015

      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:

      1. Download and extract the jessie-rpi2-20150202.img.gz to get an .img file
      2. On any debian-based linux type "sudo apt-get install bmap-tools" and install it.
      3. 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).
      4. 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 :)

      Comment by Juan - Tue Feb 10 19:59:58 2015

      My rpi2 shipped and now here's this :)

      Thanks for your hard work!

      Comment by jocala - Thu Feb 12 07:39:37 2015
      Can't get Wifi to work.
      Comment by Vitaly - Sat Feb 14 02:35:58 2015
      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.
      Comment by miket - Sat Feb 14 23:40:17 2015
      My rpi2 arrived today and setting up debian was cake thanks to you. Much appreciated my friend!
      Comment by jocala - Sun Feb 15 02:20:12 2015
      Is there any way to install this onto an sd card via a windows PC? My guess is Win32DiskImager alone isn't enough for this?
      Comment by edwinj85 - Sun Feb 15 17:41:52 2015

      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:

      http://raspberrypi.stackexchange.com/questions/499/how-can-i-resize-my-root-partition

      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!

      Comment by EdwinJ85 - Sun Feb 15 20:27:54 2015
      Hello. Act led does not blink even with manual control.
      Comment by Anonymous - Tue Feb 17 11:58:24 2015

      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.

      Comment by CuriousDane - Mon Feb 23 20:40:17 2015

      I saw that that docker is already working!

      But of course you need a base image... Do you think you could provide one? I think I don't know enough about basic Debian to pull that off myself...

      Comment by Martin - Mon Feb 23 22:55:17 2015

      Thanks for the great work! I used your experience as a basis for producing an Ubuntu 14.04 image. Details are at https://wiki.ubuntu.com/ARM/RaspberryPi .

      Some observations:

      • 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.

      My packages are available at https://launchpad.net/~fo0bar/+archive/ubuntu/rpi2/+packages if you'd like to take a look.

      Comment by Ryan Finnie - Tue Feb 24 06:26:03 2015

      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:

      sudo bmaptool copy jessie-rpi2-20150202.img.gz /dev/sdX
      
      

      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. :-)

      Comment by Robert - Tue Feb 24 17:50:19 2015

      Hi all !

      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.

      Any idea what could be the cause ?

      Thanks for your great work, Cheers, Karl

      Comment by Karl_K - Wed Feb 25 16:08:29 2015

      Hi !

      Thanks for the image, it provides lightning fast access to debian jessie on rpi2 !

      However, it seems xbmc from debian repos does not work on rpi2, i get "XBMC needs hardware accelerated OpenGL rendering" error.

      Any idea what to do ?

      Cheers, Karl

      Comment by Karl_K - Fri Feb 27 00:44:55 2015
      Could you enable ssh by default?
      Comment by Dovydas - Sun Mar 1 13:03:36 2015

      Hey Sjoerd,

      Great Image :-) I got XFCE4 running with an USB sound card, but i want to use the sound plug on the Pi. Did you make any progress on that?

      DenniZ

      Comment by DenniZr - Mon Mar 2 16:41:17 2015

      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...

      Comment by Anders - Sat Mar 7 14:12:32 2015
      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.
      Comment by Jeff Epler - Mon Mar 9 16:03:43 2015

      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:

      http://blog.valitov.me/2014/06/installing-google-chromium-on-arm.html?m=1

      many greetings

      Klaus

      Comment by Klaus - Tue Mar 10 20:48:45 2015

      Just FYI folks incase you were thick like me and missed it -- the config for /boot/config.txt has been moved to /boot/firmware/config.txt

      So don't make a /boot/config.txt, it will be ignored, but do edit /boot/firmware/config.txt. Saved me a lot of trouble once all of that clicked in.

      Comment by Joe - Wed Mar 11 08:45:01 2015
      Did you manage to get OpenGL running? I'm trying to get Kodi to run to no avail.
      Comment by jake - Wed Mar 11 18:52:26 2015

      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

      If not installed already install git :

      root@jessie-rpi:~# apt-get install git

      root@jessie-rpi:~# wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update

      root@jessie-rpi:~# sudo rpi-update

      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.

      many regards

      Klaus

      Comment by Klaus - Wed Mar 11 20:59:04 2015
      Sorry, please remove "sudo" out of this commands.
      Comment by Klaus - Wed Mar 11 21:02:49 2015

      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...

      Comment by Anders - Wed Mar 11 22:04:43 2015

      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.

      Comment by Klaus - Wed Mar 11 22:49:25 2015
      ...

      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?

      Comment by spencer - Thu Mar 12 06:48:32 2015

      To load the soundmodule at boot time you should edit the soundmodule to modules.conf in ./etc/modules-load.de

      There you can add one line for any kernel module you want to load at boot time. For soundmodule add :

      snd_bcm2835

      Don't forget to install alsa-utils

      and switch output to 3,5mm jack with "amixer cset numid=3 1" or to hdmi with "amixer cset numid=3 2"

      Comment by Klaus - Thu Mar 12 09:20:27 2015

      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.

      Paul

      Comment by Paul - Thu Mar 12 14:52:52 2015

      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
      root@jessie-rpi:~# apt-cache policy flash-kernel
      flash-kernel:
        Installed: 3.33
        Candidate: 3.33
        Version table:
       *** 3.33 0
              500 http://ftp.debian.org/debian/ jessie/main armhf Packages
              100 /var/lib/dpkg/status
           3.31~exp.1co1+b3 0
              500 https://repositories.collabora.co.uk/debian/ jessie/rpi2 armhf Packages
      

      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.

      Comment by XTL - Fri Mar 13 07:52:10 2015

      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.

      Comment by David - Fri Mar 13 18:24:39 2015
      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
      Comment by sjoerd - Fri Mar 13 20:52:00 2015

      Thanks and also "dankjewel" I guess!?

      Paul

      Comment by Paul - Sat Mar 14 14:10:57 2015
      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?
      Comment by Anonymous - Sun Mar 15 19:36:15 2015

      Hi !

      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....

      Cheers, Karl

      Comment by Karl_K - Sun Mar 15 22:14:36 2015

      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
      
      Comment by Axel - Tue Mar 17 12:34:45 2015

      U-boot has RPi2 support since a while. Would you update to 3.19 with Mesa(anholt's implementation)?

      Comment by MY123 - Thu Mar 19 18:35:18 2015

      After trying for ages to compile kodi on rpi2 i finally found a different way to get what i want:

      http://karl.kashofer.org/2015/03/19/debian-jessie-xfce-and-kodi-on-rpi2/

      This now seems to work, Cheers, Karl

      Comment by Karl_K - Thu Mar 19 22:13:25 2015

      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
      
      

      Then run:

      sudo apt-get update
      sudo apt-get -t experimental install linux-kbuild-3.18
      
      

      and you should be good to go.

      Comment by Jack - Sun Mar 22 05:08:20 2015

      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 !

      Thanks, Thomas.

      Comment by thomas /= - Tue Mar 24 11:31:25 2015

      I had the same Problem, that overclocking did not work after installing debian jessie.

      This can be fixed by setting:

      echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

      echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

      echo ondemand > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor

      echo ondemand > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor

      in /etc/rc.local

      Comment by Anonymous - Wed Mar 25 21:59:16 2015

      I think for those of trying to run Kodi I have a solution.

      You'll need to follow the usual instructions for install deb-multimedia's repos:

      Add the keys:

      wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2014.2_all.deb

      dpkg -i deb-multimedia-keyring_2014.2_all.deb

      Add the repository:

      http://www.deb-multimedia.org/debian-m

      Update:

      apt-get update

      Install kodi:

      apt-get install kodi kodi-bin kodi-standalone

      Build a launch script:

      $ nano kodi.sh

      !/bin/sh

      export LD_LIBRARY_PATH=/opt/vc/lib:/opt/kodi /usr/lib/kodi/kodi.bin

      Save it and run it. It seems to work fine.

      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...

      Comment by joe - Thu Mar 26 22:37:02 2015

      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.

      Comment by Mathis - Wed Apr 8 14:28:43 2015

      Could you update the collabora-repo version once again?

      Merci, Robert

      Comment by Robert - Fri Apr 10 14:52:16 2015

      Hi All! Please help me! Im rooky :) jessie-rpi login: ?

      Comment by warpig - Fri Apr 10 22:53:02 2015
      How do I get rid of the initramfs-update error message after each apt-get run?
      Comment by Rolf - Tue Apr 14 22:26:52 2015

      The flash-kernel script doesn't work. You must manually copy (as root) the kernel to the proper location.

      user@rpi:~# cp /boot/vmlinuz-3.18.0-trunk-rpi2 /boot/firmware/kernel7.img
      
      

      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.

      user@rpi:~# echo "# Debian Exp\
      deb http://ftp.fr.debian.org/debian experimental main contrib non-free\
      deb-src http://ftp.fr.debian.org/debian experimental main contrib non-free" >> /etc/apt/sources.list
      user@rpi:~# cat <<EOF > /etc/apt/preferences.d/experimental
      Package: *
      Pin: release a=experimental
      Pin-Priority: 80
      EOF
      
      

      To illustrate, here is my sources.list :

      user@rpi:~# cat /etc/apt/sources.list
      # Repo specifique RaspPi2 (ARMV7 armhf)
      deb https://repositories.collabora.co.uk/debian jessie rpi2
      
      # Debian repo
      deb http://ftp.fr.debian.org/debian jessie main contrib non-free
      deb-src http://ftp.fr.debian.org/debian jessie main contrib non-free
      deb http://ftp.fr.debian.org/debian jessie-updates main contrib non-free
      deb-src http://ftp.fr.debian.org/debian jessie-updates main contrib non-free
      deb http://security.debian.org/debian-security jessie/updates main contrib non-free
      
      # Debian Exp
      deb http://ftp.fr.debian.org/debian experimental main contrib non-free
      deb-src http://ftp.fr.debian.org/debian experimental main contrib non-free
      
      

      And my /etc/apt/preferences.d/ directory:

      user@rpi:~# cat /etc/apt/preferences.d/collabora
      Package: *
      Pin: origin repositories.collabora.co.uk
      Pin-Priority: 600
      user@rpi:~# cat /etc/apt/preferences.d/experimental
      Package: *
      Pin: release a=experimental
      Pin-Priority: 80
      
      

      I hope it could be useful for other ...

      Comment by BoN_Lth - Fri Apr 17 11:10:09 2015

      I'm the founder of SolydXK. I've used your image as a base for SolydX RPI2. I hope you don't mind.

      You can see my post (with download link to the ISO) here: http://forums.solydxk.com/viewtopic.php?f=53&t=5457

      Comment by Schoelje - Fri Apr 17 16:25:11 2015

      Hello, how to install a flash plugins with this optimized version of Debian Jessie for Raspberry Pi2 thank you for your answer

      Comment by jy - Mon Apr 20 18:53:23 2015

      Append the following to /etc/flash-kernel/db to make it work with the updated flash-kernel version:

      Machine: Raspberry pi 2 Model B
      Machine: BCM2709
      Kernel-Flavors: rpi2
      Boot-Kernel-Path: /boot/firmware/kernel7.img
      
      
      Comment by BtbN - Tue Apr 21 10:33:51 2015

      do not add deb-multimedia.org,

      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
      Comment by shawn - Thu Apr 23 06:55:18 2015

      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.

      root@jessie-rpi:~# apt-cache policy flash-kernel flash-kernel: Installed: 3.35 Candidate: 3.35 Version table: * 3.35 0 500 http://ftp.debian.org/debian/ jessie/main armhf Packages 100 /var/lib/dpkg/status 3.33.co1+b1 0 500 https://repositories.collabora.co.uk/debian/ jessie/rpi2 armhf Packages

      Comment by shawn - Thu Apr 23 07:50:09 2015

      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

      small image, but include the essentials like dhcp and ssh.

      Perfect for my needs.

      Comment by Marco - Sun Apr 26 20:33:55 2015
      Very nice effort, i hope to see this integrated into Debian soon. Kudos.
      Comment by dutchfish - Sat May 2 02:34:06 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.
      Comment by XTL - Thu May 7 09:25:22 2015
      What toolchain did you use for crosscompiling the kernel?
      Comment by ken - Mon May 11 09:49:35 2015

      Hi,

      many, many thanks for this image! I'm using it since one week and like it very much.

      After installing the image, I've done some changes that I like to share with you here. Thanks to shawn for his help with this notes.

      ENLARGE THE SECOND PARTITION ON THE SDCARD AFTER DDING THE IMAGE
      for example using gparted

      CHANGE ROOTS PASSWORD
      'passwd'
      follow instructions

      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'

      Comment by nadu - Sun May 17 23:31:31 2015

      Hej Sjoerd! Great work with this jessie image.

      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.

      What can I do!? TIA

      Comment by Shevek - Wed May 20 00:17:51 2015
      To everybody asking me how to use vi: you can use another editor like nano as well. It should be preinstalled. If not, run 'apt-get install nano'.
      Comment by nadu - Wed May 20 10:01:03 2015

      Hi

      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):

      The system is going down for reboot NOW!

      root@tessa:/var/log# uptime 08:51:47 up 11:39, 1 user, load average: 10.00, 10.02, 9.46

      May be new systemd feature ??

      Is very strange, as no one reported issues here, but I'm sure is not a Hardware issue as the same image worked correctly using raspbian Wheezy.

      Any clues or any one having similar issues ?

      Thanks

      Comment by Marc - Mon May 25 12:27:22 2015

      Hi, thanks for this great tutorial and image, it all works perfectly for me. With one exception: After I apt-get install xfce4, I got

      Processing triggers for initramfs-tools (0.120) ...
      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)
      
      

      I used the method suggested by BoN_Lth, which is manually copying /boot/vmlinuz-3.18.0-trunk-rpi2 to /boot/firmware/kernel7.img.

      I've got flash-kernel pinned at the Collabora repository and its current version is 3.35.co1+b1.

      Any way to fix this? Is copying the kernel to /boot/firmware/kernel7.img all that the flash-kernel package does?

      Comment by Michael Franzl - Wed May 27 19:09:20 2015

      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.

      Comment by Anonymous - Wed Jun 3 15:40:00 2015
      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
      Comment by Debianita - Fri Jun 5 23:43:02 2015

      Hello,

      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

      May be something wrong with the keyring?

      Comment by bats4u - Sat Jun 6 12:43:05 2015

      Hi !

      Would it be possible to enable usbip in your kernel build ?

      karl@fernseher-rpi:~$ zcat /proc/config.gz |grep USBIP

      CONFIG_USBIP_CORE is not set

      I would really need that to share a printer. Thanks, Karl

      Comment by Karl - Mon Jun 8 00:31:01 2015

      I had plenty of KEYEXPIRED errors during apt-get update. I found out that the Collabora key for apt expired.

      $ apt-key list
      /etc/apt/trusted.gpg.d/collabora-obs-archive-keyring.gpg
      --------------------------------------------------------
      pub   2048R/B5FBB289 2013-05-09 [expired: 2015-06-01]
      uid                  Collabora OBS Automatic Signing Key <example@example.com>
      
      

      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.

      $ wget https://repositories.collabora.co.uk/debian/pool/rpi2/c/collabora-obs-archive-keyring/collabora-obs-archive-keyring_0.5+b1_all.deb
      $ dpkg -i collabora-obs-archive-keyring_0.5+b1_all.deb
      $ apt-get update
      
      

      Hope this helps ;)

      Comment by elboulangero - Mon Jun 8 18:58:25 2015

      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?

      Thanks

      Comment by ScHiZniK - Mon Jun 8 20:02:30 2015

      Sadly running 'apt-get update' now results in:

      KEYEXPIRED 1433150817

      Any chance you could take a look at this on the repo?

      Thanks!

      Comment by chrisaw - Wed Jun 10 23:49:03 2015

      Turns out the resolution for the key issue I posted above is:

      wget https://repositories.collabora.co.uk/debian/pool/rpi2/c/collabora-obs-archive-keyring/collabora-obs-archive-keyring_0.5+b1_all.deb dpkg -i collabora-obs-archive-keyring_0.5+b1_all.deb

      Issue resolved - woop!

      Comment by chrisaw - Wed Jun 10 23:55:48 2015

      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.

      Hope it helps.

      Comment by jwarnier - Wed Jun 17 10:46:36 2015

      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

      Comment by Pedro - Thu Jun 18 00:31:14 2015

      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

      Comment by Pedro - Thu Jun 18 00:31:38 2015

      Hi,

      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

      Thanks in advance, Foka

      Comment by Foka - Sun Jun 21 11:29:39 2015

      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.


      Any assistance would be appreciated.

      Comment by Anonymous - Sun Jun 28 02:33:24 2015
      How do we get a new key for apt-get? The current key expired. Thanks.
      Comment by Andrew Lentvorski - Thu Jul 2 03:23:34 2015

      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.

      Comment by Stardust342 - Thu Jul 2 21:11:06 2015
      SPI

      Hi, Thx your very much for your work, it is very quit and simple to install (bmaptools is really fast)

      Still, i have a little problem. I need raspi-config, in order to activate SPI, and to connect a 4DS 32 LCD screen.

      Where can i find this tool ? is there a new way to configure this raspbian ? Thx

      Comment by CHERRIER Sylvain - Mon Jul 6 16:46:38 2015
      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 ;)
      Comment by nadu - Mon Jul 13 12:56:41 2015
      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.
      Comment by nadu - Sat Nov 7 13:15:53 2015

      Hi,

      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?

      Regards, Murat TA1DB

      Comment by TA1DB - Mon Nov 30 11:28:42 2015

      Thanks a lot for providing this really nice guide, I was able to use my pi2 with jessie in no time.

      A few additions:

      To get rid of systemd, this link provides all the details: http://without-systemd.org/wiki/index.php/How_to_remove_systemd_from_a_Debian_jessie/sid_installation

      Basically all you need to do is to put the usual network stuff to /etc/network/interfaces and then

      apt-get install sysvinit-core sysvinit-utils
      cp /usr/share/sysvinit/inittab /etc/inittab
      reboot
      apt-get remove --purge --auto-remove systemd
      echo -e 'Package: systemd\nPin: release *\nPin-Priority: -1' > /etc/apt/preferences.d/systemd
      
      

      To get system time right:

      dpkg-reconfigure tzdata
      apt-get install ntp
      
      

      I also added max_usb_current=1 to /boot/firmware/config.txt, so the PI gives enough power to an external USB Hard Drive.

      Comment by Tim - Fri Jan 15 22:35:48 2016

      Thanks a lot for providing this really nice guide, I was able to use my pi2 with jessie in no time.

      A few additions:

      To get rid of systemd, this link provides all the details: http://without-systemd.org/wiki/index.php/How_to_remove_systemd_from_a_Debian_jessie/sid_installation

      Basically all you need to do is to put the usual network stuff to /etc/network/interfaces and then

      apt-get install sysvinit-core sysvinit-utils
      cp /usr/share/sysvinit/inittab /etc/inittab
      reboot
      apt-get remove --purge --auto-remove systemd
      echo -e 'Package: systemd\nPin: release *\nPin-Priority: -1' > /etc/apt/preferences.d/systemd
      
      

      To get system time right:

      dpkg-reconfigure tzdata
      apt-get install ntp
      
      

      I also added max_usb_current=1 to /boot/firmware/config.txt, so the PI gives enough power to an external USB Hard Drive.

      Comment by Tim - Fri Jan 15 22:36:41 2016
      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 :)
      Comment by nadu - Mon Mar 14 20:51:05 2016
      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?
      Comment by TA1DB - Wed May 4 12:36:49 2016

      Devuan And SlackWare Arm

      1. Finally, we are able to emualting Rpi 4.4.* via Qemu.
        $ diff Rpi2-qemu-2016-05-27.sh Rpi2-qemu.sh
        5,6c5,6
        <      -no-reboot -serial stdio \
        <       -drive "file=2016-05-27-raspbian-jessie.img,format=raw"
        ---
        >       -serial stdio \
        >       -drive "file=solydxrpi_201606.img,index=0,media=disk,format=raw"
        

        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.

      2. unofficial devuan rpi2 image
      3. devuan jessie beta raspi2
      4. devuan arm-sdk
      5. raspberrypi/firmware
      6. SolydX RPI Download
      7. http://downloads.raspberrypi.org/raspbian/images/
      8. qemu-rpi-kernel
      $ cat /tmp/devuan-rpi/Rpi2-devuan.sh
      #! /bin/bash 
      
      qemu-system-arm -M raspi2 -m size=512 -kernel devuan-boot/kernel7.img \
           -sd devuan_jessie_1.0.0-beta_armhf_raspi2.img \
           -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2" \
           -dtb devuan-boot/bcm2709-rpi-2-b.dtb -serial stdio
      

      By default, devuan rpi2 failed to boot:

      [    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 ..
      

      1. username: root
      2. password: toor

      During System booting: hang at: [ ok ] Starting slim: slim.

      1. Installing Slackware ARM on QEMU
      2. How to install Slackware ARM inside QEMU
      3. Buildroot for Raspberry Pi
      4. Slackware ARM
      5. Slackware RaspberryPi2 - Downloads   Slackware RaspberryPi2 - Installation Guide

      1. Qemu emulating slackware rpi2

      Welcome to the qemu-rpi-kernel wiki! (Source Origin)

      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.

      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.

      Installation

      Emulating

      Once QEMU is installed and you have necessary files for emulation as mentioned above, follow the following steps to emulate RPi.

      1. Run:

        qemu-system-arm -kernel kernel-qemu \
                        -cpu arm1176 \
                        -m 256 \
                        -M versatilepb \
                        -no-reboot \
                        -serial stdio \
                        -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" \
                        -hda image-file-name.img
        

        You should get # prompt (bash) at the end of processing.

      2. Edit /etc/ld.so.preload by commenting (with # symbol) the 1st line, e.g.:

        # /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
        #
        # ... rest of the file
        
      3. Edit /etc/udev/rules.d/90-qemu.rules by adding the following lines:

        KERNEL=="sda", SYMLINK+="mmcblk0"
        KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
        KERNEL=="sda2", SYMLINK+="root"
        
      4. Run:

        sudo poweroff
        
      5. Re-emulate by running:

        qemu-system-arm -kernel kernel-qemu \
                        -cpu arm1176 \
                        -m 256 \
                        -M versatilepb \
                        -serial stdio \
                        -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw"
                        -drive "file=image-file-name.img,index=0,media=disk,format=raw"
        

      Key notes

      1. You can have maximum ram upto 256 only as there's a bug in versatilepb which doesn't allow to emulate more than 256 MB.
      2. You might want to set up ssh by adding this extra flag while using QEMU:
      -redir tcp:2222::22
      

      Hope it helps.

      Emulating Jessie image with 4.x.xx kernel (Source Origin)

      Dhruv Vyas edited this page on Jun 7 1 revision

      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:

      1. Latest jessie image
      2. 4.x.xx qemu-kernel for versatilepb.

      Steps:

      1. 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/

      1. cd /path/to/mnt
      2. sudo nano ./etc/ld.so.preload
      3. Comment out every entry in it, Ctrl-x >> Y to save and exit
      4. sudo nano ./etc/fstab
      5. Comment out entries containing /dev/mmcblk, Ctrl-x >> Y to save and exit
      6. cd ~
      7. sudo umount /path/to/mnt

      Once done with these changes, you can emulate it on Qemu by:

      qemu-system-arm -kernel /path/to/kernel/kernel-name -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda /path/to/image/image-file-name.img

      Hope it helps.