Search This Blog

Showing posts with label admin. Show all posts
Showing posts with label admin. Show all posts

Fix Windows 10 Update KB5034441 Error 0x80070643

The reason KB5034441 failed to install with error 0x80070643 is that there is not sufficient space in WinRE recovery partition. The solution is:

Manually resize your WinRE recovery partition by 250 MB

  1. Open a Command Prompt window (cmd) as Administrator.
  2. Check WindowsRE status:
    reagentc /info

    If the WinRE is installed, there should be a “Windows RE location” with a path to the WinRE directory. An example is, “Windows RE location: [file://%3f/GLOBALROOT/device/harddisk0/partition4/Recovery/WindowsRE]\\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE.” Here, the number after “harddisk” and “partition” is the index of the disk and partition WinRE is on.
  3. Disable the WindowsRE:
    reagentc /disable
  4. Shrink the OS partition and prepare the disk for a new recovery partition.
    • Run
      diskpart
    • Run
      list disk
    • Select the OS disk (This should be the same disk index as WinRE.), run
      sel disk OS_DISK_INDEX
      e.g.
      sel disk 0
      if disk 0 is the OS disk.
    • Find the OS Primary partition, run
      list part
    • Select the OS Primary partition, run
      sel part OS_PARTITION_INDEX
    • Shrink the OS Primary partition by 250MB, run
      shrink desired=250 minimum=250
  5. Delete the WinRE recovery partition
    • In diskpart, select WinRE partition, run
      sel part WinRE_PARTITION_INDEX
    • Delete the WinRE partition, run
      delete partition override
  6. Create a new WinRE recovery partition.
    • First, check if the disk partition style is a GUID Partition Table (GPT) or a Master Boot Record (MBR). To do that, run
      list disk
      . Check if there is an asterisk character (*) in the “Gpt” column. If there is an asterisk character (*), then the drive is GPT. Otherwise, the drive is MBR.
    • If your disk is GPT, run
      create partition primary id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
      followed by the command
      gpt attributes =0x8000000000000001
    • If your disk is MBR, run
      create partition primary id=27
  7. Format the new WinRE recovery partition, run
    format quick fs=ntfs label="Windows RE tools"

    To confirm that the WinRE partition is created, run
    list vol

    Exit from diskpart, run
    exit
  8. Re-enable WinRE, run
    reagentc /enable

    To confirm where WinRE is installed, run
    reagentc /info

Now you should be able to install KB5034441 via Windows Update






See also

Compress sparse files preserving their holes

use -S option for tar
tar -Sczvf sparse_file.tar.gz sparse_file

Find sparse files in Linux

find ./ -type f -printf "%S\t%p\n" | awk '$1 < 1.0 {print}'

find ./ -type f -printf "%S\t%p\n" | awk '$1 < 1.0 {print $2}'



To find and remove the sparse files:
find ./ -type f -printf "%S\t%p\n" | awk '$1 < 1.0 {print $2}' | xargs rm -f



To find and compress the sparse files:
find ./ -type f -printf "%S\t%p\n" | awk '$1 < 1.0 {print $2}' | xargs -I {} sh -c "tar -Sczvf {}.tar.gz {}; rm -f {}"



SSH public key authentication rejected with debug message: no mutual signature algorithm

ssh user@remote-server -vvvv
debug1: no mutual signature algorithm



Cause

The RSA SHA-1 hash algorithm is being quickly deprecated across operating systems and SSH clients because of various security vulnerabilities, with many of these technologies now outright denying the use of this algorithm.

Solution

Generate SSH key using ED25519 algorithm:
ssh-keygen -t ed25519



See also

Install RSAT Active Directory Administrative Center on Windows 10 (22H2)

Run PowerShell as Administrator and paste the commands below:

$currentWU = Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "UseWUServer" | select -ExpandProperty UseWUServer
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "UseWUServer" -Value 0
Restart-Service wuauserv
Get-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools -Online | Add-WindowsCapability –Online
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "UseWUServer" -Value $currentWU
Restart-Service wuauserv




see also

Use grep to count number of occurs of a specific element in a single line XML text

For example, I can input.txt below, three lines of XML text, I want to count the number of id elements for each line:
<result><id>1</id><id>5</id><id>7</id></result>
<result><id>71</id></result>
<result><id>15</id><id>33</id></result>



I use grep -o:
cat input.txt | while read line; do echo $line | grep -o '<id>' | wc -l; done



The output should be:
3
1
2

Enable code syntax highlighting in blogger site using highlightjs

  • Template -> Edit HTML
  • Insert the following inside <head> tag:
        
        <!-- BEGIN: Syntax Highlighting with highlight.js -->
        <link crossorigin='anonymous' href='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/agate.min.css' integrity='sha512-wI7oXtzNHj/bqfLA3P6x3XYbcwzsnIKaPLfjjX8ZAXhc65+kSI6sh8gLOOByOKImokAjHUQR0xAJQ/xZTzwuOA==' referrerpolicy='no-referrer' rel='stylesheet'/>
        <script crossorigin='anonymous' integrity='sha512-bgHRAiTjGrzHzLyKOnpFvaEpGzJet3z4tZnXGjpsCcqOnAH6VGUx9frc5bcIhKTVLEiCO6vEhNAgx5jtLUYrfA==' referrerpolicy='no-referrer' src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js'/>
        <script>hljs.highlightAll();</script>
        <!-- END: Syntax Highlighting with highlight.js -->
        <!-- BEGIN: CSS for code in pre and code -->
        <style type='text/css'>
            pre {
                font-family: monospace;
                font-size: 1 em;
                background: #333;
                color: #33cc33;
                tab-size: 4;
                padding: 5px;
                border: 1px dotted grey;
                border-radius: 5px;
                line-height: 2.0;
                overflow-x: auto;
                white-space: pre-wrap;
            }
    
            code {
                white-space: pre-wrap;
                overflow-x: scroll;    
                font-family: monospace;
                font-size: 1em;
            }
        </style>
        <!-- END: CSS for code in pre and code -->
        
        
  • Click save icon to save the template
  • Use it in your blog post:
    <pre><code class="language-html">...</code></pre>



See also

Create Windows 10 Bootable USB on Mac OS

  • Download Windows 10 ISO file from https://www.microsoft.com/en-us/software-download/windows10
  • Insert a USB drive with more than 16GB capacity.
  • Identify the device name of the USB drive using
    diskutil list
    It should something like e.g. /dev/disk2
  • Format the USB drive:
    diskutil eraseDisk MS-DOS "WIN10" GPT /dev/disk2
  • Mount Windows 10 ISO:
    hdiutil mount ~/Downloads/Win10_1903_V1_English_x64.iso
  • Copy files from Windows 10 ISO to the USB drive:
    rsync -vha --exclude=sources/install.wim /Volumes/CCCOMA_X64FRE_EN-US_DV9/* /Volumes/WIN10
  • Install wimlib:
    brew install wimlib
  • Use wimlib-imagex to split install.wim to 3.8GB swm files:
    mkdir /Volumes/WIN10/sources
    wimlib-imagex split /Volumes/CCCOMA_X64FRE_EN-US_DV9/sources/install.wim /Volumes/WIN10/sources/install.swm 3800
  • Done



see also

MacOS: prevent Spotlight from indexing external drives

To prevent Spotlight from scanning and indexing your external drive, create a file named .metadata_never_index or .metadata_never_index_unless_rootfs at the root of the external drive:
sudo touch /Volumes/ExternalDrive/.metadata_never_index
or
sudo touch /Volumes/ExternalDrive/.metadata_never_index_unless_rootfs

AND OR NOT operators for grep

grep OR

  • use '\|'
    grep 'pattern1\|pattern2' file
  • use -E
    grep -E 'pattern1|pattern2' file
  • use -e
    grep -e pattern1 -e pattern2 file



grep AND

  • use pattern1.*pattern2
    grep -E 'pattern1.*pattern2|pattern2.*pattern1' file
  • use multiple (piped) grep commands
    grep pattern1 file | grep pattern2



grep NOT (invert) option

  • use -v option
    grep -v pattern file



see also

Windows 10: run Active Directory Administrative Centre as different user

In Command Prompt execute command below:
runas /user:DOMAIN\user2 "cmd /c Start /B dsac.exe"

It will open the UAC dialog, rather than enter your own password, click "More choices", then select "Use a different account"

Enter the username and password, it will then start "Active Directory Administrative Centre" as that user.

File name encoding on Linux

Linux File Name Encoding

iocharset option of mount

iocharset=value
Character set to use for converting between 8 bit characters and 16 bit Unicode characters. 
The default is iso8859-1. Long filenames are stored on disk in Unicode format.

convmv - converts filenames from one encoding to another

See also

javax.net.ssl.SSLHandshakeException: Insufficient buffer remaining for AEAD cipher fragment (2). Needs to be more than tag size (16)

javax.net.ssl.SSLHandshakeException: Insufficient buffer remaining for AEAD cipher fragment (2). Needs to be more than tag size (16)
        at sun.security.ssl.Alert.createSSLException(Alert.java:131)
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:324)
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:262)
        at sun.security.ssl.SSLTransport.decode(SSLTransport.java:130)
        at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1397)
        at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1305)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440)
        at sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:818)
        at sun.security.ssl.SSLSocketImpl.access$200(SSLSocketImpl.java:73)
        at sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:909)
        at arc.dqV.a(SourceFile:80)
        at arc.dqV.read(SourceFile:56)
        at arc.ud.a(SourceFile:187)
        at arc.ud.a(SourceFile:256)
        at arc.mf.modules.dicom.DicomNetworkService.readNextMessage(SourceFile:250)
        at arc.cQg.run(SourceFile:303)
        at arc.cQh.doExecute(SourceFile:497)
        at arc.utils.Task.a(SourceFile:990)
        at arc.utils.Task.run(SourceFile:939)
        at arc.dFf.a(SourceFile:530)
        at arc.dFf.run(SourceFile:478)
        at arc.dFe.run(SourceFile:321)
Caused by: javax.crypto.BadPaddingException: Insufficient buffer remaining for AEAD cipher fragment (2). Needs to be more than tag size (16)
        at sun.security.ssl.SSLCipher$T13GcmReadCipherGenerator$GcmReadCipher.decrypt(SSLCipher.java:1845)
        at sun.security.ssl.SSLSocketInputRecord.decodeInputRecord(SSLSocketInputRecord.java:262)
        at sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:190)
        at sun.security.ssl.SSLTransport.decode(SSLTransport.java:109)
        ... 18 more

Cause:
javax.crypto.BadPaddingException: Insufficient buffer remaining for AEAD cipher fragment (2). Needs to be more than tag size (16):
Stack:
javax.crypto.BadPaddingException: Insufficient buffer remaining for AEAD cipher fragment (2). Needs to be more than tag size (16)
        at sun.security.ssl.SSLCipher$T13GcmReadCipherGenerator$GcmReadCipher.decrypt(SSLCipher.java:1845)
        at sun.security.ssl.SSLSocketInputRecord.decodeInputRecord(SSLSocketInputRecord.java:262)
        at sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:190)
        at sun.security.ssl.SSLTransport.decode(SSLTransport.java:109)
        at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1397)
        at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1305)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440)
        at sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:818)
        at sun.security.ssl.SSLSocketImpl.access$200(SSLSocketImpl.java:73)
        at sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:909)
        at arc.dqV.a(SourceFile:80)
        at arc.dqV.read(SourceFile:56)
        at arc.ud.a(SourceFile:187)
        at arc.ud.a(SourceFile:256)
        at arc.mf.modules.dicom.DicomNetworkService.readNextMessage(SourceFile:250)
        at arc.cQg.run(SourceFile:303)
        at arc.cQh.doExecute(SourceFile:497)
        at arc.utils.Task.a(SourceFile:990)
        at arc.utils.Task.run(SourceFile:939)
        at arc.dFf.a(SourceFile:530)
        at arc.dFf.run(SourceFile:478)
        at arc.dFe.run(SourceFile:321)



Cause

This is known Oracle issue. For details, visit the following links:


Solution

There are two solutions for this issue:
  • Add -DUseSunHttpHandler=true in the startup arguments.
  • Identify on which cipher the handshake was negoitiated by enabling the JSSE debug and disable that cipher in the jre/lib/security/java.security file.



see also

Secure Java SSL by updating jdk.tls.disabledAlgorithms in java.security file

Disable SSL/TLS Diffie-Hellman keys less that 2048 bits

    TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, \
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, \
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA,    \
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA,    \
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, \
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, \
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,    \
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA,    \
    TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, \
    TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, \
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, \
    TLS_DHE_DSS_WITH_AES_128_GCM_SHA256



Disable following algorithms to enforce Perfect Forward Secrecy

    TLS_RSA_WITH_AES_128_CBC_SHA256, \
    TLS_RSA_WITH_AES_128_CBC_SHA, \
    TLS_RSA_WITH_AES_128_GCM_SHA256, \
    TLS_RSA_WITH_AES_256_CBC_SHA256, \
    TLS_RSA_WITH_AES_256_CBC_SHA, \
    TLS_RSA_WITH_AES_256_GCM_SHA384, \
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, \
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, \
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA, \
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA



jdk.tls.disabledAlgorithms in jre/lib/security/java.security

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
    DH keySize < 2048, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves \
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA, \
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, \
    TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, \
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA, \
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, \
    TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, \
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA, \
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA, \
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, \
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, \
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA, \
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA, \
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, \
    TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, \
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, \
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, \
    TLS_RSA_WITH_AES_128_CBC_SHA, \
    TLS_RSA_WITH_AES_128_CBC_SHA256, \
    TLS_RSA_WITH_AES_128_GCM_SHA256, \
    TLS_RSA_WITH_AES_256_CBC_SHA, \
    TLS_RSA_WITH_AES_256_CBC_SHA256, \
    TLS_RSA_WITH_AES_256_GCM_SHA384



see also

Mount SMB share on Mac OS

mkdir ~/share1
mount_smbfs 'smb://DOMAIN;USERNAME:PASSWORD@smb-server.your.org/share1' ~/share1
or
mkdir ~/share1
mount_smbfs 'smb://DOMAIN;USERNAME@smb-server.your.org/share1' ~/share1

Bash: print leading zeros for numbers in a for loop

  • for ((i=1; i>=100; i++)); do
        echo $(printf "%03d" $i)
    done
  • BASH 4+
    for i in {001..100}; do
        echo "$i"
    done
    create 100 100k files:
    for i in {001..100}; do dd if=/dev/urandom of=100K_${i}.dat  bs=1024  count=100; done

MSYS2 inherits Windows home directory and path environment variable

1. Use Windows home directory as MSYS2 home directory

MSYS2 will use Windows %HOME% environment variable as it's $HOME directory. If you set %HOME% in environment variables (to the windows directory you need MSYS2 to use) it will work.

So what I did was just add a new enironment variable HOME and set its value to %USERPROFILE% which is the Windows home directory.


2. Make symbolic link

Open Command Prompt as Administrator, and run the command below to create symoblic link:
cd C:\msys64\home
mklink /D %USERNAME% %USERPROFILE%



3. Inherits Windows PATH environment variable

  • Uncomment MSYS2_PATH_TYPE=inherit in C:\msys64\msys2.ini
  • Pass -use-full-path to msys2_shell.cmd



see also

Install Parallel Tools on Rocky Linux VM

Got the following error when installing Parallel tools on Rocky Linux 8 VM:
make[1]: Entering directory '/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs'
make -C /lib/modules/5.0.0-25-generic/build M=/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs CC=cc
make[2]: Entering directory '/usr/src/linux-headers-5.0.0-25-generic'
  CC [M]  /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.o
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c: In function 'prlfs_remount':
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:119:21: error: 'MS_RDONLY' undeclared (first use in this function); did you mean 'IS_RDONLY'?
  if ( (!((*flags) & MS_RDONLY) && PRLFS_SB(sb)->readonly) ||
                     ^~~~~~~~~
                     IS_RDONLY
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:119:21: note: each undeclared identifier is reported only once for each function it appears in
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:120:21: error: 'MS_MANDLOCK' undeclared (first use in this function); did you mean 'IS_MANDLOCK'?
         ((*flags) & MS_MANDLOCK) )
                     ^~~~~~~~~~~
                     IS_MANDLOCK
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:123:12: error: 'MS_SYNCHRONOUS' undeclared (first use in this function); did you mean 'SB_SYNCHRONOUS'?
  *flags |= MS_SYNCHRONOUS; /* silently don't drop sync flag */
            ^~~~~~~~~~~~~~
            SB_SYNCHRONOUS
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c: In function 'prlfs_fill_super':
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:277:17: error: 'MS_NOATIME' undeclared (first use in this function); did you mean 'S_NOATIME'?
  sb->s_flags |= MS_NOATIME | MS_SYNCHRONOUS;
                 ^~~~~~~~~~
                 S_NOATIME
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:277:30: error: 'MS_SYNCHRONOUS' undeclared (first use in this function); did you mean 'SB_SYNCHRONOUS'?
  sb->s_flags |= MS_NOATIME | MS_SYNCHRONOUS;
                              ^~~~~~~~~~~~~~
                              SB_SYNCHRONOUS
scripts/Makefile.build:284: recipe for target '/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.o' failed
make[3]: *** [/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.o] Error 1
Makefile:1606: recipe for target '_module_/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs' failed
make[2]: Leaving directory '/usr/src/linux-headers-5.0.0-25-generic'
make[2]: *** [_module_/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs] Error 2
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/Makefile.v26:13: recipe for target 'all' failed
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs'
make[1]: *** [all] Error 2
Makefile.kmods:49: recipe for target 'compile' failed
make: Leaving directory '/usr/lib/parallels-tools/kmods'
make: *** [compile] Error 2
Error: could not build kernel modules
Error during report about failed installation of parallels tools.
Error: failed to install Parallels Guest Tools!
2019-08-27T11:19:22+0800: Started installation of Parallels Guest Tools version '14.1.3.45485'

Error during report about start installation of parallels tools.
Tue Aug 27 11:19:19 CST 2019
Start installation or upgrade of Guest Tools
Makefile:223: ================= WARNING ================
Makefile:224: 'SUBDIRS' will be removed after Linux 5.3
Makefile:225: Please use 'M=' or 'KBUILD_EXTMOD' instead
Makefile:226: ==========================================
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c: In function 'prlfs_remount':
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:119:21: error: 'MS_RDONLY' undeclared (first use in this function); did you mean 'IS_RDONLY'?
  if ( (!((*flags) & MS_RDONLY) && PRLFS_SB(sb)->readonly) ||
                     ^~~~~~~~~
                     IS_RDONLY
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:119:21: note: each undeclared identifier is reported only once for each function it appears in
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:120:21: error: 'MS_MANDLOCK' undeclared (first use in this function); did you mean 'IS_MANDLOCK'?
         ((*flags) & MS_MANDLOCK) )
                     ^~~~~~~~~~~
                     IS_MANDLOCK
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:123:12: error: 'MS_SYNCHRONOUS' undeclared (first use in this function); did you mean 'SB_SYNCHRONOUS'?
  *flags |= MS_SYNCHRONOUS; /* silently don't drop sync flag */
            ^~~~~~~~~~~~~~
            SB_SYNCHRONOUS
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c: In function 'prlfs_fill_super':
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:277:17: error: 'MS_NOATIME' undeclared (first use in this function); did you mean 'S_NOATIME'?
  sb->s_flags |= MS_NOATIME | MS_SYNCHRONOUS;
                 ^~~~~~~~~~
                 S_NOATIME
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:277:30: error: 'MS_SYNCHRONOUS' undeclared (first use in this function); did you mean 'SB_SYNCHRONOUS'?
  sb->s_flags |= MS_NOATIME | MS_SYNCHRONOUS;
                              ^~~~~~~~~~~~~~
                              SB_SYNCHRONOUS
make[3]: *** [/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.o] Error 1
make[2]: *** [_module_/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs] Error 2
make[1]: *** [all] Error 2
make: *** [compile] Error 2
Error: could not build kernel modules
Error during report about failed installation of parallels tools.
Error: failed to install Parallels Guest Tools!
2019-08-27T11:19:22+0800: execCmd: ./install --install [167]
2019-08-27T11:19:22+0800: Error: An error occurred when installing Parallels Tools. Please go to /var/log/parallels-tools-install.log for more information.
2019-08-27T11:20:01+0800: Exiting with code 1
To workaround it, use the script below: