GNU/Linux@N80XX

Search This thread

exception13

Senior Member
Mar 11, 2008
76
142
41
Kazan
I'm successfull running Debian GNU/Linux on my SGN 10.1 with "dualboot" (my kernel and debian initrd in recovery partitions). It's very easy and nice to use.

look at demo video

currently don't work: GPU (hardkernel can release exynos Xorg drivers for Odroid project, DRI work in progress), MFC (hardware encoder/decoder), cameras (work in progress), gps (work in progress), modem (work in progress).

and it's nice work with my laser printer via cups ;)

---

Linux Kernel source code and other stuff http://code.google.com/p/opensgn
 
Last edited:

denialnw10

Senior Member
Apr 7, 2006
100
16
I've always thought that once a stable version of Linux is available on Android tablets, I will never have to worry about Android updates ever again!

Especially with the fact that the galaxy note 10.1 has the power to run Linux pretty nicely, I shouldn't need to upgrade my tablet for a while!

Looking forward to hearing more about this project!

Sent from my GT-N7000 using xda app-developers app
 

supaboom

Member
Dec 19, 2011
21
1
I'm successfull running Debian GNU/Linux on my SGN 10.1 with "dualboot" (my kernel and debian initrd in recovery partitions). It's very easy and nice to use.

look at demo video

currently don't work: GPU (hardkernel can release exynos Xorg drivers for Odroid project, DRI work in progress), MFC (hardware encoder/decoder), cameras (work in progress), gps (work in progress), modem (work in progress).

and it's nice work with my laser printer via cups ;)

That's awesome! Would love to see a tutorial on how you set this up. I too hate it that I cant print to my laser printer very easily on android.
 

exception13

Senior Member
Mar 11, 2008
76
142
41
Kazan
i need a few days and need you help to translate it's how-to from my ruslish (very bad english by russian speak people) and make some patches for kernel.
 

hectorz321

Senior Member
Mar 5, 2012
51
8
would love to see a full tut for us noobs!

this looks amazing :D would be great to see a full tut for us poeple new to the whole linus thing mind, would this work on a N8010?
 

pwatkins

Senior Member
Dec 13, 2012
69
17
Cape Town
That's awesome! Would love to see a tutorial on how you set this up. I too hate it that I cant print to my laser printer very easily on android.
Sorry to jump in on a very interesting thread but just a comment about printing.

Use Google Cloud Print and you can print to ANY printer which is attached to any computer running the same Google account as your Note 10.1. Not just computers on your local WiFi network but, via the "cloud", to any of your computers, anywhere in the world! Printing is trivial. Once you have loaded the app, "Cloud Print" appears, when you call Share, from nearly all app pages which include a Share Icon (arrow head) or Share in the main menu. Now I have upgraded to Jellybean 4.1.2 and Samsung's Premium Suite this is virtually all programs I use. Stock, Chrome and Firefox browsers, Aquamail Email, SNote, Office Suite Pro, Gallery and lots more. As long as your printer is switched on the printing starts in about 5secs. If you have a native file stored on your Note, or attached to an email, you can always print to Cloud Print with two clicks.You have access to the basic printer settings, portrait/landscape, black/ colour, paper size etc.More flexible printing than on my PC!

In the latest upgrade to Cloud Print the app now intercepts all calls to the "Print" command included in most Samsung apps, which previosly only worked with Samsung printers, and allows a direct Print command to any printer.

One of my favourite apps. Don't need Linux to print, but still a very interesting thread!
 
Last edited:

exception13

Senior Member
Mar 11, 2008
76
142
41
Kazan
Sorry to jump in on a very interesting thread but just a comment about printing.

Use Google Cloud Print and you can print to ANY printer which is attached to any computer running the same Google account as your Note 10.1. Not just computers on your local WiFi network but, via the "cloud", to any of your computers, anywhere in the world! Printing is trivial. Once you have loaded the app, "Cloud Print" appears, when you call Share, from nearly all app pages which include a Share Icon (arrow head) or Share in the main menu. Now I have upgraded to Jellybean 4.1.2 and Samsung's Premium Suite this is virtually all programs I use. Stock, Chrome and Firefox browsers, Aquamail Email, SNote, Office Suite Pro, Gallery and lots more. As long as your printer is switched on the printing starts in about 5secs. If you have a native file stored on your Note, or attached to an email, you can always print to Cloud Print with two clicks.You have access to the basic printer settings, portrait/landscape, black/ colour, paper size etc.More flexible printing than on my PC!

In the latest upgrade to Cloud Print the app now intercepts all calls to the "Print" command included in most Samsung apps, which previosly only worked with Samsung printers, and allows a direct Print command to any printer.

One of my favourite apps. Don't need Linux to print, but still a very interesting thread!

it's need computer. i'm use my wi-fi router with jet direct daemon sharing usb printer and i can print from any device and don't need standalone computer.
 

X-Stranger

Senior Member
Sep 2, 2008
164
204
Quick question: after you've replaced stock recovery, do official updates work? (the ones you can check for from settings->about)

Actually I've done almost the same thing, but a bit different: using LinuxDeploy I've got installed ArchLinux to disk image file, then configured the things including Xorg + fbdev-driver for screen + evdev-driver for S-pen and hardware buttons + wacom-driver for touchscreen. Then you just need to start Linux from LinuxDeploy, run Xorg session and stop media/zygote from ADB and - voila! - you get working chroot-ed linux environment with native screen support without any VNC nightmares. When you need your Android env back - just start zygote/media via ADB and stop xserver.

The only problem that touchscreen (Wacom w8008 based on Atmel mXT1664S) does not work by default, because stock kernel does not provide correct ABS axis values for it, so I did a little dirty hack to xf86-input-wacom code to set xmax=1280 and ymax=800, then it has started to work, but is still not completely correct (precision and sensivity looks badly - probably there are some others things to be set correctly).

For sure topicstarter's method looks better, however I'm still worried about official updates... But anyway I would like at least to test dualboot method.
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 24
    I'm successfull running Debian GNU/Linux on my SGN 10.1 with "dualboot" (my kernel and debian initrd in recovery partitions). It's very easy and nice to use.

    look at demo video

    currently don't work: GPU (hardkernel can release exynos Xorg drivers for Odroid project, DRI work in progress), MFC (hardware encoder/decoder), cameras (work in progress), gps (work in progress), modem (work in progress).

    and it's nice work with my laser printer via cups ;)

    ---

    Linux Kernel source code and other stuff http://code.google.com/p/opensgn
    11
    How To install Linux to N80XX

    Okay, below is my successfull story, which is still going on.

    So, as the prerequisite you need to have Samsung Galaxy Note 10.1 rooted. You can do this anyhow described on the forum, I've used "Exynos Abuse" utility for that purpose.


    The first step that I've done - got chrooted Linux distribution. The easyest wat is to install "Linux Deploy" program from Google Play, then select options you like. I've choosen the next:
    • distribution: ArchLinux (there are also Ubuntu, Debian, and a few more in the latest version)
    • version: latest
    • architecture: armv7h
    • mirror address: http://de.mirror.archlinuxarm.org
    • installation type: image file (this is important, because I wanted to later boot Linux using loopback device)
    • destination path: /sdcard/arch.img (internal emmc "sdcard")
    • image size: 4096 (in Mb, e.g. 4Gb - better this size, because later you might want to move it to your real sdcard)
    • filesystem: ext4
    • username: stranger
    • DNS-server: automatic detection
    • locale: en_US.UTF-8
    • desktop environment: LXDE (works fast when you don't have 3D acceleration or work via VNC)
    • install GUI: yes
    • SSH: yes
    • VNC: yes (no, if you don't want to work with your chrooted environment via VNC client)
    • other options: you might select as you like. Later I've added run of shell script, which was configuring a few things very useful for my chrooted Linux
    As soon as you done with settings, get back and press "Download" button, then wait until downloading, installing, configuring is done. Voila! Now you can press "Play" button and work with your favorite distribution right from Android, or connect to it remotely from desktop. Just use proper VNC/SSH client. I was using VNC Viewer for VNC and ConnectBot for SSH.


    All right, all this looks good, but how to get dualboot and run Linux natively? As you know, our device already has dual boot: regular Android and recovery. We'll just replace recovery with our Linux kernel (zImage) and initramfs (initrd.img), so they'll boot our Linux. For sure we can use the native Android kernel, but if you want to get for example CIFS filesystem support and working touchscreen - you need to compile your own kernel. For that purpose we need:
    I've unpacked all this to /opt folder:
    • /opt/linux - unpacked kernel sources
    • /opt/platform_prebuilt-master - prebuilt toolchain
    You'll also need my kernel config and patch based on the config/patch ((fix for touchscreen and power button) provided by exception13 - I've just tuned it and added a few fixes for successfull compilation. Please find both files attached to this message. The file config.txt must be renamed to .config and moved to /opt/linux, n8000.patch must be applied to kernel sources (something like "cd /opt/linux && patch -s -p1 ../n8000.patch"). My kernel config uses the next kernel parameters: "root=/dev/loop0 ro rootfstype=ext4 rootwait quiet". E.g. it suggests to boot from loopback device, but you can change it to /dev/mmcblkXX, if you have already re-partitioned EMMC and installed Linux on separate partition (I'm have done this later). Any change to kernel config can be done using "make menuconfig" inside kernel sources folder. After you done, run this:
    Code:
    export ARCH=arm
    export SUBARCH=armv7h
    export CROSS_COMPILE=/opt/platform_prebuilt-master/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
    cd /opt/linux
    make -j2
    make modules_install
    After compilation is done, you can find brend new shining kernel image as /opt/linux/arch/arm/boot/zImage file, and modules in /lib/modules/3.0.31 folder. I've copied those files to my chrooted Linux using SCP (zImage to /boot and modules folder to /lib/modules), and all other things was doing here: started LinuxDeploy, pressed Play, logged in to Linux using SSH.

    So, we have kernel, modules, but still need to built initrd.img and replace original recovery with ours. First we need to get original recovery image, because we'll just update it and write back. By the second, we want to keep copy in safe place, just in case:
    Code:
    dd if=/dev/block/mmcblk0p6 of=/boot/recovery.img
    cp /boot/recovery.img /boot/recovery.img_orig
    Preparing initrd.img depends on distribution you are working with. My ArchLinux has mkinitcpio utility, but as soon as I want it to boot from loopback device I did a few tricks based on the next HowTo: http://felixc.at/ArchLinux-loopback (I just needed /lib/initcpio/hooks/looproot file and /lib/initcpio/install/looproot, fixed /etc/mkinitcpio.conf by adding looproot to HOOKS, and properly changed /etc/fstab). Please note that internal sdcard is not ntfs or vfat, it is ext4, so the file looproot should be a bit different, and there is no need to include ntfs-3g or fuse into initrd. Also the path to arch.img file is /media/arch.img on /dev/mmcblk0p12 partition, so the looproot hook will look like this:
    Code:
    # vim:set ft=sh:
    run_hook ()
    {
            # Now mount the host filesystem
            mkdir /host
            mount -t ext4 /dev/mmcblk0p12 /host -o defaults,noatime,acl,barrier=1,data=ordered
    
            # And the loop filesystem
            losetup /dev/loop0 /host/media/arch.img
            mount -t ext4 /host/media/arch.img /new_root -o defaults,noatime,acl,barrier=1,data=ordered
            mount --bind /host /new_root/mnt/sdcard
    }
    Then I've run:
    Code:
    cd /boot
    mkinitcpio -k 3.0.31 -g initrd.img
    Okay, right now a few other tricks :) Install abootimg utilities package (ArchLinux users can find them in AUR if I remember correcly). Then run "abootimg-unpack-initrd" in "/boot" folder, this will create "/boot/ramdisk" directory, go into it and edit "init" file commenting out ""$mount_handler" /new_root" line. Then run "abootimg-pack-initrd" in the same path and get initrd.img finally ready. To update recovery.img with our files and write it back to the system run:
    Code:
    cd /boot
    abootimg -u recovery.img -k zImage -r initrd.img
    dd if=/boot/recovery.img of=/dev/block/mmcblk0p6
    Well done! Now, we are almost ready to reboot.


    The last things: install Xorg + fbvev video driver + evdev input driver + some login manager ("lightdm" for example) + some onscreen keyboard (I would recommend "florence"). Configure login manager to autologin. Make /etc/X11/xorg.conf looking like this:
    Code:
    Section "ServerLayout"
        Identifier  "Layout0"
        Screen      "Screen0"
        InputDevice "Mouse0" "CorePointer"
        InputDevice "Keyboard0" "CoreKeyboard"
        InputDevice "Touchscreen0" "SendCoreEvents"
    EndSection
    
    Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "evdev"
        Option      "Device"        "/dev/input/event0"
    EndSection
    
    Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "evdev"
        Option      "Device"        "/dev/input/event6"
        Option      "ButtonMapping" "1 3 0"
    EndSection
    
    Section "InputDevice"
        Identifier  "Touchscreen0"
        Driver      "evdev"
        Option      "Device"        "/dev/input/event1"
        Option      "Calibration"   "0 4096 0 4096"
    EndSection
    
    Section "Device"
        Identifier  "Card0"
        Driver      "fbdev"
        Option      "fbdev"            "/dev/fb0"
        VendorName  "Unknown"
        BoardName   "Unknown"
    EndSection
    
    Section "Screen"
        Identifier  "Screen0"
        Device      "Card0"
        DefaultDepth        24
    EndSection
    
    Section "DRI"
        Mode 0666
    EndSection

    if all is okay, we can logout our chrooted system, press "pause" button in LinuxDeploy program and try to poweroff tablet. Press buttons "Volume-Up" and "Power", wait until Linux booting messages appear, and release buttons. If you've done all correctly, graphics should be started and LXDE too. Touchscreen must be working as touchscreen :), S-Pen as mouse, when tablet is idle for a long time and screen becomes dark - just press "Power" button.

    If something is wrong - you can reboot your tablet to Android, login to chroot via LinuxDeploy and fix anything you need.

    The next things we will do are: configure WiFi, Bluetooth, sound. And also will repartition emmc and move Linux to the internal native partition (optional). See my next messages...
    10
    ArchLinux

    For the interested people, below are the links to the updated recovery and rootfs images with ArchLinux:
    - recovery: http://dfiles.ru/files/r6y96x5oo
    - rootfs: http://dfiles.ru/files/dcolx02nj

    Changelog:
    - rootfs image size increased up to 3Gb
    - Samsung Kernel Update 5 + our patches + working Mali/UMP support merged
    - LXDM/XFCE stuff removed
    - ArchLinux updates installed
    - GDM/Gnome3 + extra packages installed
    - wpa_supplicant disabled, NetworkManager activated instead
    - Mali video driver and all dependencies installed and configured, so Gnome UI acceleration should work

    How to install on to device with stock firmware:
    - root your device and make sure you have "dd" utility
    - backup your stock recovery partition just in case (dd if=/dev/block/mmcblk0p6 of=recovery.img_orig)
    - burn recovery image to recovery partition (dd if=recovery.img of=/dev/block/mmcblk0p6)
    - put rootfs file to the "internal" sdcard
    - reboot to recovery and see Linux booting
    - see GDM, select "android" user, enable onscreen keyboard if needed (in the accessibility menu, top right corner), type "changeme" password and press enter

    P.S. ADB interface still works in case something is wrong and you need to login to Linux "from the backdoor"

    P.P.S. The images are posted "As Is", feel free to change anything you think works incorrectly or you can do better
    7
    i create http://code.google.com/p/opensgn. current in this repo my linux kernel for n8000 and some stuff
    6
    I have got a few advices and help from exception13, and has successfully compiled kernel, replaced recovery and now have ArchLinux working natively on my N8000. However it is in loop-filesystem placed on emmc, instead of repartitioning. But this might be more useful for most of users. So, I'm going to post a small HowTo and probably something pre-ready for you very soon.

    P.S. Attached is the picture of "Home PC" based on N8000 + Apple Wireless Keyboard + bluetooth mouse :)