Linux

Instalace NVIDIA driveru v KALI Linuxu

Můj stary notebook HP EliteBook 8560w už nestačí na Win 10, tak jsem se rozhodl jej použít na Linuxové testy. Jako první bylo nainstalováno Ubuntu a bez jakýchkoliv problemů grafická karta NVIDIA GF106GLM [Quadro 2000M] fungovala. Po úspěšné instalaci jsem chtěl vyzkoušet instalaci KALI Linuxu jako druhého OS pro notebook. Překvapení následovalo hned po instalaci. GUI se nerozběhlo a veškerá konfigurace byla dělána přes řádkovou konzoli (CTRL+ALT+F1). První link s popisem NVIDIA driverů jsem nasel tady.  Je zde pěkně popsaná identifikace NVIDIA karet a postup pro instalaci driverů. HP EliteBook 8560w má následující grafickou kartu:

# lspci|grep -i vga
01:00.0 VGA compatible controller: NVIDIA Corporation GF106GLM [Quadro 2000M] (rev a1)

# lspci -s 01:00.0 -v
01:00.0 VGA compatible controller: NVIDIA Corporation GF106GLM [Quadro 2000M] (rev a1) (prog-if 00 [VGA controller])
DeviceName: 0
Subsystem: Hewlett-Packard Company GF106GLM [Quadro 2000M]
Flags: bus master, fast devsel, latency 0, IRQ 16, IOMMU group 1
Memory at d0000000 (32-bit, non-prefetchable) [size=32M]
Memory at c0000000 (64-bit, prefetchable) [size=128M]
Memory at c8000000 (64-bit, prefetchable) [size=64M]
I/O ports at 4000 [size=128]
Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Endpoint, MSI 00
Capabilities: [b4] Vendor Specific Information: Len=14 <?>
Capabilities: [100] Virtual Channel
Capabilities: [128] Power Budgeting <?>
Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
Kernel driver in use: nouveau
Kernel modules: nouveau

KALI Linux používal po instalaci driver “nouveau”, stejně jako Ubuntu, ale GUI nefungovalo. Pokoušel jsem se nainstalovat driver podle postupu, ale to vedlo jenom k instalaci driveru verze 430.xx, který není vhodný pro moji kartu. Podporovaný driver jsem našel na této strance a měl by to být driver verze 390.xx. Tady je link na instalaci v KALI Linuxu, ale postup nenainstaloval driver správně. Karta pořád používala driver “nouveau” a GUI nefungovalo. Po několika přeinstalacích driveru a celého Kali Linuxu, jsem našel následujíci postup. Popisuje instalaci driveru od NVIDIA, který si překompiluje kernelové moduly během instalace a udělá potrebnou konfiguraci GUI. Někde jsem našel informaci, že maximální verze driveru může být 390.132. To není pravda a po několika pokusech nainstalovat driver 390.132 a potom 390.144, kvůli chybě během překladu kernelových modulů “fatal error: asm/kmap_types.h: No such file or directory” jsem použil nejnovější driver 390.147. Uvedená chyba byla v něm odstraněna dle Change logu pro Ubuntu. Takže postup je následující:

Vyhledat NVIDIA balíčky nainstalované omylem

# dpkg -l|grep -i nvidia

Odinstalovat je

# apt-get remove –purge nvidia-*

Pro jistotu i knihovny, které tam zůstali

# apt-get remove –purge libnvidia-*

Zrušit automatické zavedení driveru “nouveau”

# sed ‘s/quiet/quiet nouveau.modeset=0/g’ -i /etc/default/grub
# update-grub
# reboot

Zastavit GUI

# service gdm3 stop

Stáhnout driver 390.147

# wget -c https://us.download.nvidia.com/XFree86/Linux-x86_64/390.147/NVIDIA-Linux-x86_64-390.147.run

Změnit práva

# chmod +x NVIDIA-Linux-x86_64-390.147.run

Nainstalovat. Během instalace je potřeba registrovat kernelové moduly s DKMS a neinstalovat 32-bitové drivery. Během instalace je hlášena chyba o neexistenci cesty na glvnd, která se dá rešit parametrem při spouštění driveru, nebo jednoduše ignorovat

# ./NVIDIA-Linux-x86_64-390.147.run –glvnd-egl-config-path=/etc/glvnd/egl_vendor.d

Následný reboot zprovozní GUI

# reboot

Správně nainstalovaný driver vypadá takto

# lspci|grep -i vga
01:00.0 VGA compatible controller: NVIDIA Corporation GF106GLM [Quadro 2000M] (rev a1)

# lspci -s 01:00.0 -v
01:00.0 VGA compatible controller: NVIDIA Corporation GF106GLM [Quadro 2000M] (rev a1) (prog-if 00 [VGA controller])
DeviceName: 0
Subsystem: Hewlett-Packard Company GF106GLM [Quadro 2000M]
Flags: bus master, fast devsel, latency 0, IRQ 44, IOMMU group 1
Memory at d0000000 (32-bit, non-prefetchable) [size=32M]
Memory at c0000000 (64-bit, prefetchable) [size=128M]
Memory at c8000000 (64-bit, prefetchable) [size=64M]
I/O ports at 4000 [size=128]
Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Endpoint, MSI 00
Capabilities: [b4] Vendor Specific Information: Len=14 <?>
Capabilities: [100] Virtual Channel
Capabilities: [128] Power Budgeting <?>
Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
Kernel driver in use: nvidia
Kernel modules: nouveau, nvidia_drm, nvidia


# nvidia-smi
Wed Apr 6 14:46:36 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.147                                  Driver Version: 390.147 |
|-------------------------------+----------------------+----------------------+
| GPU Name         Persistence-M| Bus-Id Disp.A        | Volatile Uncorr. ECC |
| Fan Temp Perf    Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
| 0 Quadro 2000M            Off | 00000000:01:00.0 N/A |                  N/A |
| N/A 28C  P12    N/A /     N/A |     123MiB / 1985MiB | N/A          Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
| GPU         PID      Type Process name                                Usage |
|=============================================================================|
| 0                    Not Supported                                          |
+-----------------------------------------------------------------------------+

Linux

Redukce velikosti XFS disku v CentOS 8.1 v prostředí VMware

Nová verze CentOS (8.1) byla nainstalována jako VM s následujícím rozložením na disku:

# lvs

LV   VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

home cl -wi-a—– 441.10g

root cl -wi-ao—-  50.00g

swap cl -wi-ao—-   7.89g

# pvdisplay /dev/sda2 -m

— Physical volume —

PV Name               /dev/sda2

VG Name               cl

PV Size               <499.00 GiB / not usable 3.00 MiB

Allocatable           yes

PE Size               4.00 MiB

Total PE              127743

Free PE               110362

Allocated PE          17381

PV UUID               fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T

 

— Physical Segments —

Physical extent 0 to 2020:

Logical volume      /dev/cl/swap

Logical extents     0 to 2020

Physical extent 2021 to 114942:

Logical volume      /dev/cl/home

Logical extents     0 to 112921

Physical extent 114943 to 127742:

Logical volume      /dev/cl/root

Logical extents     0 to 12799

 

Adresář /home má 440GB. OS má jenom jednoho uživatele a jeho domovský adresář je prázdný. XPS filesystem nelze zmenšit a proto musíme udělat následující kroky.

# ll /home

total 0

drwx——. 2 xpadm xpadm 6 Jun 16 09:40 xpadm

# umount /home

 

Odstranime adresář /home a znovu jej vytvoříme s menší velikostí.

# lvremove /dev/cl/home

Do you really want to remove active logical volume cl/home? [y/n]: y

Logical volume “home” successfully removed

 

Nová velikost bude 10GB:

# lvcreate -L 10G -n home cl

WARNING: xfs signature detected on /dev/cl/home at offset 0. Wipe it? [y/n]: y

Wiping xfs signature on /dev/cl/home.

Logical volume “home” created.

 

OS si stěžuje na existující XFS na disku, ale to je v pořádku chceme jej smazat.

# vgchange -a y

3 logical volume(s) in volume group “cl” now active

 

Vytvoříme nový XFS a obnovíme na něm /home

# mkfs.xfs /dev/cl/home

meta-data=/dev/cl/home           isize=512    agcount=4, agsize=655360 blks

=                       sectsz=512   attr=2, projid32bit=1

=                       crc=1        finobt=1, sparse=1, rmapbt=0

=                       reflink=1

data     =                       bsize=4096   blocks=2621440, imaxpct=25

=                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0, ftype=1

log      =internal log           bsize=4096   blocks=2560, version=2

=                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

# mount /home

# ll /home

total 0

# mkdir /home/xpadm

# ll /home

total 0

drwxr-xr-x. 2 root root 6 Jun 16 09:40 xpadm

# chmod 700 /home/xpadm/

# chown xpadm:xpadm /home/xpadm/

# ll /home

total 0

drwx——. 2 xpadm xpadm 6 Jun 16 09:40 xpadm

 

Připravíme vg cl na zmenšení:

# vgs

VG #PV #LV #SN Attr   VSize    VFree

cl   1   3   0 wz–n- <499.00g 431.10g

# pvs

PV         VG Fmt  Attr PSize    PFree

/dev/sda2  cl lvm2 a–  <499.00g 431.10g

 

 

Podívejme se na alokaci fyzických segmentů ve vg cl

# pvdisplay /dev/sda2 -m

— Physical volume —

PV Name               /dev/sda2

VG Name               cl

PV Size               <499.00 GiB / not usable 3.00 MiB

Allocatable           yes

PE Size               4.00 MiB

Total PE              127743

Free PE               110362

Allocated PE          17381

PV UUID               fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T

 

— Physical Segments —

Physical extent 0 to 2020:

Logical volume      /dev/cl/swap

Logical extents     0 to 2020

Physical extent 2021 to 4580:

Logical volume      /dev/cl/home

Logical extents     0 to 2559

Physical extent 4581 to 114942:

FREE

Physical extent 114943 to 127742:

Logical volume      /dev/cl/root

Logical extents     0 to 12799

 

Volné místo je mezi novým /home a starým /. Pokud zmenšíme vg teď, tak se uvolní místo na konci vg a přijdeme o svazek /. Musíme přesunout volné místo na konec disku. Použijeme další disk o velikosti (aspoň) současného /. Přidáme disk /dev/sdb1 do vg a pak přesuneme fyzické extenty na novy disk ve vg cl. Tento přesun se dá provést online a uvolní se disk na původním disku /dev/sda2. Pak přesuneme celý / zpět a OS použije diskový prostor hned za zmenšeným /home.

 

# pvcreate /dev/sdb1

Physical volume “/dev/sdb1” successfully created.

# vgextend cl /dev/sdb1

Volume group “cl” successfully extended

# vgs

VG #PV #LV #SN Attr   VSize   VFree

cl   2   3   0 wz–n- 648.99g <581.10g

# pvs -o+pv_used

PV         VG Fmt  Attr PSize    PFree    Used

/dev/sda2  cl lvm2 a–  <499.00g  431.10g 67.89g

/dev/sdb1  cl lvm2 a–  <150.00g <150.00g     0

# pvmove -n /dev/cl/root /dev/sda2 /dev/sdb1

/dev/sda2: Moved: 0.02%

/dev/sda2: Moved: 3.41%

/dev/sda2: Moved: 96.80%

/dev/sda2: Moved: 100.00%

 

# pvmove -n /dev/cl/root /dev/sdb1 /dev/sda2

/dev/sdb1: Moved: 0.00%

/dev/sdb1: Moved: 3.09%

/dev/sdb1: Moved: 98.88%

/dev/sdb1: Moved: 100.00%

 

Po této operaci máme volné místo na konci disku a všechny datové oddíly končí na extentu 17831.

# pvdisplay /dev/sda2 -m

— Physical volume —

PV Name               /dev/sda2

VG Name               cl

PV Size               <499.00 GiB / not usable 3.00 MiB

Allocatable           yes

PE Size               4.00 MiB

Total PE              127743

Free PE               110362

Allocated PE          17381

PV UUID               fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T

 

— Physical Segments —

Physical extent 0 to 2020:

Logical volume      /dev/cl/swap

Logical extents     0 to 2020

Physical extent 2021 to 4580:

Logical volume      /dev/cl/home

Logical extents     0 to 2559

Physical extent 4581 to 17380:

Logical volume      /dev/cl/root

Logical extents     0 to 12799

Physical extent 17381 to 127742:

FREE

 

 

Protože máme volné místo na konci disku /dev/sda2 můžeme zmenšit PV na 80GB. Velikost 80GB je dostatečná pro data uložená v současných oddílech pro swap, /home a /.

# fdisk -l /dev/sda

Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x845c40d9

 

Device     Boot   Start        End    Sectors  Size Id Type

/dev/sda1  *       2048    2099199    2097152    1G 83 Linux

/dev/sda2       2099200 1048575999 1046476800  499G 8e Linux LVM

# pvresize –setphysicalvolumesize 80G /dev/sda2

/dev/sda2: Requested size 80.00 GiB is less than real size <499.00 GiB. Proceed?  [y/n]: y

WARNING: /dev/sda2: Pretending size is 167772160 not 1046476800 sectors.

Physical volume “/dev/sda2” changed

1 physical volume(s) resized or updated / 0 physical volume(s) not resized

 

Příkaz pvresize si stěžuje na velikost, protože je menší než současná velikost /dev/sda2 (499GB). Přesto příkaz proběhl, volný prostor se zmenšil a je tam pořád volné místo pro budoucí použití.

# pvdisplay /dev/sda2 -m

— Physical volume —

PV Name               /dev/sda2

VG Name               cl

PV Size               <80.00 GiB / not usable 3.00 MiB

Allocatable           yes

PE Size               4.00 MiB

Total PE              20479

Free PE               3098

Allocated PE          17381

PV UUID               fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T

 

— Physical Segments —

Physical extent 0 to 2020:

Logical volume      /dev/cl/swap

Logical extents     0 to 2020

Physical extent 2021 to 4580:

Logical volume      /dev/cl/home

Logical extents     0 to 2559

Physical extent 4581 to 17380:

Logical volume      /dev/cl/root

Logical extents     0 to 12799

Physical extent 17381 to 20478:

FREE

 

 

Ted už nepotřebujeme disk /dev/sdb1 ve vg cl, proto ho odstraníme:

# vgreduce cl /dev/sdb1

Removed “/dev/sdb1” from volume group “cl”

# vgs

VG #PV #LV #SN Attr   VSize   VFree

cl   1   3   0 wz–n- <80.00g 12.10g

# vgdisplay

— Volume group —

VG Name               cl

System ID

Format                lvm2

Metadata Areas        1

Metadata Sequence No  15

VG Access             read/write

VG Status             resizable

MAX LV                0

Cur LV                3

Open LV               3

Max PV                0

Cur PV                1

Act PV                1

VG Size               <80.00 GiB

PE Size               4.00 MiB

Total PE              20479

Alloc PE / Size       17381 / 67.89 GiB

Free  PE / Size       3098 / 12.10 GiB

VG UUID               0XLSu8-aOeE-Mdg1-5ViQ-2zaQ-9hPv-X9T4h1

 

Nové rozložení vg cl má jenom 80 GB.

 

# vgdisplay -v

— Volume group —

VG Name               cl

System ID

Format                lvm2

Metadata Areas        1

Metadata Sequence No  15

VG Access             read/write

VG Status             resizable

MAX LV                0

Cur LV                3

Open LV               3

Max PV                0

Cur PV                1

Act PV                1

VG Size               <80.00 GiB

PE Size               4.00 MiB

Total PE              20479

Alloc PE / Size       17381 / 67.89 GiB

Free  PE / Size       3098 / 12.10 GiB

VG UUID               0XLSu8-aOeE-Mdg1-5ViQ-2zaQ-9hPv-X9T4h1

 

— Logical volume —

LV Path                /dev/cl/swap

LV Name                swap

VG Name                cl

LV UUID                3yJjj2-cLdt-uaiT-C3er-i2Zx-u0JY-Ip0xG4

LV Write Access        read/write

LV Creation host, time localhost, 2020-03-12 09:23:04 +0100

LV Status              available

# open                 2

LV Size                7.89 GiB

Current LE             2021

Segments               1

Allocation             inherit

Read ahead sectors     auto

– currently set to     8192

Block device           253:1

 

— Logical volume —

LV Path                /dev/cl/root

LV Name                root

VG Name                cl

LV UUID                LAmWX2-3DSS-VD7d-9rWs-SFzc-hTni-akto3r

LV Write Access        read/write

LV Creation host, time localhost, 2020-03-12 09:23:06 +0100

LV Status              available

# open                 1

LV Size                50.00 GiB

Current LE             12800

Segments               1

Allocation             inherit

Read ahead sectors     auto

– currently set to     8192

Block device           253:0

 

— Logical volume —

LV Path                /dev/cl/home

LV Name                home

VG Name                cl

LV UUID                3NCUe4-JZVY-FdkD-h8mC-Xuuz-LL6M-uslaFo

LV Write Access        read/write

LV Creation host, time host.example.net, 2020-06-16 09:39:03 +0200

LV Status              available

# open                 1

LV Size                10.00 GiB

Current LE             2560

Segments               1

Allocation             inherit

Read ahead sectors     auto

– currently set to     8192

Block device           253:2

 

— Physical volumes —

PV Name               /dev/sda2

PV UUID               fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T

PV Status             allocatable

Total PE / Free PE    20479 / 3098

 

 

Tímto je hotová LVM část a můžeme zmenšit fyzický volume /dev/sda, který má 2 oddíly. První je bootovací a druhá je LVM volume pro swap, /home a /.

Zapíšeme rozložení disku /dev/sda pomocí sfdisk do souboru

# sfdisk -d /dev/sda sda_part

label: dos

label-id: 0x845c40d9

device: /dev/sda

unit: sectors

 

/dev/sda1 : start=        2048, size=     2097152, type=83, bootable

/dev/sda2 : start=     2099200, size=  1046476800, type=8e

# sfdisk -d /dev/sda >sda_part

 

 

Editací souboru múžeme zmenšit druhý oddíl disku /dev/sda na novou velikost. Zvolili jsme 20 000 extentů a každý má 4MB. Máme sektory o velikosti 512 B takže potřebujeme 20000 * 8192 = 163840000 sektorů. Tady jsem udělal chybu a použil jsem vypočítaný počet sektorů pro /dev/sda2 pro celý disk 🙂

# vi sda_part

# cat sda_part

label: dos

label-id: 0x845c40d9

device: /dev/sda

unit: sectors

 

/dev/sda1 : start=        2048, size=     2097152, type=83, bootable

/dev/sda2 : start=     2099200, size=  163840000, type=8e

 

 

Změněný soubor použijeme pomocí příkazu sfdisk s přepínačem –no-reread, protože nemůžeme udělat změnu v běžícím kernelu. OS hlásí chybu Device or resource busy.

# sfdisk /dev/sda <sda_part –no-reread

Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x845c40d9

 

Old situation:

 

Device     Boot   Start        End    Sectors  Size Id Type

/dev/sda1  *       2048    2099199    2097152    1G 83 Linux

/dev/sda2       2099200 1048575999 1046476800  499G 8e Linux LVM

 

>>> Script header accepted.

>>> Script header accepted.

>>> Script header accepted.

>>> Script header accepted.

>>> Created a new DOS disk label with disk identifier 0x845c40d9.

/dev/sda1: Created a new partition 1 of type ‘Linux’ and of size 1 GiB.

Partition #1 contains a ext4 signature.

/dev/sda2: Created a new partition 2 of type ‘Linux LVM’ and of size 78.1 GiB.

Partition #2 contains a LVM2_member signature.

/dev/sda3: Done.

 

New situation:

Disklabel type: dos

Disk identifier: 0x845c40d9

 

Device     Boot   Start       End   Sectors  Size Id Type

/dev/sda1  *       2048   2099199   2097152    1G 83 Linux

/dev/sda2       2099200 165939199 163840000 78.1G 8e Linux LVM

 

The partition table has been altered.

Calling ioctl() to re-read partition table.

Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

Syncing disks.

 

 

Příkaz partprobe vyřeší náš problém a pro jistotu rebootujeme.

# partprobe

# fdisk -l /dev/sda

Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x845c40d9

 

Device     Boot   Start       End   Sectors  Size Id Type

/dev/sda1  *       2048   2099199   2097152    1G 83 Linux

/dev/sda2       2099200 165939199 163840000 78.1G 8e Linux LVM

# reboot

 

 

Po rebootu si příkaz pvs stěžuje že /dev/sda2 je menší než PV, který je na něm vytvořený. Máme 2 možnosti jak to opravit:

  1. Zmenšit PV
  2. Rozšířit /dev/sda2

Druhá možnost vyžaduje opět přepsáni oddílů na disku a zmenšení PV je jednodušší”

# pvs

WARNING: Device /dev/sda2 has size of 163840000 sectors which is smaller than corresponding PV size of 167770112 sectors. Was device resized?

WARNING: One or more devices used as PVs in VG cl have changed sizes.

PV         VG Fmt  Attr PSize    PFree

/dev/sda2  cl lvm2 a–   <80.00g   12.10g

# fdisk -l /dev/sda

Disk /dev/sda: 78.1 GiB, 83886080000 bytes, 163840000 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x845c40d9

 

Device     Boot   Start       End   Sectors  Size Id Type

/dev/sda1  *       2048   2099199   2097152    1G 83 Linux

/dev/sda2       2099200 165939199 163840000 78.1G 8e Linux LVM

 

 

Zkontrolujeme skutečnou velikost disku /dev/sda2 a můžeme udělat pvresize:

# pvresize –setphysicalvolumesize 161740800s /dev/sda2

WARNING: Device /dev/sda2 has size of 161740800 sectors which is smaller than corresponding PV size of 167770112 sectors. Was device resized?

WARNING: One or more devices used as PVs in VG cl have changed sizes.

Physical volume “/dev/sda2” changed

1 physical volume(s) resized or updated / 0 physical volume(s) not resized

# pvs

PV         VG Fmt  Attr PSize    PFree

/dev/sda2  cl lvm2 a–    77.12g   <9.23g

/dev/sdb1     lvm2 —  <150.00g <150.00g

# reboot

 

Po rebootu je velikost PV stejná jako velikost /dev/sda2.

# vgs

VG #PV #LV #SN Attr   VSize  VFree

cl   1   3   0 wz–n- 77.12g <9.23g

# pvs

PV         VG Fmt  Attr PSize    PFree

/dev/sda2  cl lvm2 a–    77.12g   <9.23g

/dev/sdb1     lvm2 —  <150.00g <150.00g

# fdisk -l /dev/sda

Disk /dev/sda: 78.1 GiB, 83886080000 bytes, 163840000 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x845c40d9

 

Device     Boot   Start       End   Sectors  Size Id Type

/dev/sda1  *       2048   2099199   2097152    1G 83 Linux

/dev/sda2       2099200 165939199 163840000 78.1G 8e Linux LVM

 

To ještě není pravda. Linux běží na VMware a musíme zmenšit velikost virtualního disku. Otevřeme GUI a zmenšíme disk.

To ovšem nelze:-(

 

VMware GUI neumožňuje zmenšit, ale jenom zvětšit disk. Naštěsti se pomoc dá najít na
internetu

Článek je napsaný pro Windows, ale v Linuxu je to jednodušší:-) Tady je postup:

    1. Shutdown VM
    2. Přihlášení do esxi serveru jako root
    3. Výpočet (80GB = 80 * 1024 * 1024 * 1024 / 512) nebo převezmeme číslo přímo z fstab 163840000 sectors
    4. Přejdeme do adresáře /vmfs/volumes/<DS-dir>/<VM-dir>
    5. Editace  VM.vmdk file
    6. Změna počtu sektorů:

Z:

# Extent description

RW 1048576000 VMFS “vm-flat.vmdk”

Na:

# Extent description

RW 163840000 VMFS “vm-flat.vmdk”

  1. Migrace VM na jiný DS
  2. Start VM a velikost disku je změněná

# fdisk -l /dev/sda

Disk /dev/sda: 78.1 GiB, 83886080000 bytes, 163840000 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x845c40d9

 

Device     Boot   Start       End   Sectors  Size Id Type

/dev/sda1  *       2048   2099199   2097152    1G 83 Linux

/dev/sda2       2099200 165939199 163840000 78.1G 8e Linux LVM

 

# vgdisplay -v

— Volume group —

VG Name               cl

System ID

Format                lvm2

Metadata Areas        1

Metadata Sequence No  16

VG Access             read/write

VG Status             resizable

MAX LV                0

Cur LV                3

Open LV               3

Max PV                0

Cur PV                1

Act PV                1

VG Size               77.12 GiB

PE Size               4.00 MiB

Total PE              19743

Alloc PE / Size       17381 / 67.89 GiB

Free  PE / Size       2362 / <9.23 GiB

VG UUID               0XLSu8-aOeE-Mdg1-5ViQ-2zaQ-9hPv-X9T4h1

 

— Logical volume —

LV Path                /dev/cl/swap

LV Name                swap

VG Name                cl

LV UUID                3yJjj2-cLdt-uaiT-C3er-i2Zx-u0JY-Ip0xG4

LV Write Access        read/write

LV Creation host, time localhost, 2020-03-12 09:23:04 +0100

LV Status              available

# open                 2

LV Size                7.89 GiB

Current LE             2021

Segments               1

Allocation             inherit

Read ahead sectors     auto

– currently set to     8192

Block device           253:1

 

— Logical volume —

LV Path                /dev/cl/root

LV Name                root

VG Name                cl

LV UUID                LAmWX2-3DSS-VD7d-9rWs-SFzc-hTni-akto3r

LV Write Access        read/write

LV Creation host, time localhost, 2020-03-12 09:23:06 +0100

LV Status              available

# open                 1

LV Size                50.00 GiB

Current LE             12800

Segments               1

Allocation             inherit

Read ahead sectors     auto

– currently set to     8192

Block device           253:0

 

— Logical volume —

LV Path                /dev/cl/home

LV Name                home

VG Name                cl

LV UUID                3NCUe4-JZVY-FdkD-h8mC-Xuuz-LL6M-uslaFo

LV Write Access        read/write

LV Creation host, time host.example.net, 2020-06-16 09:39:03 +0200

LV Status              available

# open                 1

LV Size                10.00 GiB

Current LE             2560

Segments               1

Allocation             inherit

Read ahead sectors     auto

– currently set to     8192

Block device           253:2

 

— Physical volumes —

PV Name               /dev/sda2

PV UUID               fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T

PV Status             allocatable

Total PE / Free PE    19743 / 2362

 

# pvdisplay /dev/sda2 -m

— Physical volume —

PV Name               /dev/sda2

VG Name               cl

PV Size               77.12 GiB / not usable 2.00 MiB

Allocatable           yes

PE Size               4.00 MiB

Total PE              19743

Free PE               2362

Allocated PE          17381

PV UUID               fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T

 

— Physical Segments —

Physical extent 0 to 2020:

Logical volume      /dev/cl/swap

Logical extents     0 to 2020

Physical extent 2021 to 4580:

Logical volume      /dev/cl/home

Logical extents     0 to 2559

Physical extent 4581 to 17380:

Logical volume      /dev/cl/root

Logical extents     0 to 12799

Physical extent 17381 to 19742:

FREE

 

Routery

OpenWRT upgrade pro TL-WR741ND

Dnes jsem se pokusil o upgrade mého starého routeru TL-WR741nd. Na stránkách OpenWRT je velké upozornění, že routry s 4MB flash a 32MB RAM nejsou podporovány (4/32 warning)🙁 Není doporučeno je kupovat pro pouziti s OpenWRT. Cokoliv s větší Flash paměti a RAM je stabilnější pro nové FW. Přesto cokoliv novější než

OpenWrt Barrier Breaker 14.07 / LuCI Trunk (0.12+svn-r10530)

je lepší než nic. Na stránkách OpenWRT je link na OpenWrt 18.06.8.
Po stažení je možné provést upgrade přes LuCI GUI routru. Po vybrání staženého image a zaškrtnutí volby pro zachování nastavení je FW updatován tlacitkem Flash image.

Po rebootu je router zpět a nestartuje LuCI:-( Naštěstí je možné přihlásit se na router přes ssh (je dobré to mít povoleno před upgradem:-) log reportuje následující chybu:


root@OpenWrt:~# logread -l 100
Sun Apr 26 09:31:39 2020 daemon.err uhttpd[905]: /usr/lib/lua/luci/dispatcher.lua:234: /etc/config/luci seems to be corrupt, unable to find section 'main'
Sun Apr 26 09:31:39 2020 daemon.err uhttpd[905]: stack traceback:
Sun Apr 26 09:31:39 2020 daemon.err uhttpd[905]: [C]: in function 'assert'
Sun Apr 26 09:31:39 2020 daemon.err uhttpd[905]: /usr/lib/lua/luci/dispatcher.lua:234: in function 'dispatch'
Sun Apr 26 09:31:39 2020 daemon.err uhttpd[905]: /usr/lib/lua/luci/dispatcher.lua:127: in function </usr/lib/lua/luci/dispatcher.lua:126>

Po kontrole LuCI configu je jasné, že chyba je úplně někde jinde:-(

root@OpenWrt:~# head /etc/config/luci
config core 'main'
option lang 'auto'
option resourcebase '/luci-static/resources'
option mediaurlbase '/luci-static/bootstrap'

Po hledání na webu je možné najít několik příspěvků a ty zkombinovat dohromady. První vylučuje problém s konfigurací LuCI a poukazuje na rpcd. Jednoduchý test potvrzuje, že rpcd neběží:

root@OpenWrt:~# ps w|grep rpcd
1682 root 1200 S grep rpcd

Dalši část textu radí použít tenhle příkaz, který nefungoval:

root@OpenWrt:~# service rpcd restart
-ash: service: not found

Naštěstí jednoduché spuštění rpcd zafungovalo:

root@OpenWrt:~# rpcd &

Po rebootu nastal stejný problém. Po dalším hledaní je v druhém článku doporučení použít tlačítko pro factory reset nebo příkaz:

root@OpenWrt:~# firstboot
This will erase all settings and remove any installed packages. Are you sure? [N/y]
y
/dev/mtdblock3 is mounted as /overlay, only erasing files
root@OpenWrt:~# reboot

To stačilo na vymazání veškeré konfigurace a rpcd se nastartoval po rebootu a LuCI funguje správně.

Programování jednočipů

Jak flashnout C.H.I.P.

Našel jsem doma C.H.I.P. PC v ceně $9. Používám jeden jako Domoticz server a zatím všechno beží jak má. Ten druhý je potřeba na něco použít. Tak jsem vymyslel AP, který umožní přehrávat obsah na USB klíči přes WIFI. Pořídil jsem USB-LAN adapter, abych mohl konfigurovat síť i když nemám WIFI (bude pužita na AP). Po několika pokusech používat jenom USB-LAN jsem se dostal do stavu kdy jsem se nemohl přihlásit do OS C.H.I.P.u. Každé přihlášení skončilo hláškou “Access Denied”. Tato situace má jednoduché řešení. Reflashneme C.H.I.P. a začneme znovu.
První pokus je navštívit stránku výrobce a udělat flash pomocí webového prohlížeče. To samozřejmě skončilo nezdarem. Stranka NextThingCo neexistuje.
Druhý pokus je hledat na internetu. Kromě potvrzení, ze firma neexistuje, je možné najít i odkazy na fóra, případně na nejaké archívy. Všechno nakonec skončí odkazem na původní stránky, ktere neexistují. Dlouhý úvod smeřuje k tomu, že pořád existuje cesta jak reflashnout C.H.I.P., ale je to jenom pro hodně vytrvalé nadšence.
Nejdříve jsem začal zkoumat stránku C.h.i.p. Flash Collection. Všechno vypadalo nadějně, protože je tam popsaný způsob použití Virtual Boxu se staženou Virtuální Mašinou, ktera má všechno předinstalováno a stačí to jenom provést. Všechno fungovalo bez problémů až do okamžiku FASTBOOTu. Win10 nedetekovaly C.H.I.P. ve fast boot módu a tim skončilo celé flashování. Samozřejmě neúspěchem.
Jediná použitelná metoda je linux (stačí live verze) a SW různě zkombinovaný z více zdrojů. Tady je postup jak na to.

  1. Vybereme Linuxovou distribuci. Začal jsem Debianem a skončil u Ubuntu. Můj starý počítač (32bit) zkousnul jenom Ubuntu 16.04.5 LTS (Xenial Xerus). Stáhl jsem 1.5 GB desktop image a vyrobil bootovací USB pomocí Rufuse. Po nastavení bootu na USB jsem dostal na výběr instalaci nebo test pomocí live distribuce. Zvolil jsem live distribuci a po nastartování systému připojil Ubuntu do sítě.
  2. Další krok je instalace potřebných SW. Detailní popis je zde. Tady jsou příkazy, které jsem použil:

    sudo apt-get install git
    sudo apt-get install coreutils
    sudo apt-get update
    add universe
    sudo apt-get install sunxi-tools
    sudo apt install android-tools-fastboot
    sudo apt install u-boot-tools

  3. Po instalaci je dobré otestovat zda máme dostupné následující nástroje:

    ubuntu@ubuntu:~$ fastboot
    ubuntu@ubuntu:~$ sunxi-fel

    Pokud je nástroj nainstalovaný, výstup je návod na použití nástroje. Pokud není, systém vrátí chybovou hlášku:

    ubuntu@ubuntu:~$ fel
    No command ‘fel’ found, did you mean:
    Command ‘feh’ from package ‘feh’ (universe)
    Command ‘tel’ from package ‘orville-write’ (universe)
    Command ‘fet’ from package ‘fet’ (universe)
    Command ‘fal’ from package ‘dnet-progs’ (universe)
    Command ‘bel’ from package ‘belier’ (universe)
    Command ‘el’ from package ‘oneliner-el’ (universe)
    fel: command not found

  4. Další krok je stáhnout C.H.I.P. tools a images. C.H.I.P. flash collection obsahuje images, ktere se daji použít pro flashování. Toto je obsah zip souboru:

    stable-buildroot-b34
    stable-gui-b149
    stable-pocketchip-b126
    stable-server-b149
    testing-buildroot-b23
    testing-gui-b543
    testing-pocketchip-b667
    testing-server-b543

    Použil jsem stable-server-b149, protože nepotřebuji GUI. C.H.I.P. tools jsem rozbalil do home adresáře linuxového uživatele jako CHIP-tools. C.H.I.P. image jsem dal do home adresare také do adresáře fw.

  5. A můžeme začít flashovat. Pomocí lsusb zjistíme zda je C.H.I.P videt v systému:

    ubuntu@ubuntu:~$ lsusb
    Bus 002 Device 003: ID 03f0:231d HP, Inc Broadcom 2070 Bluetooth Combo
    Bus 002 Device 004: ID 1f3a:efe8 Allwinner Technology sunxi SoC OTG connector in FEL/flashing mode
    Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 004: ID 03f0:371d HP, Inc HP un2430 Mobile Broadband Module
    Bus 001 Device 003: ID 138a:003c Validity Sensors, Inc. VFS471 Fingerprint Reader
    Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    Pokud jej vidime, odpojíme C.H.I.P z USB a nastavíme do FEL módu pomocí propojky na pinech FEL a GND”

    Více detailů je možné najít na mirroru původní C.H.I.P. dokumentace zde.
    Tady je celý průběh:

    ubuntu@ubuntu:~/CHIP-tools$ FEL='sudo sunxi-fel' FASTBOOT='sudo fastboot' SNIB=false ./chip-update-firmware.sh -L ../fw/

    == Local directory '../fw' selected ==
    == preparing images ==
    == Local/cached probe files located ==
    == Staging for NAND probe ==
    Image Name:   detect NAND
    Created:      Fri Mar  3 14:59:50 2023
    Image Type:   ARM Linux Script (uncompressed)
    Data Size:    97 Bytes = 0.09 KiB = 0.00 MiB
    Load Address: 00000000
    Entry Point:  00000000
    Contents:
       Image 0: 89 Bytes = 0.09 KiB = 0.00 MiB
    waiting for fel...OK
    waiting for fel.....OK
    NAND detected:
    nand_erasesize=400000
    nand_oobsize=500
    nand_writesize=4000
    == Cached UBI located ==
    Image Name:   flash server
    Created:      Fri Mar  3 14:59:59 2023
    Image Type:   ARM Linux Script (uncompressed)
    Data Size:    1784 Bytes = 1.74 KiB = 0.00 MiB
    Load Address: 00000000
    Entry Point:  00000000
    Contents:
       Image 0: 1776 Bytes = 1.73 KiB = 0.00 MiB
    waiting for fel...OK
    waiting for fastboot..........OK
    Sending sparse 'UBI' 1/11 (28672 KB)               OKAY [  2.847s]
    Writing 'UBI'                                      OKAY [  3.085s]
    Sending sparse 'UBI' 2/11 (28672 KB)               OKAY [  2.934s]
    Writing 'UBI'                                      OKAY [  8.372s]
    Sending sparse 'UBI' 3/11 (28672 KB)               OKAY [  2.702s]
    Writing 'UBI'                                      OKAY [ 19.059s]
    Sending sparse 'UBI' 4/11 (28672 KB)               OKAY [  2.636s]
    Writing 'UBI'                                      OKAY [ 19.079s]
    Sending sparse 'UBI' 5/11 (28672 KB)               OKAY [  2.438s]
    Writing 'UBI'                                      OKAY [ 18.909s]
    Sending sparse 'UBI' 6/11 (28672 KB)               OKAY [  2.677s]
    Writing 'UBI'                                      OKAY [ 18.988s]
    Sending sparse 'UBI' 7/11 (28672 KB)               OKAY [  2.673s]
    Writing 'UBI'                                      OKAY [ 19.076s]
    Sending sparse 'UBI' 8/11 (28672 KB)               OKAY [  2.472s]
    Writing 'UBI'                                      OKAY [ 19.166s]
    Sending sparse 'UBI' 9/11 (28672 KB)               OKAY [  2.699s]
    Writing 'UBI'                                      OKAY [ 19.358s]
    Sending sparse 'UBI' 10/11 (28672 KB)              OKAY [  3.020s]
    Writing 'UBI'                                      OKAY [ 19.402s]
    Sending sparse 'UBI' 11/11 (16384 KB)              OKAY [  1.632s]
    Writing 'UBI'                                      OKAY [  4.144s]
    Finished. Total time: 197.391s
    Resuming boot                                      OKAY [  0.000s]
    Finished. Total time: 0.000s
    
    
    FLASH VERIFICATION COMPLETE.
    
    
       #  #  #
      #########
    ###       ###
      # {#}   #
    ###  '%######
      #       #
    ###       ###
      ########
       #  #  #
    
    
    
    CHIP is ready to roll!

     

Programování jednočipů

Uptime a ESP8266

Jakékoliv měření času se dá provést přes funkci millis(). Spoustu pěkného povídání je zde. Celé povídání zdůrazňuje měření intervalu a ne jednotlivých časů. Potom je také možné díky modulární aritmetice pohodově překonat přetečení unsigned long typu, co nastava asi každých 47 dní. Pokud je potřeba čas prodloužit, článek doporučuje použít 64 bitů pro uložení času přes”

uint64_t millis64() {
    static uint32_t low32, high32;
    uint32_t new_low32 = millis();
    if (new_low32 < low32) high32++;
    low32 = new_low32;
    return (uint64_t) high32 << 32 | low32;
}

Pokud nepotřebujeme v uptime měřit sekundy, tak se pomocí zjednodušení na minuty dostaneme na nekolik tisíc let i pomoci unsigned long. Jenom je potreba pracovat s millis() jednou za minutu (to je 60 000 ticku). Kód pak může vypadat napriklad takhle”

unsigned long TT,upM=0,upH=0,upD=0;

if (millis()-TT >60000)
    {
      upM++;
      if (upM == 60) 
      {
        upM = 0;
        upH++;
      }
      if (upH == 24)
      {
        upH = 0;
        upD++;
      }
    TT = millis();
    }
Programování jednočipů

Nastavení času modemu SIM800L

Modul SIM800L je jednoduchy GSM modem, který se dá připojit přes sériovou linku (i SW serial) a po vložení karty umožňuje posílat/přijímat SMS a hovory. Pro hovory je potřeba připojit mikrofon a reproduktor, ale SMS fungují bez dalšího HW. Moc pěkný seriál je na stránkách arduinotech. Modem potřebuje kvalitní napájení 4.2V a ve špičkách odebírá až 3A.

Po připojení napájení LED bliká rychle a asi po 10-ti bliknutích zhasne (modem se připojuje k síti) a po připojení bliká pomaleji. SIM se vkláda kontakty k plošnému spoji.

Související obrázek

Modem fungoval na první zapojení pokud měl dostatečné napájení. Jediný problém byl se získaním času ze sítě operátora. Každý pokus skončil časem podobným tomuto

04/01/01,00:01:55+32

Nepomáhala změna žádneho rozumného parametru. Po několika bezvýsledných pokusech jsem se rozhodl zmenit CBAND (Get and Set Mobile Operation Band ). Původní nastavení bylo:

+CBAND: EGSM_MODE,ALL_BAND

Modem vypisoval následujíci možnosti pro CBAND parameter:

+CBAND: (EGSM_MODE,DCS_MODE,GSM850_MODE,PCS_MODE,EGSM_DCS_MODE, GSM850_PCS_MODE,EGSM_PCS_MODE,ALL_BAND)

První pokus s DCS_MODE nefungoval, ale další s EGSM_MODE nebo ALL_BAND pomohl.

Změna na EGSM_MODE:

at+cband=EGSM_MODE

OK

*PSUTTZ: 2018,10,31,17,15,19,”+4″,0

DST: 0

+CIEV: 10,”23002″,”CEZ”,”CEZ”, 0, 0

Kontrola změny:

at+cband?

+CBAND: EGSM_MODE

OK

Vypsání času:

at+cclk?

+CCLK: “18/10/31,18:15:32+04”

Po zapsání do konfigurace AT&W modem po připojení napájení má čas od operátora.

Programování jednočipů

Blikající LED na D1 mini

Dnes jsme úspěšně rozblikali LED diodu na D1 mini. D1 mini je levný čínský obvod připojitelný k wifi a programovatelný přes Arduino IDE. Tohle je jednoduchý prográmek na rozblikání vestavěné LED diody. LED dioda je připojená na portu D4.

Jednoduchý prográmek na blikání LED diody je tady:

void setup() {
// put your setup code here, to run once:
pinMode(D4, OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(D4, HIGH);
delay(1000);
digitalWrite(D4, LOW);
delay(1000);
}

www

Jak přidat animovaný gif jako obrázek v hlavičce témy Twenty Sixteen

Téma Twenty Sixteen ve WordPressu není schopna nahrát animovaný gif jako obrázek v hlavičce. Obrázku se nejdříve změní rozměry a pak se vezme jeden frame z originálního gifu. Takhle se obrázek změní na statický.

Nezáleží zda se zvolí Oříznout nebo neoříznout obrázek. Obrázek je vždy oříznutý na následující velikosti 1200×280, 1024×238, 768×180, 300×70, 150×150. Tyto obrázky jsou spíše jpg než animovaný gif:-)

Nejjednodušší způsob jak to změnit je najít umístění daného obrázku pomocí pravého tlačítka a vybrání “Kopírovat adresu obrázku”. Dostaneme link na webu v tomto tvaru:

https://www.example.ccom/wp-content/uploads/2018/10/pict.gif

pokud originální obrázek byl pict.gif. Pokud se podíváme na adresář z predchozího linku najdeme v instalaci WordPressu soubory s různými velikostmi pro daný obrázek. Jsou pojmenovány .gif, ale neobsahují animaci. Použitím služby:

https://ezgif.com/resize

vytvoříme animované gify whodne velikosti z původního obrázku. Potom je nahrajeme do stejného adresáře kam ukazuje link nahoře. Tím se nahradí statické obrázky animovanými a hlavička zobrazuje animovaný gif spravně.

Obvyklý způsob nahrávani animovaných gifů funguje normálně v příspěvcích a kroky popsané výše jsou nutné jenom pro obrázek v hlavičce;-)

phone