Instructions

Creating a bootable Aceruim USB stick

After installing the system, upgrade to Ubuntu version 17.10.1!

For use the latest version of the kernel WIP 4.17.*-avl- * upgrade to Ubuntu version 18.04!

standard-readme compliant Donate with Bitcoin Donate with Ethereum

_config.yml

Kernel 4.8.4 for Acer Aspire SW5-012/Fendi2 (Z3537F)

(based on Ubuntu 16.10 Yakkety Yak)

Before installation:

Update BIOS to version 1.20

  • tested, working

Strictly disable the BIOS option:

D2D Recovery - Disable

FTPM Support - Disable

Secure Boot - Disable

Acer Aspire SW5-012 / Fendi2, BIOS V1.20 23/03/2016

Download Aceruim Live USB image

Extract the image by running following command in your downloads directory:

$ tar xzf acerium-live-cd-16.10-kernel_4.8.4.tar.gz

Prepare a Flash Drive:

$ gdisk /dev/sdX

Where X is the letter of your connected USB drive (for example, /dev/sdb).

To find out drive name, run “dmesg | tail” after plugging it in and look for a string like:
“[2096193.109767] sd 15:0:0:0: [sdb] Attached SCSI removable disk”.

Remove all existing partitions (menu item d) and create a big bootable UEFI partition ~1.5G (“n” command).

Don't forget to use “ef00” partition type.

Write the changes (w).

Refresh partitions:

$ partprobe

Create a FAT32 file system on the Flash Drive’s EFI partition:

$ mkfs.vfat -F 32 -n Acerium /dev/sdX1

Where X is the letter of your connected USB drive.

Mount new partition:

$ mount /dev/sdX1 /mnt

Where X is the letter of your connected USB drive.

Copy to the Flash Drive the contents of the image folder:

$ rsync -av /home/user/acerium-live-cd-16.10-kernel_4.8.4/* /mnt

Unmount flash drive:

$ umount /mnt

Now you can boot your Acer Aspire Switch 10 either in Live USB or installation mode and install the system.

* disk image has been tested for installation and should work

Model: MMC HCG8e (sd/mmc)
Disk /dev/mmcblk1: 62,5GB
Sector size (logical/physical): 512B / 512B
Partition Table: gpt
disc Flags:

Number Start End Size File System Name Flags
1 1049kB 120MB 118MB fat32 boot, esp
2 120MB 58,1GB 58,0GB btrfs
3 58,1GB 58,2GB 80,7MB non-fs bios_grub
4 58,2GB 62,5GB 4344MB linux-swap (v1)

Pay attention to partition flags.


If you have wifi chipset RTL8723BS

Download rtl8723bs firmware


Extract the archive and copy all files to /lib/firmware/rtlwifi

  Use kernel module r8723bs,
  add to /etc/modules load r8723bs

  or load from console # sudo modprobe r8723bs

Bluetooth

  Add to /etc/modules load btusb
  or load from console # sudo modprobe btusb

  Add to /etc/rc.local

rfkill unblock bluetooth
hciattach /dev/ttyS4 bcm2035 921600 flow

Brightness

Download, unpack and copy the file brightness.sh to the /etc/acpi/

Use:

Brightness up
# /etc/acpi/brightness.sh up

Brightness down
# /etc/acpi/brightness.sh down


You can use keyboard shortcuts to system settings.

Screen rotation

Bonuses by Peter Nelson!

I wrote a script to rotate the screen from portrait mode to landscape and back. The tricky bit was getting the touch-screen, touch-pad and mouse axes all properly inverted. It’s really icing on the cake for this little hybrid. With the help of the Onboard keyboard (standard Ubuntu) it makes a really nice portrait-mode tablet, now.

You can grab the script and install instructions from its github page:

Download script


  • /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="acpi_osi=!! spectre_v2=auto pti=auto systemd.gpt_auto=0 ipv6.disable=1 noresume apparmor=0 intel_idle.max_cstate=0 edd=skipmbr tsc=reliable clocksource=tsc nmi_watchdog=0"
If yours update microcode CPU is supported "IBRS/IBPB"
then enable IBRS option:

"spectre_v2=ibrs"

IBPB will be turned on automatically.

Example:

$ dmesg | egrep microcode

[0.000000] microcode: microcode updated early to revision 0x836, date = 2018-01-10
[2.783816] microcode: sig=0x30678, pf=0x2, revision=0x836
[2.786372] microcode: Microcode Update Driver: v2.2.

$ dmesg | egrep Spectre

[0.012444] Spectre V2 : ibrs selected on command line.
[0.012445] Spectre V2 : Mitigation: Indirect Branch Restricted Speculation
[0.012446] Spectre V2 : IBPB - Enabling Indirect Branch Prediction Barrier
[0.012447] Spectre V2 : IBRS - Enabling Restricted Speculation for firmware calls

~$ grep . /sys/devices/system/cpu/vulnerabilities/*

/sys/devices/system/cpu/vulnerabilities/meltdown:Mitigation:PTI
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation:__user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation:Indirect Branch Restricted Speculation,IBPB
  • /boot/grub/custom.cfg

Change the UUID to your value!

menuentry "Start Ubuntu Bionic" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-1897a202-d46f-4aa6-aa5b-b9a7cf9aaed2' {
                recordfail
                load_video
                insmod gzio
                insmod xzio
                insmod part_gpt
                insmod btrfs
                set root='hd0,gpt3'
                search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 1897a202-d46f-4aa6-aa5b-b9a7cf9aaed2
                echo    'Loading Linux 4.15.14-wip-x44-atom …'
                linux   /@/boot/vmlinuz-4.15.14-wip-x44-atom root=UUID=1897a202-d46f-4aa6-aa5b-b9a7cf9aaed2 ro rootflags=subvol=@  acpi_osi=!! spectre_v2=ibrs pti=auto systemd.gpt_auto=0 ipv6.disable=1 noresume apparmor=0 intel_idle.max_cstate=0 edd=skipmbr tsc=reliable clocksource=tsc nmi_watchdog=0
                echo    'Loading initrd …'
                initrd  /@/boot/initrd.img-4.15.14-wip-x44-atom
}
  • /etc/initramfs-tools/modules
# Add these lines to the file
intel_rapl
hid_acer
hid_multitouch
  • /etc/modprobe.d/blacklist.conf
# Add these lines to the file
blacklist mei
blacklist mei_txe
blacklist hid_generic
blacklist b43
blacklist b43legacy
blacklist ssb
blacklist bcm43xx
blacklist cm3218
blacklist cm32181
blacklist ov2722
blacklist atomisp_ov2722
blacklist v4l2_common
blacklist videodev
blacklist zfs
blacklist mac_hid
blacklist acer_wmi
# Fix bug for init Power key, view config rc.local
blacklist gpio_keys
blacklist soc_button_array
  • /etc/fstab
# / was on /dev/mmcblk1p2 during installation
UUID=your_disk_UUID / btrfs space_cache,thread_pool=2,compress=lzo,defaults,ssd,autodefrag,subvol=@ 0 1

# /home was on /dev/mmcblk1p2 during installation
UUID=your_disk_UUID /home btrfs space_cache,thread_pool=2,compress=lzo,defaults,noatime,nodiratime,ssd,autodefrag,subvol=@home 0 2
  • /etc/sysctl.conf
# Network
vm.min_free_kbytes = 32768
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.tcp_max_orphans = 65536
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_mem = 50576   64768   98152
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_syncookies = 1
net.netfilter.nf_conntrack_max = 16777216
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_congestion_control = westwood
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.route.flush = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.wlan0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.wlan0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rfc1337 = 1
net.ipv4.ip_forward = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 1000
net.core.rmem_default = 65536
net.core.wmem_default = 65536
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
fs.inotify.max_user_watches = 16777216
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.ip_default_ttl = 63
net.ipv4.tcp_ecn = 1
net.core.default_qdisc = fq_codel
#
# Lowlatency Kernel Tuning
kernel.perf_cpu_time_max_percent=0
#
# IO shedulers
vm.dirty_background_bytes=67108864
vm.dirty_bytes=134217728
  • /etc/network/interfaces
wireless-power off
  • /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
[connection]
wifi.powersave = 2
  • /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#
rfkill unblock bluetooth
#
hciattach /dev/ttyS4 bcm2035 921600 flow
#
# Fix brcmfmac error
sleep 20
iwconfig wlan0 power off
#
# Fix bug for init Power key
sleep 5
modprobe gpio_keys
modprobe soc_button_array
#
exit 0

and run command:

sudo systemctl enable rc-local.service


Fix start X session

Just add to /etc/default/grub

i915.modeset=1

and then regenerate grub cfg with:

update-grub2
And add this cfg file for X, /etc/X11/xorg.conf.d/20-intel.conf:

Section "Device"
Identifier  "Intel Graphics"
Driver      "modesetting"
Option      "AccelMethod"    "glamor"
EndSection
If start X session fail and error from system journal :

lightdm[1182]: PAM unable to dlopen(pam_kwallet.so): 
/lib/security/pam_kwallet.so: cannot open shared object file: No such file or directory

then turn off all the lines containing pam_kwallet.co and pam_kwallet5.so in
all the files in this directory /etc/pam.d

Intel – Fix for Atom MMC/GPT warning.


 I had been getting a warning on boot with recent kernels on my 
Intel Atom-based UP system, and found a workaround.
The error flagged is – apparently – harmless, and is due to systemd
not being able to recognise some mmc disk partitions at that stage of the boot process.

......
[ 5.124250] systemd-gpt-auto-generator[416]: Failed to dissect: Input/output error
......

The workaround is to add systemd.gpt_auto=0 to the kernel command line.


_config.yml

Update kernel from my build (DEB packages):

BUILDBOX automatically builds the packages. Look at the file date and the build number.

Kernel for Ubuntu 18.04 LTS Bionic

WIP Kernel

  • Full kernel adaptation to version Ubuntu 18.04 LTS Bionic.
  • Full kernel adaptation to build GCC8.
  • Optimized to take full advantage of high-performance.
  • Supports all recent 64-bit versions of Debian and Ubuntu-based systems.

Main Features:

  • Tuned CPU for Intel i5/i7/Atom and Amd k10 platform.
  • PDS CPU Scheduler & Multi-Queue I/O Block Layer w/ BFQ-MQ for smoothness and responsiveness.
  • Caching, Virtual Memory Manager and CPU Governor Improvements.
  • General-purpose Multitasking Kernel.
  • Built on the latest GCC8
  • DRM Optimized Performance.
  • Intel CPUFreq (P-State passive mode).
  • ZFS, BFQ and Ureadahead support available.

Full support:

  • Indirect Branch Restricted Speculation (IBRS)
  • Indirect Branch Prediction Barrier (IBPB)

Add Linux Kernel Runtime Guard (LKRG)

Linux Kernel Runtime Guard (LKRG) is a loadable kernel module that performs runtime integrity checking of the Linux kernel and detection of security vulnerability exploits against the kernel.

Install

Update Intel microcode for use IBRS/IBPB:

Download

Download the installation packages for your CPU, only x86_64 packages:

Download Download


EOL Kernel 4.14.* for Acer Aspire SW5-012/Fendi2 ONLY!

  • Acerium is a mainline Linux kernel distribution with custom settings.
  • Optimized to take full advantage of high-performance for Acer Aspire SW5-012/Fendi2.
  • Supports all recent 64-bit versions of Debian and Ubuntu-based systems.

Main Features:

  • Tuned CPU for ATOM platform.
  • Tuned CPU Core Scheduler & I/O Block Layer for responsiveness.
  • Caching, Virtual Memory Manager and CPU Governor Improvements.
  • General-purpose Multitasking Kernel.
  • Built on the latest GCC 7.
  • DRM Optimized Performance.
  • Westwood+ TCP Congestion Control.
  • Intel CPUFreq (P-State passive mode).
  • AUFS, BFQ and Ureadahead support available.

Download packages Read this before installing GitHUB Repo

EOL kernel version:

Kernel 4.8.17-27.29-acerium+MuQSS [EOL]
In this kernel, MuQSS (Multiple Queue Skiplist Scheduler) is enabled by default.

Download packages GitHUB Repo


_config.yml

_config.yml

_config.yml

_config.yml

Donate with Bitcoin Donate with Ethereum


English version by Alexey Polevoy, updated by Peter Nelson

Written on November 5, 2016