blade

English is not my native language, so please be kind to my mistakes.

I love my razerblade 2016 (late) laptop, thanks to my aunt sylvia and here friend john i have this personal jewel in my equipment witch is not avaiable in my country. But I broke the windows installation and the build in recovery process did not work. After many emails over few months with razer and three usb recovery sticks later that are not able to recover my windows installation, razer decided that my laptop has to be broken and i have to send in and pay for repair.

So i decided to give linux a chance to shine. I tryed a few Linux Distribution and Arch Linux has a well documented section about razer blade laptops.

To test if Arch Linux works with my laptop and to play around with diffrent setups, in install Arch Linux on a external usbdrive, in my case a WD My Passport SSD and a Kingston HyperX Savage.

What works is:

  • Full system - not a live CD
  • X Windows (with xfce)
  • nvidia GTX1060
  • Wireless
  • Audio
  • Trackpad operates (with natural scrolling)
  • Non-root user is configured with sudo rights
  • A browser and vlc is installed
  • lutris
  • Steam
  • Keyboard Chroma Support
  • Webcam
  • Touchscreen (my model dont have one)
  • Razer Core (i dont have one)

What not works is:

  • hypernation

prepare

The first problem was howto create an usbdrive without running arch installation? My life saver was Virtualbox.

Create a arch linux virtual maschine without harddisk, but with usb support.

vm

download the arch iso image and add it to the virtual maschine.

vm

add the usbdrive to the virtual maschine.

vm

boot the iso image.

vm

after a few seconds.

vm

lets see if the usbdrive is present.

vm

Set the keyboard layout

loadkeys en_US.UTF-8

Check internet connection ( should working out of the box, the virtualbox host is providing network )

ping google.com

install on usbdrive

The short manual here, asumes that you are running the commands inside virtualbox, if not you must change some commands specialy the partition part or you may destroy some storage device.

Erase the usbdrive.

dd if=/dev/zero of=/dev/sda bs=1k count=2048 
sgdisk -z /dev/sda

We create 2 partitions, one for boot and one root, we left out swap to reduce write cycles on the usbdrive.

Create GPT partition scheme

sgdisk -o /dev/sda 

We use all for Linux System Partition but left 500MB free for EFI.

sgdisk -n 1:0:-500M /dev/sda 
sgdisk -t 1:8300 /dev/sda 

And create 500MB EFI System Partition.

sgdisk -n 2:-500M:-0 /dev/sda 
sgdisk -t 2:ef00 /dev/sda 

Create filesystem for linux root.

mkfs.ext4 -O "^has_journal" /dev/sda1

Create filesystem for uefi boot.

mkfs.fat -F32 /dev/sda2 

Mount filesystems.

mount /dev/sda1 /mnt
mkdir /mnt/boot
mount /dev/sda2 /mnt/boot

Bootstrap basic installation.

pacstrap /mnt base base-devel intel-ucode

Generate fstab.

genfstab  -U -p /mnt > /mnt/etc/fstab

Chroot in to the new system.

arch-chroot /mnt

setup and configure the new linux system

Set timezone to UTC.

ln -sf /usr/share/zoneinfo/UTC /etc/localtime

Set locale to en_US.UTF-8.

sed -i '/^#en_US.UTF-8 UTF-8/s/^#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
locale-gen

Ensure the LANG variable is set in /etc/locale.conf

echo LANG=en_US.UTF-8 > /etc/locale.conf 

Set hostname.

echo razerblade > /etc/hostname

And add to /etc/hosts.

echo "127.0.1.1    razerblade.localdomain    razerblade" >> /etc/hosts

Enable multilib in pacman configuration.

sed -i "/\[multilib\]/,/Include/"'s/^#//' /etc/pacman.conf

Install software.

pacman -Sy grub efibootmgr ifplugd iw xorg-server xorg-xinit xf86-video-amdgpu xf86-video-ati xf86-video-intel xf86-input-synaptics nvidia nvidia-utils nvidia-settings nvidia-libgl alsa-utils acpi acpid dbus avahi cups cronie ttf-dejavu firefox vlc arch-install-scripts exfat-utils dosfstools exfat-utils ttf-hack zip unzip git util-linux xfce4 xfce4-goodies sddm vulkan-icd-loader lib32-vulkan-icd-loader lib32-sqlite lib32-gnutls lib32-libldap lib32-libgpg-error lib32-libpulse lib32-alsa-plugins lib32-mpg123 lib32-nvidia-libgl lutris wine-staging steam

We install xf86-video-amdgpu and xf86-video-ati video drivers, so we can use the usbdrive on other computers with non nvidia gfx.

We install first wine and then we remove it again, we need only the dependencies and the system based wine installation will collide later with lutris.

pacman -R wine-staging 

Create RAM disk image.

sed -i '/^HOOKS=/s/block //' /etc/mkinitcpio.conf
sed -i '/^HOOKS=/s/autodetect/block autodetect/' /etc/mkinitcpio.conf
mkinitcpio -p linux

Journal config (reducing writes to the usbdrive)

sed -i '/^#Storage=/s/#Storage=auto/Storage=volatile/' /etc/systemd/journald.conf
sed -i '/^#SystemMaxUse=/s/#SystemMaxUse=/SystemMaxUse=16M/' /etc/systemd/journald.conf

Install boot loader.

grub-install --target=x86_64-efi --efi-directory /boot --boot-directory /boot --removable 

Set root password.

echo -e "razerblade\nrazerblade" | passwd root

Adding a user account with sudo privileges.

useradd -m -g users -s /bin/bash razerblade

Set password.

echo -e "razerblade\nrazerblade" | passwd razerblade 

Enable weel group in sudo.

sed -i'/^# %wheel ALL=(ALL) ALL/s/^# %wheel/%wheel/' /etc/sudoers

Add user to groups.

gpasswd -a razerblade wheel
gpasswd -a razerblade audio
gpasswd -a razerblade video
gpasswd -a razerblade games
gpasswd -a razerblade power

Enable deamons.

systemctl enable acpid
systemctl enable avahi-daemon
systemctl enable org.cups.cupsd.service
systemctl enable cronie

Enable desktop login.

systemctl enable sddm

Fix webcam (razerblade 2016).

echo "options uvcvideo quirks=512" >> /etc/modprobe.d/uvcvideo.conf

Fix suspend loop (razerblade 2016).

sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT=/s/quiet/quiet button.lid_init_state=open/' /etc/default/grub
grub-mkconfig -o /boot/grub/grub.cfg 

Enable esync.

sudo sed -i '/^#DefaultLimitNOFILE=/s/^#DefaultLimitNOFILE=/DefaultLimitNOFILE=1048576/' /etc/systemd/system.conf
sudo sed -i '/^#DefaultLimitNOFILE=/s/^#DefaultLimitNOFILE=/DefaultLimitNOFILE=1048576/' /etc/systemd/user.conf

I prefer the traditional network interface names.

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

We exit the arch-chroot.

exit

Unmount the usbdrive.

umount /mnt/boot /mnt

and final shutdown the virtual maschine.

poweroff

So now you can boot arch linux from usbdrive on the razerblade 2016 and start installing games. Dont forget to get the network up with ‘sudo wifi-menu’.

after few days of testing

I have Arch linux installed on the internal ssd, i just add a partition for swap, installed ssd trim support and install plasma instead of xfce. The laptop works very very well with arch linux (no Razer the laptop is not broken), so i will spend some time to check out arch linux on razerblade 2016. Maybe Razer will send my a working recovery stick.

Update, adding Chroma Support

    curl -o PKGBUILD https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=cower
    makepkg PKGBUILD --skippgpcheck --install --needed

    curl -o PKGBUILD https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=pacaur
    makepkg PKGBUILD --install --needed

    pacaur -S openrazer-meta polychromatic

    sudo gpasswd -a razerblade plugdev

used manuals

https://gist.github.com/elerch/678941eb670324ffc3f261eabba81310

http://valleycat.org/linux/arch-usb.html?i=2

https://wiki.archlinux.org/index.php/Razer_Blade

https://wiki.archlinux.org/index.php/Installing_Arch_Linux_on_a_USB_key

https://github.com/lutris/lutris/wiki/How-to:-Esync