Talk is cheap. Show me the code.
Compressed Disk Backup
Disk backup with progress bar using parallel gz compression:
pv /dev/sda | pigz > /mnt/backup/disk.gz
ACPI Errors Fixing
An example how to fix the following ACPI errors experienced on some of HP notebooks.
$ dmesg | grep 'ACPI Error' [ 8.397813] ACPI Error: [CFGD] Namespace lookup failure, AE_NOT_FOUND (20160831/psargs-359) [ 8.398670] ACPI Error: Method parse/execution failed [\_TZ.PSL] (Node ffff88048d0a8d20), AE_NOT_FOUND (20160831/psparse-543) [ 8.399741] ACPI Error: Method parse/execution failed [\_TZ.GFXZ._PSL] (Node ffff88048d0a8190), AE_NOT_FOUND (20160831/psparse-543) [ 9.119569] ACPI Error: [CFGD] Namespace lookup failure, AE_NOT_FOUND (20160831/psargs-359) [ 9.120266] ACPI Error: Method parse/execution failed [\_TZ.PSL] (Node ffff88048d0a8d20), AE_NOT_FOUND (20160831/psparse-543) [ 9.121184] ACPI Error: Method parse/execution failed [\_TZ.BATZ._PSL] (Node ffff88048d0a8a50), AE_NOT_FOUND (20160831/psparse-543)
- Install
iasl
package. - Create a directory to which ACPI tables can be extracted and decompiled:
mkdir ~/acpi cd ~/acpi acpidump > acpidump acpixtract acpidump iasl -e ssdt*.dat -d dsdt.dat
- Examine DSDT and related SSDT tables if necessary. Observe the hierarchy of the structures to properly locate the problematic code. Noting ACPI names consist of up to four letters and can repeat multiple times among the namespaces. Please see ACPICA Documentation for more.
- In the above mentioned case it turned out that
\_TZ.GFXZ._PSL
and\_TZ.BATZ._PSL
methods call\_TZ.PSL
method which fails because of not recognizedCFGD
object. It seems that the purpose of the last mentioned method is to return number of installed CPU cores. The fix consists of modifyingdsdt.dsl
file, removing the problematic code and increasing OEM revision.Before:
DefinitionBlock ("", "DSDT", 2, "HPQOEM", "1909 ", 0x00000001) ... Method (PSL, 0, Serialized) { If ((CFGD & 0x01000000)) { If ((TCNT == 0x08)) { Return (Package (0x08) { \_PR.CPU0, \_PR.CPU1, \_PR.CPU2, \_PR.CPU3, \_PR.CPU4, \_PR.CPU5, \_PR.CPU6, \_PR.CPU7 }) } If ((TCNT == 0x04)) { Return (Package (0x04) { \_PR.CPU0, \_PR.CPU1, \_PR.CPU2, \_PR.CPU3 }) } Return (Package (0x02) { \_PR.CPU0, \_PR.CPU1 }) } Else { Return (Package (0x01) { \_PR.CPU0 }) } }
After:
DefinitionBlock ("", "DSDT", 2, "HPQOEM", "1909 ", 0x00000002) ... Method (PSL, 0, Serialized) { If ((TCNT == 0x08)) { Return (Package (0x08) { \_PR.CPU0, \_PR.CPU1, \_PR.CPU2, \_PR.CPU3, \_PR.CPU4, \_PR.CPU5, \_PR.CPU6, \_PR.CPU7 }) } If ((TCNT == 0x04)) { Return (Package (0x04) { \_PR.CPU0, \_PR.CPU1, \_PR.CPU2, \_PR.CPU3 }) } Return (Package (0x02) { \_PR.CPU0, \_PR.CPU1 }) }
Just in case here is the diff:
- Compile the file and create CPIO archive from it which will be used as an initial ramdisk to override the original ACPI table during the kernel boot. Please see DSDT - ArchWiki and Upgrading ACPI tables via initrd for more:
mkdir -p kernel/firmware/acpi iasl -tc dsdt.dsl cp dsdt.aml kernel/firmware/acpi find kernel | cpio -H newc --create > /boot/acpi_override
- Edit the boot loader configuration file to include the ramdisk as one of the first ones. For example in case of Arch Linux GRUB2 modify
/boot/grub/grub.cfg
file to contain the following section for the active kernel:initrd /boot/intel-ucode.img /boot/acpi_override /boot/initramfs-linux.img
- Reboot the system to apply the ACPI fix and verify ACPI table override works and there are no ACPI errors:
$ dmesg | grep -e 'ACPI Error' -e 'ACPI: DSDT' -e 'ACPI: Table' [ 0.000000] ACPI: DSDT ACPI table found in initrd [kernel/firmware/acpi/dsdt.aml][0x23eef] [ 0.000000] ACPI: Table Upgrade: override [DSDT-HPQOEM-1909 ] [ 0.000000] ACPI: DSDT 0x000000005EFD1000 Physical table override, new table: 0x000000005DB5B000 [ 0.000000] ACPI: DSDT 0x000000005DB5B000 023EEF (v02 HPQOEM 1909 00000002 INTL 20161117)
Vertica User Management
Create testuser with read-only access to testtable in testschema.
CREATE USER testuser IDENTIFIED BY 'password123'; GRANT USAGE ON SCHEMA testschema TO testuser; GRANT SELECT ON testschema.testtable TO testuser;
NetworkManager: Disable Sending Hostname to DHCP Server
Edit
/etc/NetworkManager/NetworkManager.conf
file to contain the following default settings for new connections:
[connection] ipv4.dhcp-send-hostname=false ipv6.dhcp-send-hostname=falseDisable sending hostname to DHCP server for already existing connections:
nmcli -t -f uuid connection | while read uuid; do nmcli connection modify $uuid \ ipv4.dhcp-send-hostname false \ ipv6.dhcp-send-hostname false doneRestart NetworkManager to apply the settings:
systemctl restart NetworkManager
Subscribe to:
Posts (Atom)