Installing Linux on the Asus GM501GS-XS74:
For starters,
If you are dual booting, install Windows first, and partition from there with a tool such as Minitool. You'll only need two partitions, one for root and optionally, a small one for swap (say, 8GB). Partition them as appropriate, and when done, reboot into the UEFI menu and ensure that:
(a). Secure boot is disabled (otherwise you won't be able to load up proprietary drivers needed for the Nvidia GPU).
(b). Confirm that you're booting in UEFI mode ONLY. This is the default. CSM should remain disabled. Here's why.
(c). Ensure that SATA mode in the BIOS is set strictly to AHCI. RAID mode will NOT work with Linux.
The standard Ubuntu 18.04LTS ISOs will not work, for two reasons:
-
The desktop edition acts up badly with both the touchpad and external mice, so even if you get to load the live environment (after blacklisting the nouveau driver via the pre-boot grub option
blacklist=nouveau
), you won't be able to proceed with the next steps such as guided partitioning, etc. -
The Ubuntu server image offered on the main download page disallows the use of existing partitions on your SSDs, which could be detrimental if you're dual booting. And this is where the alternate ISO comes in. Fetch it from here: http://cdimage.ubuntu.com/releases/18.04/release/
Then, create a bootable flash drive using etcher.io . If you can get Rufus to work with your flash drives (I had no such luck), you can use that too. When done, leave the USB drive plugged in and reboot to your UEFI (firmware settings). The shortcut is F2. Therein, go to the exit menu, boot override, and select your flash drive's partition with Linux on it. It will be listed as "drive-name/partition-number"
.
At this point, you'll also want to ensure that you have a plugged in Ethernet cable at the ready. The installer will be able to configure it as appropriate (select DHCP, its' the fastest option when you get to that point).
Start the Ubuntu server installer as you would, and take note of the custom partitioning settings:
(a). For the partition designated for root, set its' file-system as ext4, mount point /
. Simple.
(b). The swap partition will be automatically recognized, if you so chose to have one.
(c). The ESP, where the UEFI-based installation boots from, will also be automatically detected and mounted as needed. This is that 100MB~ partition that the Windows installer creates and is marked as 'SYSTEM RESERVED'. Read more about it here.
The rest should be pretty straight-forward, even if you're new to Linux. The guided installer is driven primarily by keyboard input, needs no mice and you won't run into any modesetting issues. Use this as a refresher.
When done, reboot. You'll notice that grub will be the default boot manager. Go back to Linux so we can finish setting up the desktop.
When done booting, log in (with the username and password you set up earlier) and install the latest updates first. Remember that ethernet cable you had to plug in? That interface was configured by the installer, and its' configuration remains persistent , thanks to a new abstraction layer in 18.04LTS named netplan.io.
Now, update your system:
Run:
sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
Next, install the Ubuntu desktop via tasksel:
sudo tasksel install ubuntu-desktop
You can see the list of alternate environments by running:
tasksel --list-task
For example, if you want KDE, you could run:
sudo tasksel install kubuntu-desktop
When you're done with that step, proceed to the next bit: The drivers for your GPUs.
Next, add the NVIDIA proprietary driver repository and Oibaf's PPAs as shown:
sudo add-apt-repository ppa:graphics-drivers/ppa -y && sudo add-apt-repository ppa:oibaf/graphics-drivers
Then update your software sources:
sudo apt-get update
Followed by an upgrade (to deploy the latest FOSS GPU drivers for your Intel card):
sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
And now, install the latest NVIDIA driver (R415 as of the time of writing):
sudo apt-get -y install nvidia-driver-430
For Conky, install the conky-all
package:
sudo apt install conky-all
Then add the scheduling module to /etc/modules-load.d/modules.conf
:
nano /etc/modules-load.d/modules.conf
Content:
mq-deadline
When done, make the following changes to your grub configuration file, ensuring that the line below looks exactly as shown (under /etc/default/grub
, use your preferred editor):
GRUB_CMDLINE_LINUX_DEFAULT="acpi_osi=! acpi_osi='Windows 2012' blacklist=nouveau scsi_mod.use_blk_mq=1 elevator=mq-deadline quiet splash i8042.reset"
The important options there are as follows:
-
The
acpi_osi
setting ensures that you won't hang on reboot, or get stuck withlspci
. It compensates for how Linux handles ACPI table parsing on these newer models. -
Blacklist nouveau here because that module, if loaded, will lock up your system.
-
The
scsi_mod.use_blk_mq=1 elevator=mq-deadline
option enables the block multi-queue mode with the deadline scheduler in place for all block devices on the system. Ideal for SSDs. -
The
i8042.reset
option will allow the touchpad to be detected.
Now, generate new grub configs by running:
sudo update-grub
And reboot at this stage.
When you boot up, you'll be greeted by the fruits of your labor as shown below: A clean, minimalist Ubuntu desktop that you can tweak to your heart's content.
So far, no show stoppers encountered so far.
Here's the boot log with the ACPI _OSI
override above enabled:
[ 0.314578] ACPI: Core revision 20180810
[ 0.781723] PM: Registering ACPI NVS region [mem 0x6a42c000-0x6a541fff] (1138688 bytes)
[ 0.784222] ACPI: bus type PCI registered
[ 0.784222] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 0.785058] ACPI: Disabled all _OSI OS vendors
[ 0.785058] ACPI: Added _OSI(Module Device)
[ 0.785058] ACPI: Added _OSI(Processor Device)
[ 0.785058] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.785058] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.785058] ACPI: Added _OSI(Linux-Dell-Video)
[ 0.785058] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
[ 0.785058] ACPI: Added _OSI(Windows 2017.2)
[ 0.785058] ACPI: EC: EC started
[ 0.785058] ACPI: EC: interrupt blocked
[ 0.785058] ACPI: \: Used as first EC
[ 0.785058] ACPI: \: GPE=0x27, EC_CMD/EC_SC=0x66, EC_DATA=0x62
[ 0.785058] ACPI: \: Used as boot ECDT EC to handle transactions
[ 0.861884] ACPI: 11 ACPI AML tables successfully acquired and loaded
[ 0.892135] ACPI: Dynamic OEM Table Load:
[ 0.892142] ACPI: SSDT 0xFFFF8CB229AF0000 0005BE (v02 PmRef Cpu0Ist 00003000 INTL 20160527)
[ 0.892914] ACPI: \_SB_.PR00: _OSC native thermal LVT Acked
[ 0.895370] ACPI: Dynamic OEM Table Load:
[ 0.895376] ACPI: SSDT 0xFFFF8CB2290C1400 000400 (v02 PmRef Cpu0Cst 00003001 INTL 20160527)
[ 0.896663] ACPI: Dynamic OEM Table Load:
[ 0.896672] ACPI: SSDT 0xFFFF8CB229197000 000EF1 (v02 PmRef ApIst 00003000 INTL 20160527)
[ 0.898522] ACPI: Dynamic OEM Table Load:
[ 0.898528] ACPI: SSDT 0xFFFF8CB2290C4800 00030A (v02 PmRef ApCst 00003000 INTL 20160527)
[ 0.901261] ACPI: Interpreter enabled
[ 0.901313] ACPI: (supports S0 S3 S4 S5)
[ 0.901314] ACPI: Using IOAPIC for interrupt routing
[ 0.901366] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 0.903309] ACPI: Enabled 9 GPEs in block 00 to 7F
[ 0.911265] ACPI: Power Resource [PG00] (on)
[ 0.921746] ACPI: Power Resource [USBC] (on)
[ 0.926563] ACPI: Power Resource [V0PR] (on)
[ 0.926846] ACPI: Power Resource [V1PR] (on)
[ 0.927121] ACPI: Power Resource [V2PR] (on)
[ 0.933970] ACPI: Power Resource [WRST] (on)
[ 0.943034] ACPI: Power Resource [PIN] (off)
[ 0.943683] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe])
[ 0.978417] ACPI: PCI Interrupt Link [LNKA] (IRQs) *0
[ 0.978469] ACPI: PCI Interrupt Link [LNKB] (IRQs) *1
[ 0.978519] ACPI: PCI Interrupt Link [LNKC] (IRQs) *0
[ 0.978568] ACPI: PCI Interrupt Link [LNKD] (IRQs) *0
[ 0.978617] ACPI: PCI Interrupt Link [LNKE] (IRQs) *0
[ 0.978666] ACPI: PCI Interrupt Link [LNKF] (IRQs) *0
[ 0.978715] ACPI: PCI Interrupt Link [LNKG] (IRQs) *0
[ 0.978763] ACPI: PCI Interrupt Link [LNKH] (IRQs) *0
[ 0.983313] ACPI: EC: interrupt unblocked
[ 0.983313] ACPI: EC: event unblocked
[ 0.983313] ACPI: \_SB_.PCI0.LPCB.EC0_: GPE=0x27, EC_CMD/EC_SC=0x66, EC_DATA=0x62
[ 0.983313] ACPI: \_SB_.PCI0.LPCB.EC0_: Used as boot DSDT EC to handle transactions and events
[ 0.983505] ACPI: bus type USB registered
[ 1.003596] PCI: Using ACPI for IRQ routing
[ 1.091155] pnp: PnP ACPI init
[ 1.091453] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 1.091477] pnp 00:01: Plug and Play ACPI device, IDs PNP0b00 (active)
[ 1.091615] system 00:02: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active)
[ 1.091839] pnp 00:03: Plug and Play ACPI device, IDs ATK3001 PNP030b (active)
[ 1.092119] system 00:04: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 1.092456] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 1.092898] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 1.094501] system 00:07: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 1.095812] pnp: PnP ACPI: found 8 devices
[ 2.131521] ACPI: AC Adapter [AC0] (on-line)
[ 2.131607] ACPI: Lid Switch [LID]
[ 2.131670] ACPI: Sleep Button [SLPB]
[ 2.131702] ACPI: Power Button [PWRB]
[ 2.131742] ACPI: Power Button [PWRF]
[ 2.133359] ACPI: Thermal Zone [THRM] (52 C)
[ 2.143621] battery: ACPI: Battery Slot [BAT0] (battery present)
[ 3.117448] [drm:intel_opregion_setup [i915]] Public ACPI methods supported
[ 3.119365] [drm:intel_opregion_setup [i915]] Found valid VBT in ACPI OpRegion (Mailbox #4)
[ 3.157152] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no)
[ 3.157531] ACPI: Video Device [PEGP] (multi-head: no rom: yes post: no)
[ 3.361558] ata1.00: ACPI cmd ef/10:06:00:00:00:00 (SET FEATURES) succeeded
[ 3.361560] ata1.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out
[ 3.361561] ata1.00: ACPI cmd b1/c1:00:00:00:00:00 (DEVICE CONFIGURATION OVERLAY) filtered out
[ 3.367131] ata1.00: ACPI cmd ef/10:06:00:00:00:00 (SET FEATURES) succeeded
[ 3.367133] ata1.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out
[ 3.367134] ata1.00: ACPI cmd b1/c1:00:00:00:00:00 (DEVICE CONFIGURATION OVERLAY) filtered out
[ 7.707528] ACPI Warning: \_SB.IETM._TRT: Return Package has no elements (empty) (20180810/nsprepkg-96)
[ 7.744101] ACPI Warning: \_SB.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20180810/nsarguments-66)
Continue on to system monitoring with conky below.
System monitoring:
See the conky script below. Note that you'll need to set hddtemp in daemon mode if you want HDD temps in the app:
Notes:
On my system, I recently upgraded to the Samsung 860 Evo 4 TB SSD from a 2 TB Crucial MX500.
The temperature sensor on this drive isn't known to hddtemp
, so we must add its' entry.
First, check the drive's SMART data output for temperature sensor data and look for the field "ID#":
sudo smartctl /dev/sda -a | grep -i Temp
190 Airflow_Temperature_Cel 0x0032 069 054 000 Old_age Always - 31
Now add this to hddtemp's database file, /etc/hddtemp.db
, such that the bottom of the file looks like this:
tail -n 3 /etc/hddtemp.db
#Samsung 860 Evo 4TB:
"Samsung SSD 860 EVO 4TB" 190 C "Label for SSD 4TB"
One liner:
sudo su
echo '"Samsung SSD 860 EVO 4TB" 190 C "Label for SSD 4TB"' >> /etc/hddtemp.db
The very first field is the sensors attribute id#, "190"
in this case.
For hard drive temperature, ensure that hddtemp is running as a daemon. You can do that by editing /etc/default/hddtemp
and ensuring that RUN_DAEMON
is set to TRUE
. When done, restart the hddtemp unit service by:
sudo systemctl restart hddtemp.service
On autostart: https://wiki.archlinux.org/index.php/conky#Autostart
Backlight control: https://github.com/haikarainen/light