https://xn--n-soa.lt/w//api.php?action=feedcontributions&user=%5Cdev%5Cnull&feedformat=atomŽinynas - Naudotojo indėlis [lt]2024-03-28T18:32:23ZNaudotojo indėlisMediaWiki 1.35.1https://xn--n-soa.lt/w//index.php?title=Hyper-V&diff=9627Hyper-V2024-03-18T10:56:58Z<p>\dev\null: </p>
<hr />
<div>= Diegimas =<br />
Powershell admin teisėmis:<br />
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart<br />
= Virtualaus switcho sukūrimas ir konfigūravimas =<br />
New-VMSwitch -Name vSwitch -SwitchType Internal<br />
Get-NetAdapter # paleidžiam ir pažiūrim koks IfIndex, pas mane rodo 39<br />
New-NetIPAddress -IPAddress 192.168.100.1 -PrefixLength 24 -InterfaceIndex 39<br />
New-NetNat -Name Nat-Switch-Outside -InternalIPInterfaceAddressPrefix 192.168.100.0/24<br />
Priskiriam "vSwitch" virtualiai mašinai (edit virtual machine settings etc...)<br />
== Port forwardas ==<br />
Porto 22 (ssh) forwardas į išorę (220) portą<br />
Add-NetNatStaticMapping -NatName Nat-Switch-Outside -Protocol TCP -ExternalIPAddress 0.0.0.0/24 -ExternalPort 220 -InternalIPAddress 192.168.100.10 -InternalPort 22<br />
== Guest OS (virtualioje mašinoje) nustatome ip ==<br />
<br />
ip: 192.168.100.10/24<br />
gw: 192.168.100.1<br />
dns: 1.1.1.1, 8.8.8.8<br />
<br />
<br />
= Windows XP Guest =<br />
<br />
* [https://superuser.com/questions/1230652/get-official-windows-xp-virtual-machine-for-hyper-v Diegimas panaudojant XP mode atvaizdą]<br />
* [https://archive.org/download/Hyper-V_vmguest/vmguest.iso Hyper-V Integration Services 6.3.9300.16384 ISO] SHA256: d1037fd8e788ce8ed0df16ec21f057e74512d5b3d551cc9396c7ae95dccba10f<br />
<br />
= Windows Vista =<br />
<br />
* [https://archive.org/details/Windows_Vista_SP2_x64.iso Windows Vista x64 SP2]<br />
* [https://archive.org/download/Hyper-V_vmguest/vmguest.iso Hyper-V Integration Services 6.3.9300.16384 ISO] SHA256: d1037fd8e788ce8ed0df16ec21f057e74512d5b3d551cc9396c7ae95dccba10f<br />
<br />
= Windows 7 =<br />
<br />
* [https://support.microsoft.com/en-us/topic/hyper-v-integration-components-update-for-windows-virtual-machines-that-are-running-on-a-windows-10-or-windows-server-2016-based-host-bd22f4f6-feec-89f4-8a1d-405076ff4222 This update provides Hyper-V integration components to virtual machines]<br />
<br />
= Ubuntu =<br />
<br />
apt get-install linux-azure<br />
<br />
[[Category:Windows]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Hyper-V&diff=9626Hyper-V2024-03-18T10:56:38Z<p>\dev\null: </p>
<hr />
<div>= Diegimas =<br />
Powershell admin teisėmis:<br />
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart<br />
= Virtualaus switcho sukūrimas ir konfigūravimas =<br />
New-VMSwitch -Name vSwitch -SwitchType Internal<br />
Get-NetAdapter # paleidžiam ir pažiūrim koks IfIndex, pas mane rodo 39<br />
New-NetIPAddress -IPAddress 192.168.100.1 -PrefixLength 24 -InterfaceIndex 39<br />
New-NetNat -Name Nat-Switch-Outside -InternalIPInterfaceAddressPrefix 192.168.100.0/24<br />
Priskiriam "vSwitch" virtualiai mašinai (edit virtual machine settings etc...)<br />
== Port forwardas ==<br />
Porto 22 (ssh) forwardas į išorę (220) portą<br />
Add-NetNatStaticMapping -NatName Nat-Switch-Outside -Protocol TCP -ExternalIPAddress 0.0.0.0/24 -ExternalPort 220 -InternalIPAddress 192.168.100.10 -InternalPort 22<br />
== Guest OS (virtualio mašinoje) nustatome ip ==<br />
<br />
ip: 192.168.100.10/24<br />
gw: 192.168.100.1<br />
dns: 1.1.1.1, 8.8.8.8<br />
<br />
<br />
= Windows XP Guest =<br />
<br />
* [https://superuser.com/questions/1230652/get-official-windows-xp-virtual-machine-for-hyper-v Diegimas panaudojant XP mode atvaizdą]<br />
* [https://archive.org/download/Hyper-V_vmguest/vmguest.iso Hyper-V Integration Services 6.3.9300.16384 ISO] SHA256: d1037fd8e788ce8ed0df16ec21f057e74512d5b3d551cc9396c7ae95dccba10f<br />
<br />
= Windows Vista =<br />
<br />
* [https://archive.org/details/Windows_Vista_SP2_x64.iso Windows Vista x64 SP2]<br />
* [https://archive.org/download/Hyper-V_vmguest/vmguest.iso Hyper-V Integration Services 6.3.9300.16384 ISO] SHA256: d1037fd8e788ce8ed0df16ec21f057e74512d5b3d551cc9396c7ae95dccba10f<br />
<br />
= Windows 7 =<br />
<br />
* [https://support.microsoft.com/en-us/topic/hyper-v-integration-components-update-for-windows-virtual-machines-that-are-running-on-a-windows-10-or-windows-server-2016-based-host-bd22f4f6-feec-89f4-8a1d-405076ff4222 This update provides Hyper-V integration components to virtual machines]<br />
<br />
= Ubuntu =<br />
<br />
apt get-install linux-azure<br />
<br />
[[Category:Windows]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Fail2ban&diff=9625Fail2ban2024-03-13T07:55:56Z<p>\dev\null: </p>
<hr />
<div>Įrankis skirtas blokuoti pasikartojančioms [[SSH]] auth atakoms. Tokioms kaip [[brueforce]], bandant atspėti vartotojo slaptažodį naudojantis [[dictionary]] ar atsitiktinai generuotais simboliais. Šis įrankis gali ne tik aprėpti SSH atakų blokavimą skaitant autorizacijos žurnalą bet ir kitus žimių servisų žurnalus tokių kaip [[apache]] [[http]] auth, [[imap]], [[smtp]], [[pop3]] ir t.t.<br />
<br />
= Diegimas =<br />
<br />
== Debian/Ubuntu ==<br />
apt-get install fail2ban<br />
== Gentoo ==<br />
emerge -av fail2ban<br />
== CentOS/Redhat ==<br />
yum install fail2ban<br />
== ArchLinux ==<br />
pacman -S fail2ban<br />
== FreeBSD ==<br />
pkg install fail2ban<br />
= Konfigūravimas =<br />
Konfigūracijos failai:<br />
* '''/etc/fail2ban/fail2ban.conf''' - Nusistato vidiniai fail2ban nustatymai.<br />
* '''/etc/fail2ban/jail.d/''' - direktorija kurioje nurodomi konfigai su failais (kokius servisus stebėti) ssh nutylimai įjungtas visada.<br />
* '''/etc/fail2ban/filter.d/''' - direktorija kurioje surašomi servisų žurnalų filtrai (failuose) bei aprašomas jų parsinimas, kaip aptikti atakas.<br />
* '''/etc/fail2ban/action.d/''' - direktorija kurioje surašytos prevencijos taisyklės (firewall blokavimai ir t.t.). <br />
* '''/etc/fail2ban/paths-common.conf''' ir '''paths-debian.conf''' - šiuose failuose nurodomi keliai iki žurnalų.<br />
* '''/etc/fail2ban/jail.conf''' - globalios taisyklės, tokios kaip užlaikymo laikas (bano laikas) kokiu reitingu daryti blokavimus ir kaip reaguoti i juos. Kokios [[firewall]] taisyklės ir t.t.<br />
== Nustatymų keitimas ==<br />
Pvz.: norime pakeisti max ban time (kiek trūks užblokavimas) šias taisykles rašome į lokalų failą '''/etc/fail2ban/jail.d/customization.local''', pavyzdys apačioje:<br />
[DEFAULT]<br />
bantime = 3600<br />
ignoreip = 127.0.0.1/8 10.131.21.138<br />
pvz.: jeigu ssh portas nėra standartinis, jį pakeičiame<br />
[sshd]<br />
enabled = true<br />
port = 220<br />
<br />
Perkrauname:<br />
systemctl restart fail2ban<br />
= Valdymas =<br />
== Statusas ==<br />
fail2ban-client status sshd<br />
== Blokuotų ip adresų išimimas ==<br />
fail2ban-client set sshd unbanip x.x.x.x<br />
<br />
<br />
[[Category:Saugumas]]<br />
[[Category:Tinklas]]<br />
[[Category:Linux]]<br />
[[Category:Debian]]<br />
[[Category:Ubuntu]]<br />
[[Category:Archlinux]]<br />
[[Category:Gentoo]]<br />
[[Category:CentOS]]<br />
[[Category:Redhat]]<br />
[[Category:FreeBSD]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Fail2ban&diff=9624Fail2ban2024-03-13T07:49:33Z<p>\dev\null: </p>
<hr />
<div>Įrankis skirtas blokuoti pasikartojančioms [[SSH]] auth atakoms. Tokioms kaip [[brueforce]], bandant atspėti vartotojo slaptažodį naudojantis [[dictionary]] ar atsitiktinai generuotais simboliais. Šis įrankis gali ne tik aprėpti SSH atakų blokavimą skaitant autorizacijos žurnalą bet ir kitus žimių servisų žurnalus tokių kaip [[apache]] [[http]] auth, [[imap]], [[smtp]], [[pop3]] ir t.t.<br />
<br />
= Diegimas =<br />
<br />
== Debian/Ubuntu ==<br />
apt-get install fail2ban<br />
== Gentoo ==<br />
emerge -av fail2ban<br />
== CentOS/Redhat ==<br />
yum install fail2ban<br />
== ArchLinux ==<br />
pacman -S fail2ban<br />
== FreeBSD ==<br />
pkg install fail2ban<br />
= Konfigūravimas =<br />
Konfigūracijos failai:<br />
* '''/etc/fail2ban/fail2ban.conf''' - Nusistato vidiniai fail2ban nustatymai.<br />
* '''/etc/fail2ban/jail.d/''' - direktorija kurioje nurodomi konfigai su failais (kokius servisus stebėti) ssh nutylimai įjungtas visada.<br />
* '''/etc/fail2ban/filter.d/''' - direktorija kurioje surašomi servisų žurnalų filtrai (failuose) bei aprašomas jų parsinimas, kaip aptikti atakas.<br />
* '''/etc/fail2ban/action.d/''' - direktorija kurioje surašytos prevencijos taisyklės (firewall blokavimai ir t.t.). <br />
* '''/etc/fail2ban/paths-common.conf''' ir '''paths-debian.conf''' - šiuose failuose nurodomi keliai iki žurnalų.<br />
* '''/etc/fail2ban/jail.conf''' - globalios taisyklės, tokios kaip užlaikymo laikas (bano laikas) kokiu reitingu daryti blokavimus ir kaip reaguoti i juos. Kokios [[firewall]] taisyklės ir t.t.<br />
== Nustatymų keitimas ==<br />
Pvz.: norime pakeisti max ban time (kiek trūks užblokavimas) šias taisykles rašome į lokalų failą '''/etc/fail2ban/jail.d/customization.local''', pavyzdys apačioje:<br />
[DEFAULT]<br />
bantime = 3600<br />
ignoreip = 127.0.0.1/8 10.131.21.138<br />
pvz.: jeigu ssh portas nėra standartinis, jį pakeičiame<br />
[sshd]<br />
enabled = true<br />
port = 220<br />
= Valdymas =<br />
== Statusas ==<br />
fail2ban-client status sshd<br />
== Blokuotų ip adresų išimimas ==<br />
fail2ban-client set sshd unbanip x.x.x.x<br />
<br />
<br />
[[Category:Saugumas]]<br />
[[Category:Tinklas]]<br />
[[Category:Linux]]<br />
[[Category:Debian]]<br />
[[Category:Ubuntu]]<br />
[[Category:Archlinux]]<br />
[[Category:Gentoo]]<br />
[[Category:CentOS]]<br />
[[Category:Redhat]]<br />
[[Category:FreeBSD]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Fail2ban&diff=9623Fail2ban2024-03-13T07:44:03Z<p>\dev\null: </p>
<hr />
<div>Įrankis skirtas blokuoti pasikartojančioms [[SSH]] auth atakoms. Tokioms kaip [[brueforce]], bandant atspėti vartotojo slaptažodį naudojantis [[dictionary]] ar atsitiktinai generuotais simboliais. Šis įrankis gali ne tik aprėpti SSH atakų blokavimą skaitant autorizacijos žurnalą bet ir kitus žimių servisų žurnalus tokių kaip [[apache]] [[http]] auth, [[imap]], [[smtp]], [[pop3]] ir t.t.<br />
<br />
= Diegimas =<br />
<br />
== Debian/Ubuntu ==<br />
apt-get install fail2ban<br />
== Gentoo ==<br />
emerge -av fail2ban<br />
== CentOS/Redhat ==<br />
yum install fail2ban<br />
== ArchLinux ==<br />
pacman -S fail2ban<br />
== FreeBSD ==<br />
pkg install fail2ban<br />
= Konfigūravimas =<br />
Konfigūracijos failai:<br />
* '''/etc/fail2ban/fail2ban.conf''' - Nusistato vidiniai fail2ban nustatymai.<br />
* '''/etc/fail2ban/jail.d/''' - direktorija kurioje nurodomi konfigai su failais (kokius servisus stebėti) ssh nutylimai įjungtas visada.<br />
* '''/etc/fail2ban/filter.d/''' - direktorija kurioje surašomi servisų žurnalų filtrai (failuose) bei aprašomas jų parsinimas, kaip aptikti atakas.<br />
* '''/etc/fail2ban/action.d/''' - direktorija kurioje surašytos prevencijos taisyklės (firewall blokavimai ir t.t.). <br />
* '''/etc/fail2ban/paths-common.conf''' ir '''paths-debian.conf''' - šiuose failuose nurodomi keliai iki žurnalų.<br />
* '''/etc/fail2ban/jail.conf''' - globalios taisyklės, tokios kaip užlaikymo laikas (bano laikas) kokiu reitingu daryti blokavimus ir kaip reaguoti i juos. Kokios [[firewall]] taisyklės ir t.t.<br />
== Nustatymų keitimas ==<br />
Pvz.: norime pakeisti max ban time (kiek trūks užblokavimas) šias taisykles rašome į lokalų failą '''/etc/fail2ban/jail.d/customization.local''', pavyzdys apačioje:<br />
[DEFAULT]<br />
bantime = 3600<br />
ignoreip = 127.0.0.1/8 10.131.21.138<br />
pvz.: jeigu ssh portas nėra standartinis, jį pakeičiame<br />
[ssh]<br />
enabled = true<br />
port = 220<br />
= Valdymas =<br />
== Statusas ==<br />
fail2ban-client status sshd<br />
== Blokuotų ip adresų išimimas ==<br />
fail2ban-client set sshd unbanip x.x.x.x<br />
<br />
<br />
[[Category:Saugumas]]<br />
[[Category:Tinklas]]<br />
[[Category:Linux]]<br />
[[Category:Debian]]<br />
[[Category:Ubuntu]]<br />
[[Category:Archlinux]]<br />
[[Category:Gentoo]]<br />
[[Category:CentOS]]<br />
[[Category:Redhat]]<br />
[[Category:FreeBSD]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Hyper-V&diff=9622Hyper-V2024-03-07T19:37:22Z<p>\dev\null: </p>
<hr />
<div><br />
= Windows XP Guest =<br />
<br />
* [https://superuser.com/questions/1230652/get-official-windows-xp-virtual-machine-for-hyper-v Diegimas panaudojant XP mode atvaizdą]<br />
* [https://archive.org/download/Hyper-V_vmguest/vmguest.iso Hyper-V Integration Services 6.3.9300.16384 ISO] SHA256: d1037fd8e788ce8ed0df16ec21f057e74512d5b3d551cc9396c7ae95dccba10f<br />
<br />
= Windows Vista =<br />
<br />
* [https://archive.org/details/Windows_Vista_SP2_x64.iso Windows Vista x64 SP2]<br />
* [https://archive.org/download/Hyper-V_vmguest/vmguest.iso Hyper-V Integration Services 6.3.9300.16384 ISO] SHA256: d1037fd8e788ce8ed0df16ec21f057e74512d5b3d551cc9396c7ae95dccba10f<br />
<br />
= Windows 7 =<br />
<br />
* [https://support.microsoft.com/en-us/topic/hyper-v-integration-components-update-for-windows-virtual-machines-that-are-running-on-a-windows-10-or-windows-server-2016-based-host-bd22f4f6-feec-89f4-8a1d-405076ff4222 This update provides Hyper-V integration components to virtual machines]<br />
<br />
[[Category:Windows]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Hyper-V&diff=9621Hyper-V2024-03-07T19:33:16Z<p>\dev\null: </p>
<hr />
<div><br />
= Windows XP Guest =<br />
<br />
* [https://superuser.com/questions/1230652/get-official-windows-xp-virtual-machine-for-hyper-v Diegimas panaudojant XP mode atvaizdą]<br />
* [https://archive.org/download/Hyper-V_vmguest/vmguest.iso Hyper-V Integration Services 6.3.9300.16384 ISO] SHA256: d1037fd8e788ce8ed0df16ec21f057e74512d5b3d551cc9396c7ae95dccba10f<br />
<br />
= Windows Vista =<br />
<br />
* [https://archive.org/details/Windows_Vista_SP2_x64.iso Windows Vista x64 SP2]<br />
* [https://archive.org/download/Hyper-V_vmguest/vmguest.iso Hyper-V Integration Services 6.3.9300.16384 ISO] SHA256: d1037fd8e788ce8ed0df16ec21f057e74512d5b3d551cc9396c7ae95dccba10f<br />
<br />
[[Category:Windows]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Hyper-V&diff=9620Hyper-V2024-03-07T19:31:14Z<p>\dev\null: </p>
<hr />
<div><br />
= Windows XP Guest =<br />
<br />
* [https://superuser.com/questions/1230652/get-official-windows-xp-virtual-machine-for-hyper-v Diegimas panaudojant XP mode atvaizdą]<br />
* [https://archive.org/download/Hyper-V_vmguest/vmguest.iso Hyper-V Integration Services 6.3.9300.16384 ISO] SHA256: d1037fd8e788ce8ed0df16ec21f057e74512d5b3d551cc9396c7ae95dccba10f<br />
<br />
[[Category:Windows]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Hyper-V&diff=9619Hyper-V2024-03-07T19:30:59Z<p>\dev\null: Naujas puslapis: = Windows XP = * [https://superuser.com/questions/1230652/get-official-windows-xp-virtual-machine-for-hyper-v Diegimas panaudojant XP mode atvaizdą] * [https://archive.org/dow...</p>
<hr />
<div><br />
= Windows XP =<br />
<br />
* [https://superuser.com/questions/1230652/get-official-windows-xp-virtual-machine-for-hyper-v Diegimas panaudojant XP mode atvaizdą]<br />
* [https://archive.org/download/Hyper-V_vmguest/vmguest.iso Hyper-V Integration Services 6.3.9300.16384 ISO] SHA256: d1037fd8e788ce8ed0df16ec21f057e74512d5b3d551cc9396c7ae95dccba10f<br />
<br />
[[Category:Windows]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Lsof_alternatyva_windows&diff=9618Lsof alternatyva windows2024-03-03T17:18:25Z<p>\dev\null: Naujas puslapis: '''resmon.exe''' 1100px Category:Windows</p>
<hr />
<div>'''resmon.exe'''<br />
<br />
[[Vaizdas:Lsof alternative windows.png|1100px]]<br />
<br />
[[Category:Windows]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Vaizdas:Lsof_alternative_windows.png&diff=9617Vaizdas:Lsof alternative windows.png2024-03-03T17:17:21Z<p>\dev\null: </p>
<hr />
<div>n</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Wsl2&diff=9616Wsl22024-02-21T09:38:50Z<p>\dev\null: \dev\null pervadino puslapį Wsl2 į Wsl</p>
<hr />
<div>#PERADRESAVIMAS [[Wsl]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Wsl&diff=9615Wsl2024-02-21T09:38:50Z<p>\dev\null: \dev\null pervadino puslapį Wsl2 į Wsl</p>
<hr />
<div>„Windows“ posistemė, skirta [[Linux]] ('''WSL''') – tai „Windows“ funkcija, leidžianti kūrėjams paleisti „Linux“ aplinką be atskiros virtualios mašinos ar dvigubo paleidimo. Yra dvi '''WSL''' versijos: '''WSL 1''' ir '''WSL 2'''. '''WSL 1''' pirmą kartą buvo išleistas 2016 m. rugpjūčio 2 d. ir veikia kaip suderinamumo sluoksnis, skirtas [[Linux]] binariniams failams ([[ELF Formatas|ELF]] formatu), įdiegiant [[Linux]] sistemos iškvietimus (syscalls) Windows branduolyje. Jis pasiekiamas „Windows 10“, „Windows 10 LTSB / LTSC“, „Windows 11“, „Windows Server 2016“, „Windows Server 2019“ ir „Windows Server 2022“.<br />
<br />
2019 m. gegužės mėn. buvo išleistas '''WSL 2''', kuriame pristatomi svarbūs pakeitimai, pvz., tikrasis [[Linux]] branduolys, naudojant [[Hyper-V]] funkcijų pogrupį. '''WSL 2''' skiriasi nuo '''WSL 1''' tuo, kad '''WSL 2''' veikia valdomoje virtualioje mašinoje, kuri įgyvendina visą Linux branduolį. Todėl '''WSL 2''' yra suderinamas su daugiau [[Linux]] [[binarinis failas|binarinių failų]] nei '''WSL 1''', nes ne visi syscall'ai buvo įdiegti į '''WSL 1'''. Nuo 2019 m. birželio mėn. '''WSL 2''' pasiekiamas Windows 10 klientams per Windows Insider programą, įskaitant Home Edition. Pagal numatytuosius nustatymus '''WSL''' pasiekiamas ne visiems „Windows 10“ vartotojams. Jį galima įdiegti prisijungus prie „Windows Insider“ programos arba rankiniu būdu per „Microsoft Store“ arba „[[Winget]]“.<br />
<br />
<br />
== USB Primontavimas ==<br />
<br />
cmd.exe (Admin rights)<br />
winget install --interactive --exact dorssel.usbipd-win<br />
usbipd wsl list<br />
usbipd wsl attach --busid <busid><br />
usbipd wsl detach --busid <busid><br />
WSL2<br />
sudo apt install linux-tools-virtual hwdata<br />
sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20<br />
<br />
[[Category:Windows]]<br />
[[Category:WSL1]]<br />
[[Category:WSL2]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Kategorija:WSL2&diff=9614Kategorija:WSL22024-02-21T09:38:18Z<p>\dev\null: Naujas puslapis: Category:Windows</p>
<hr />
<div>[[Category:Windows]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Kategorija:WSL1&diff=9613Kategorija:WSL12024-02-21T09:37:20Z<p>\dev\null: Naujas puslapis: Category:Windows</p>
<hr />
<div>[[Category:Windows]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Wsl&diff=9612Wsl2024-02-21T09:37:07Z<p>\dev\null: </p>
<hr />
<div>„Windows“ posistemė, skirta [[Linux]] ('''WSL''') – tai „Windows“ funkcija, leidžianti kūrėjams paleisti „Linux“ aplinką be atskiros virtualios mašinos ar dvigubo paleidimo. Yra dvi '''WSL''' versijos: '''WSL 1''' ir '''WSL 2'''. '''WSL 1''' pirmą kartą buvo išleistas 2016 m. rugpjūčio 2 d. ir veikia kaip suderinamumo sluoksnis, skirtas [[Linux]] binariniams failams ([[ELF Formatas|ELF]] formatu), įdiegiant [[Linux]] sistemos iškvietimus (syscalls) Windows branduolyje. Jis pasiekiamas „Windows 10“, „Windows 10 LTSB / LTSC“, „Windows 11“, „Windows Server 2016“, „Windows Server 2019“ ir „Windows Server 2022“.<br />
<br />
2019 m. gegužės mėn. buvo išleistas '''WSL 2''', kuriame pristatomi svarbūs pakeitimai, pvz., tikrasis [[Linux]] branduolys, naudojant [[Hyper-V]] funkcijų pogrupį. '''WSL 2''' skiriasi nuo '''WSL 1''' tuo, kad '''WSL 2''' veikia valdomoje virtualioje mašinoje, kuri įgyvendina visą Linux branduolį. Todėl '''WSL 2''' yra suderinamas su daugiau [[Linux]] [[binarinis failas|binarinių failų]] nei '''WSL 1''', nes ne visi syscall'ai buvo įdiegti į '''WSL 1'''. Nuo 2019 m. birželio mėn. '''WSL 2''' pasiekiamas Windows 10 klientams per Windows Insider programą, įskaitant Home Edition. Pagal numatytuosius nustatymus '''WSL''' pasiekiamas ne visiems „Windows 10“ vartotojams. Jį galima įdiegti prisijungus prie „Windows Insider“ programos arba rankiniu būdu per „Microsoft Store“ arba „[[Winget]]“.<br />
<br />
<br />
== USB Primontavimas ==<br />
<br />
cmd.exe (Admin rights)<br />
winget install --interactive --exact dorssel.usbipd-win<br />
usbipd wsl list<br />
usbipd wsl attach --busid <busid><br />
usbipd wsl detach --busid <busid><br />
WSL2<br />
sudo apt install linux-tools-virtual hwdata<br />
sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20<br />
<br />
[[Category:Windows]]<br />
[[Category:WSL1]]<br />
[[Category:WSL2]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=PowerMonkey&diff=9611PowerMonkey2024-02-21T09:02:09Z<p>\dev\null: FIVR</p>
<hr />
<div><br />
[[Vaizdas:Aborting-powermonkey.png]]<br />
<br />
'''Sumažinkite procesoriaus energijos eikvojimą ir padidinkite našumą – ekologiškiau ir paprasčiau'''<br />
<br />
Iki 2020-ųjų visi žinojo, kas yra „overclocking“: sistemos priartinimas iki jos ribų didinant jos darbo dažnį, įtampą arba abu. Šis procesas buvo labai kontraversiškas, tačiau jis buvo tobulinamas, net kai kurios sistemos buvo „gamykliškai paspartintos“.<br />
<br />
Tačiau daug mažiau žmonių yra girdėję apie analogą: "undervoltage". Įtampos mažinimas yra tam tikra prasme priešingas procesas nei didinimas: sumažinus procesoriaus įtampą, CPU sunaudoja daug mažiau energijos ir generuoja daug mažiau šilumos.<br />
<br />
Įdomu tai, kad tai padarius termiškai ribotai sistemai, tokiai kaip nešiojamasis kompiuteris arba SFF (mažos formos) kompiuteris, sumažins šilumą ir pagerins našumą! Magija? Ne, fizika! Nešiojamojo kompiuterio aušinimo sistema gali pašalinti tik dalį šilumos, o kai to neužtenka, nebelieka kitos išeities, kaip tik riboti centrinį procesorių, kad būtų išvengta katastrofiško gedimo. Sumažinus įtampą aukštais dažniais, žymiai sumažėja galia ir šilumos išeiga, todėl sistema tampa vėsesnė ir greitesnė.<br />
<br />
= Iššūkiai =<br />
<br />
Deja, vis sunkiau optimizuoti įprastą nešiojamąjį kompiuterį. Pirma, originalios įrangos gamintojai dažniausiai užrakina [[CPU]] įtampos reguliavimą. Šią problemą galima sušvelninti „atrakinant“ programinės aparatinės įrangos nustatymus, kad puikios programos, tokios kaip [https://www.techpowerup.com/download/techpowerup-throttlestop/ ThrottleStop], galėtų atlikti savo darbą (nebent platforma būtų visiškai užrakinta).<br />
<br />
Tačiau matomos naujos problemos: hipervizorius kaip „[[Microsoft]] [[Hyper-V]]“ dabar naudoja net tokios galutinio vartotojo programos kaip [[WSL2]] („[[Windows]]“ posistemė, skirta [[Linux]]). Kadangi „[[Hypervisor]]“ neleidžia virtualiai mašinai modifikuoti daugumos pagrindinio kompiuterio aparatinės įrangos registrų, tokios programos kaip „ThrottleStop“ arba „[[Intel]] XTU“ negali reguliuoti įtampos.<br />
<br />
Kai programa bando įrašyti į aparatinės įrangos registrą, „[[Hypervisor]]“ sulaiko šį bandymą ir neatlieka tikrojo įrašymo. Teoriškai įmanoma, kad „Hypervisor“ pardavėjas įgyvendina rašymą, tačiau mažai tikėtina. Tai sukūrė naujų kliūčių įtampos reguliavimui ir panašiems aparatinės įrangos pakeitimams.<br />
<br />
Niekas nesukeltų anksčiau minėtų problemų, jei originalios įrangos gamintojai leistų klientams koreguoti programinės įrangos sąrankos nustatymus. Tačiau daugumoje nešiojamųjų kompiuterių yra minimalios konfigūracijos parinktys, todėl savininkas negali koreguoti savo aparatinės įrangos. „PowerMonkey POC“ ketina išspręsti būtent šią problemą.<br />
<br />
= Kaip veikia „PowerMonkey“ ? =<br />
<br />
[[Vaizdas:Powermonkey-efi-boot-process.png]]<br />
<br />
[https://github.com/psyq321/PowerMonkey PowerMonkey] naudoja [[UEFI]] programinės įrangos galimybę vykdyti vadinamąsias „programas“ prieš iškviečiant [[OS]] įkrovos programą. Tuo metu (su sąlyga, kad programinė įranga neužsiblokavo) galima (beveik) pilnai reguliuoti procesoriaus dažnį ir įtampą bei maitinimo valdymo konfigūraciją.<br />
<br />
'''PASTABA:''' „PowerMonkey“ galima visiškai naudoti tik sistemose, naudojančiose [[S0iX]] („[[Connected Standby]]“ / „[[Modern Standby]]“ / „[[S0 Standby]]“) režimus. Sistemos, naudojančios seną [[S3]] miego režimą, grįš į platformoje užkoduotus nustatymus, kai atnaujins [[S3]] miego režimą. Kadangi [[UEFI]] DXE tvarkyklės / programos nėra įkeliamos iš naujo [[S3]] atnaujinimo eigos metu, prieš atnaujinant „[[Hypervisor]]“ negalima taikyti jokių nepaisymų.<br />
<br />
= Dieginas =<br />
<br />
== Reikalavimai ==<br />
<br />
* Windows 10/11<br />
* Įdiegta Linux distribucija su Grub2 boot loaderiu (išjungtas arba įjungtas secureboot, nėra svarbu), asmeniškai naudota Fedora 41<br />
* Visual Studio 2022 su Visual C++ paketu<br />
<br />
== Kompiliavimas ==<br />
<br />
* Užkrovę Windows 10/11 parsisiunčiame ir įdiegiame Visual Studio 2022 su Visual C++ paketu.<br />
* Parsisiunčiame https://github.com/awyl/Build-PowerMonkey į '''C:\Build-PowerMonkey'''<br />
* Pakeičiame '''build.bat''' scriptą į esantį apačioje<br />
* Paleižiame '''X64 Native Tools Command Prompt for VS 2022'''<br />
* Nunaviguojame į '''C:\Build-PowerMonkey''' ''"cd C:\Build-PowerMonkey"''<br />
* Paleidžiame: '''setup.bat'''<br />
* Paredaguojame: '''CONFIGURATION.c''', suvedame visus reikalingus undervolt parametrus (apačioje pateiktas pavyzdys)<br />
* Paleidžiame: '''build.bat'''<br />
* Užmontuojame efi skirsnį per [[cmd]] ('''admin teisėmis''') ''"mountvol X: /s"'', turėtų atsirasti naujas '''X:''' diskas, kurį pasieksite tiktai per ta patį admin teisėmis paleistą cmd<br />
* Sukuriame naują direktoriją ''"mkdir x:\EFI\PowerMonkey"''<br />
* Nukopijuojame sukompiluotą efi failą ''"copy /y C:\Build-PowerMonkey\EFI\Boot\PowerMonkey.efi x:\EFI\PowerMonkey"''<br />
<br />
=== build.bat ===<br />
<br />
<syntaxhighlight lang="batch"><br />
@echo off<br />
<br />
set PYTHON_HOME=%cd%\python<br />
set PYTHONPATH=%cd%\python<br />
set PYTHON_COMMAND=%cd%\python\python.exe<br />
set NASM_PREFIX=%cd%\nasm\<br />
set PATH=%cd%\edk2\BaseTools\bin\win32;%PATH%<br />
<br />
copy /y CONFIGURATION.c edk2\MdeModulePkg\Application\PowerMonkeyApp<br />
cd edk2<br />
call edksetup.bat<br />
call build -m MdeModulePkg/Application/PowerMonkeyApp/PowerMonkey.inf<br />
copy /y Build\MdeModule\RELEASE_VS2019\X64\PowerMonkey.efi ..\EFI\Boot<br />
<br />
cd ..<br />
</syntaxhighlight><br />
<br />
=== CONFIGURATION.c ===<br />
<br />
'''Dėmesio!''' Pavyzdys skirtas tik Core i7-8750H procesoriui.<br />
<br />
<syntaxhighlight lang="c"><br />
#include "Platform.h"<br />
#include "CONFIGURATION.h" // <- enable tracing if PowerMonkey hangs!<br />
UINT8 gPostProgrammingOcLock = 1;<br />
UINT8 gEmergencyExit = 1;<br />
UINT8 gEnableSaferAsm = 1;<br />
UINT8 gDisableFirwmareWDT = 0;<br />
UINT64 gSelfTestMaxRuns = 0; /// DO NOT ENABLE YET (WIP)<br />
UINT8 gPrintPackageConfig = 1;<br />
UINT8 gPrintVFPoints_PostProgram = 1;<br />
VOID ApplyComputerOwnersPolicy(IN PLATFORM* sys)<br />
{<br />
for (UINTN pidx = 0; pidx < sys->PkgCnt; pidx++) { <br />
PACKAGE* pk = sys->packages + pidx;<br />
pk->Program_VF_Overrides[IACORE] = 1; // Enable programming of VF<br />
pk->Program_VF_Overrides[ECORE] = 0; // Enable programming of VF<br />
pk->Program_VF_Overrides[RING] = 1; // Enable programming of VF<br />
pk->Program_VF_Overrides[UNCORE] = 0; // Enable programming of VF<br />
pk->Program_VF_Overrides[GTSLICE] = 0; // Enable programming of VF<br />
pk->Program_VF_Overrides[GTUNSLICE] = 0; // Enable programming of VF<br />
<br />
pk->planes[IACORE].VoltMode =<br />
pk->planes[RING].VoltMode = V_IPOLATIVE; // V_IPOLATIVE = Interpolate<br />
// V_OVERRIDE = Override<br />
pk->planes[IACORE].TargetVolts =<br />
pk->planes[RING].TargetVolts = 0; // in mV (absolute)<br />
<br />
pk->planes[IACORE].OffsetVolts = -150; // in mV<br />
pk->planes[RING].OffsetVolts = -130; // in mV <br />
// (negative = undervolt)<br />
<br />
pk->planes[ECORE].VoltMode = V_IPOLATIVE; // V_IPOLATIVE = Interpolate<br />
// V_OVERRIDE = Override<br />
<br />
pk->planes[ECORE].TargetVolts = 0; // in mV (absolute)<br />
pk->planes[ECORE].OffsetVolts = 0; // in mV (negative = undervolt)<br />
<br />
pk->planes[UNCORE].VoltMode = V_IPOLATIVE; // V_IPOLATIVE = Interpolate<br />
// V_OVERRIDE = Override<br />
<br />
pk->planes[UNCORE].TargetVolts = 0; // in mV (absolute)<br />
pk->planes[UNCORE].OffsetVolts = 0; // in mV (negative = undervolt)<br />
<br />
pk->Program_VF_Points[IACORE] = // 0 - Do not program<br />
pk->Program_VF_Points[RING] = 0; // 1 - Program<br />
// 2 - Print current values <br />
// (2 does not program)<br />
<br />
// Hybrid Architectures (Alder Lake +): E-Cores<br />
<br />
// 1 - Program<br />
pk->Program_VF_Points[ECORE] = 0; // 0 - Do not program<br />
// 2 - Print current values <br />
// (2 does not program)<br />
}<br />
}<br />
</syntaxhighlight><br />
<br />
Konfigūracijos undervolt:<br />
* CPU Core: -150mV<br />
* CPU Cache: -130mV<br />
<br />
<br />
== Pasirašymas ==<br />
<br />
Jeigu savo kompiuteryje turite išjungę secure boot, šį etapą galite praleisti.<br />
Šis etapas reikalauja įdiegtos Linux distribucijos su [https://github.com/hakuna-m/wubiuefi/wiki/MOKManager Mok Manager] ir [https://github.com/rhboot/shim shim loader] kuris įdiegtas kartu su [[grub2]].<br />
<br />
Sukuriame failą '''x509-configuration.ini''' į jį irašome:<br />
<syntaxhighlight lang="text"><br />
[ req ]<br />
default_bits = 4096<br />
distinguished_name = req_distinguished_name<br />
prompt = no<br />
string_mask = utf8only<br />
x509_extensions = myexts<br />
<br />
[ req_distinguished_name ]<br />
O = ojoj<br />
CN = COMPANY ojojoj<br />
emailAddress = ojoj@ojojoj.lt<br />
<br />
[ myexts ]<br />
basicConstraints=critical,CA:FALSE<br />
keyUsage=digitalSignature<br />
subjectKeyIdentifier=hash<br />
authorityKeyIdentifier=keyid<br />
</syntaxhighlight><br />
Generuojame sertifikatus:<br />
openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config x509-configuration.ini -outform DER -out public_key.der -keyout private_key.priv<br />
openssl x509 -in public_key.der -inform DER -outform PEM -out MOK.pem<br />
Uždedame parašą ant '''PowerMonkey.efi'''<br />
sbsign --key private_key.priv --cert MOK.pem /boot/efi/EFI/PowerMonkey/PowerMonkey.efi --output /boot/efi/EFI/PowerMonkey/PowerMonkey.efi-signed<br />
mv /boot/efi/EFI/PowerMonkey/PowerMonkey.efi-signed /boot/efi/EFI/PowerMonkey/PowerMonkey.efi<br />
Importuojame į Mok manager (suvedame slaptažodį kurį prisiminsime vėliau)<br />
mokutil --import public_key.der<br />
Perkrovę kompiuterį spauskite enroll MOK ir suveskite slaptažodį kurį įvedėte prieš tai<br />
<br />
== Krovimas su Grub2 ==<br />
<br />
Redaguojame '''/etc/grub.d/40_custom''' įdedame įrašą:<br />
menuentry "Windows + Power Monkey" {<br />
insmod part_gpt<br />
insmod fat<br />
search --no-floppy --fs-uuid --set=root A4A3-6EB2<br />
chainloader /EFI/PowerMonkey/PowerMonkey.efi<br />
boot<br />
chainloader /EFI/Microsoft/Boot/bootmgfw.efi<br />
boot<br />
}<br />
Reikalui esant jeigu norime nustatyti numatytają įkrovos reikšmę redaguojame failą '''/etc/default/grub''' ir pakeičiame šią eilute:<br />
GRUB_DEFAULT=6<br />
Įgaliname naujus Grub nustatymus:<br />
grub2-mkconfig -o /boot/grub2/grub.cfg<br />
<br />
== Patikrinimas kaip veikia ==<br />
<br />
Prieš tikrinant ant Windows reikia išjungti "virtualization protected booting" poto patikrinus jį vėl įjungti, nes be jo neveiks [[wsl2]]. Paleidžiame cmd administratoriaus teisėmis ir rašome:<br />
bcdedit /set hypervisorlaunchtype off<br />
Perkrauname kompiuterį ir įkrovę paleidžiame [https://www.techpowerup.com/download/techpowerup-throttlestop/ ThrottleStop] paspaudžiame '''FIVR''' ir dešiniame naujai atsidariusio lango kampe esančioje lentelėje turėtume matyti pvz:<br />
<br />
[[Vaizdas:Powerthrottle fivr example.png]]<br />
<br />
Matome jog CPU Core yra -0.1504, tai reiškia jog undervoltas veikia. Dabar galime grąžinti atgal "virtualization protected booting".<br />
bcdedit /set hypervisorlaunchtype auto <br />
<br />
<br />
[[Category:Hardware]]<br />
[[Category:Windows]]<br />
[[Category:Mac OS X]]<br />
{{Template:Distributions}}</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Vaizdas:Powerthrottle_fivr_example.png&diff=9610Vaizdas:Powerthrottle fivr example.png2024-02-21T09:00:03Z<p>\dev\null: </p>
<hr />
<div>n</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Res_iptv&diff=9609Res iptv2024-02-19T09:09:27Z<p>\dev\null: </p>
<hr />
<div>Serijinis numeris yra parašytas ant IPTV BOX'o (dėžutės kurios pagalba žiūrite iptv per TV).<br />
<br />
ARBA<br />
<br />
Pažiūrėję srautą, turim gauti http user agent'o headerį t.y aprašą (tai yra iptv box'o serijinis numeris). Pagal jį ir vyksta visa http ir stream'o autorizacija. Taigi...<br />
<br />
'''192.168.1.99''' - iptv box'o ip<br />
tcpdump -i eth1 -s 0 -A src host 192.168.1.99 and dst port 80<br />
Arba jeigu nežinome tikslaus tvbox ip adreso tinkle, galime daryti taip<br />
tcpdump -i eth1 -s 0 -A dst port 6081 -vvv -X<br />
Gavus kažą panašaus į:<br />
stb_xxxxxxxxxxxx<br />
Naudodami šį gautą serijinį numerį galime užspoofinti user agentą ir gauti visą kanalų sąrašą<br />
curl -A "USER_AGENTAS" -O <nowiki>http://archyvas.res.lt/playlist</nowiki><br />
Žiūrėti kiekvieną kanalą galima su vlc pagal jo m3u8 playlistą. t.y:<br />
./vlc <nowiki>http://cache.res.lt:6081/hls001-live/lrt_tv.m3u8</nowiki> :http-user-agent=USER_AGENTAS<br />
Aišku tai labai nepatogu ir reikia tam pasidaryti grojaraštį:<br />
{{FIXME}}<br />
<br />
cat playlist |grep url_hls|sed -n 's!^.*>\(http[^^]*\)<.*!\1!p'|xargs wget --user-agent="USER_AGENTAS" -O playlistas.m3u<br />
Arba paprasčiau:<br />
cat playlist |grep url_hls|sed -n 's!^.*>\(http[^^]*\)<.*!\1!p' > play.m3u<br />
./vlc play.m3u :http-user-agent=USER_AGENTAS<br />
<br />
PoC<br />
[[Vaizdas:Screenshot at Apr 04 18-07-41.png]]<br />
<br />
== EPG Generavimas ==<br />
<br />
[[php]] scriptas skirtas generuoti [[xml]] [[epg]] (''angl. electronic programme guide'') failus suprantamus daugelių [[iptv]] leistuvų ir media centrų, reikalinga tik pakeisti kintamajį '''$user_agent''' į jūsų box'o.<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
// Tool to generate compatible xml epg list based on RES IPTV json sources<br />
// validation can be made with this tool: https://www.freeformatter.com/xml-validator-xsd.html<br />
// script is very primitive as not error handling are made, please improve it by yourself<br />
$user_agent = "user agentas"; // user agent used for auth with iptv servers<br />
$write_to_xml = 1; // write static 'res-epg.xml' file<br />
$loud = 0; // print messages can be used to load xml directly<br />
$script_dir = dirname(__FILE__);<br />
<br />
function getPlaylist() {<br />
global $user_agent;<br />
$url = "http://archyvas.res.lt/playlist";<br />
<br />
$options = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: en\r\n" .<br />
"User-Agent: $user_agent\r\n"<br />
)<br />
);<br />
$context = stream_context_create($options);<br />
$data = file_get_contents($url, false, $context);<br />
$xml = simplexml_load_string($data) ;<br />
return $xml;<br />
}<br />
<br />
function returnJsonEpg($chanid, $type) {<br />
global $user_agent;<br />
$url = "http://archyvas.res.lt:8080/$chanid/epg/$type.json";<br />
$options = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: en\r\n" .<br />
"User-Agent: $user_agent\r\n"<br />
)<br />
);<br />
$context = stream_context_create($options);<br />
$data = file_get_contents($url, false, $context);<br />
return json_decode($data);<br />
}<br />
<br />
function ReplaceInvalidStr($str) {<br />
$str = str_replace('"', "'", $str);<br />
$str = str_replace('&', "&amp;", $str);<br />
$str = str_replace('<', "&lt;", $str);<br />
$str = str_replace('>', "&gt;", $str);<br />
return $str;<br />
}<br />
<br />
function ConvertJsonProgramme($obj,$chan) {<br />
$starttime = new DateTime("@$obj->start_time");<br />
$stoptime = (clone $starttime)->add(new DateInterval("PT{$obj->duration}S"));<br />
$programme = '<br />
<programme start="'.$starttime->format('YmdHis').' +0200" stop="'.$stoptime->format('YmdHis').' +0200" channel="'.$chan.'"><br />
<title lang="lt">'.ReplaceInvalidStr($obj->name).'</title><br />
<desc lang="lt">'.ReplaceInvalidStr($obj->text).'</desc><br />
</programme>';<br />
return $programme;<br />
}<br />
<br />
function start() {<br />
global $loud, $write_to_xml, $script_dir;<br />
$xml = getPlaylist();<br />
$channels = $xml->xpath('//feed');<br />
if ($loud > 0) {<br />
header("Content-type: text/xml");<br />
echo '<?xml version="1.0" encoding="UTF-8"?>';<br />
echo '<tv generator-info-name="zjbs generator" generator-info-url="http://google.lt">';<br />
}<br />
if ($write_to_xml > 0) {<br />
$f=fopen($script_dir.'/res-epg.xml','w');<br />
fwrite($f,'<?xml version="1.0" encoding="UTF-8"?>');<br />
fwrite($f,'<tv generator-info-name="zjbs generator" generator-info-url="http://google.lt">');<br />
} <br />
// generate channels<br />
foreach ($channels as $chan) {<br />
if ($loud > 0) {<br />
echo '<br />
<channel id="'.$chan->name.'"><br />
<display-name lang="lt">'.$chan->name.'</display-name><br />
<url>http://google.lt</url><br />
</channel>';<br />
}<br />
if ($write_to_xml > 0) {<br />
fwrite($f,'<br />
<channel id="'.$chan->name.'"><br />
<display-name lang="lt">'.$chan->name.'</display-name><br />
<url>http://google.lt</url><br />
</channel>');<br />
}<br />
}<br />
// generate simple epg for each channel for one day<br />
foreach ($channels as $chan) {<br />
$epg_programmes = returnJsonEpg($chan->attributes()->id,"day");<br />
foreach ($epg_programmes as $programme) {<br />
$converted = ConvertJsonProgramme($programme,$chan->name);<br />
if ($loud > 0) {<br />
print $converted;<br />
}<br />
if ($write_to_xml > 0) {<br />
fwrite($f,$converted);<br />
} <br />
}<br />
}<br />
if ($loud > 0) echo '</tv>';<br />
if ($write_to_xml > 0) {<br />
fwrite($f,'</tv>');<br />
fclose($f);<br />
}<br />
}<br />
<br />
start();<br />
<br />
?><br />
</syntaxhighlight><br />
<br />
<br />
Paleisti '''php epg_gen.php''', bus sugeneruotas '''res_epg.xml''' failas kurį galima naudoti bet kuriame iptv leistuve.. Patartina leisti kas 6val arba dar rečiau ir pahostinti kur nors leistuvui prieinamoje vietoje..<br />
<br />
[[Category:RES]]<br />
[[Category:Tinklas]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=S0iX&diff=9608S0iX2024-02-19T09:06:30Z<p>\dev\null: Nukreipiama į S0 Standby</p>
<hr />
<div>#REDIRECT [[S0 Standby]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Connected_Standby&diff=9607Connected Standby2024-02-19T09:06:23Z<p>\dev\null: Nukreipiama į S0 Standby</p>
<hr />
<div>#REDIRECT [[S0 Standby]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Modern_Standby&diff=9606Modern Standby2024-02-19T09:06:03Z<p>\dev\null: Nukreipiama į S0 Standby</p>
<hr />
<div>#REDIRECT [[S0 Standby]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=S0_Standby&diff=9605S0 Standby2024-02-19T09:05:27Z<p>\dev\null: </p>
<hr />
<div>'''S0''' budėjimo režimas, taip pat žinomas kaip šiuolaikinis budėjimo režimas, yra mažos galios darbo būsenos tuščiosios eigos režimas. Šiuo režimu sistema iš dalies veikia ir gali būti atnaujinta, kai tik yra pasiekiamas tinklas. Sistema taip pat gali pabusti, kai reikia atlikti veiksmus realiuoju laiku, pavyzdžiui, prižiūrėti OS. '''S0 Standby''' yra visiškai veikianti būsena, parengta ir galinti atlikti darbą. Tai leidžia sistemai likti prijungtai prie tinklo, kai ji veikia mažos galios režimu<br />
<br />
[[Category:Hardware]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=S0_Standby&diff=9604S0 Standby2024-02-19T09:05:12Z<p>\dev\null: Naujas puslapis: S0 budėjimo režimas, taip pat žinomas kaip šiuolaikinis budėjimo režimas, yra mažos galios darbo būsenos tuščiosios eigos režimas. Šiuo režimu sistema iš dalies vei...</p>
<hr />
<div>S0 budėjimo režimas, taip pat žinomas kaip šiuolaikinis budėjimo režimas, yra mažos galios darbo būsenos tuščiosios eigos režimas. Šiuo režimu sistema iš dalies veikia ir gali būti atnaujinta, kai tik yra pasiekiamas tinklas. Sistema taip pat gali pabusti, kai reikia atlikti veiksmus realiuoju laiku, pavyzdžiui, prižiūrėti OS. S0 Standby yra visiškai veikianti būsena, parengta ir galinti atlikti darbą. Tai leidžia sistemai likti prijungtai prie tinklo, kai ji veikia mažos galios režimu<br />
<br />
[[Category:Hardware]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=PowerMonkey&diff=9603PowerMonkey2024-02-19T09:02:51Z<p>\dev\null: </p>
<hr />
<div><br />
[[Vaizdas:Aborting-powermonkey.png]]<br />
<br />
'''Sumažinkite procesoriaus energijos eikvojimą ir padidinkite našumą – ekologiškiau ir paprasčiau'''<br />
<br />
Iki 2020-ųjų visi žinojo, kas yra „overclocking“: sistemos priartinimas iki jos ribų didinant jos darbo dažnį, įtampą arba abu. Šis procesas buvo labai kontraversiškas, tačiau jis buvo tobulinamas, net kai kurios sistemos buvo „gamykliškai paspartintos“.<br />
<br />
Tačiau daug mažiau žmonių yra girdėję apie analogą: "undervoltage". Įtampos mažinimas yra tam tikra prasme priešingas procesas nei didinimas: sumažinus procesoriaus įtampą, CPU sunaudoja daug mažiau energijos ir generuoja daug mažiau šilumos.<br />
<br />
Įdomu tai, kad tai padarius termiškai ribotai sistemai, tokiai kaip nešiojamasis kompiuteris arba SFF (mažos formos) kompiuteris, sumažins šilumą ir pagerins našumą! Magija? Ne, fizika! Nešiojamojo kompiuterio aušinimo sistema gali pašalinti tik dalį šilumos, o kai to neužtenka, nebelieka kitos išeities, kaip tik riboti centrinį procesorių, kad būtų išvengta katastrofiško gedimo. Sumažinus įtampą aukštais dažniais, žymiai sumažėja galia ir šilumos išeiga, todėl sistema tampa vėsesnė ir greitesnė.<br />
<br />
= Iššūkiai =<br />
<br />
Deja, vis sunkiau optimizuoti įprastą nešiojamąjį kompiuterį. Pirma, originalios įrangos gamintojai dažniausiai užrakina [[CPU]] įtampos reguliavimą. Šią problemą galima sušvelninti „atrakinant“ programinės aparatinės įrangos nustatymus, kad puikios programos, tokios kaip [https://www.techpowerup.com/download/techpowerup-throttlestop/ ThrottleStop], galėtų atlikti savo darbą (nebent platforma būtų visiškai užrakinta).<br />
<br />
Tačiau matomos naujos problemos: hipervizorius kaip „[[Microsoft]] [[Hyper-V]]“ dabar naudoja net tokios galutinio vartotojo programos kaip [[WSL2]] („[[Windows]]“ posistemė, skirta [[Linux]]). Kadangi „[[Hypervisor]]“ neleidžia virtualiai mašinai modifikuoti daugumos pagrindinio kompiuterio aparatinės įrangos registrų, tokios programos kaip „ThrottleStop“ arba „[[Intel]] XTU“ negali reguliuoti įtampos.<br />
<br />
Kai programa bando įrašyti į aparatinės įrangos registrą, „[[Hypervisor]]“ sulaiko šį bandymą ir neatlieka tikrojo įrašymo. Teoriškai įmanoma, kad „Hypervisor“ pardavėjas įgyvendina rašymą, tačiau mažai tikėtina. Tai sukūrė naujų kliūčių įtampos reguliavimui ir panašiems aparatinės įrangos pakeitimams.<br />
<br />
Niekas nesukeltų anksčiau minėtų problemų, jei originalios įrangos gamintojai leistų klientams koreguoti programinės įrangos sąrankos nustatymus. Tačiau daugumoje nešiojamųjų kompiuterių yra minimalios konfigūracijos parinktys, todėl savininkas negali koreguoti savo aparatinės įrangos. „PowerMonkey POC“ ketina išspręsti būtent šią problemą.<br />
<br />
= Kaip veikia „PowerMonkey“ ? =<br />
<br />
[[Vaizdas:Powermonkey-efi-boot-process.png]]<br />
<br />
[https://github.com/psyq321/PowerMonkey PowerMonkey] naudoja [[UEFI]] programinės įrangos galimybę vykdyti vadinamąsias „programas“ prieš iškviečiant [[OS]] įkrovos programą. Tuo metu (su sąlyga, kad programinė įranga neužsiblokavo) galima (beveik) pilnai reguliuoti procesoriaus dažnį ir įtampą bei maitinimo valdymo konfigūraciją.<br />
<br />
'''PASTABA:''' „PowerMonkey“ galima visiškai naudoti tik sistemose, naudojančiose [[S0iX]] („[[Connected Standby]]“ / „[[Modern Standby]]“ / „[[S0 Standby]]“) režimus. Sistemos, naudojančios seną [[S3]] miego režimą, grįš į platformoje užkoduotus nustatymus, kai atnaujins [[S3]] miego režimą. Kadangi [[UEFI]] DXE tvarkyklės / programos nėra įkeliamos iš naujo [[S3]] atnaujinimo eigos metu, prieš atnaujinant „[[Hypervisor]]“ negalima taikyti jokių nepaisymų.<br />
<br />
= Dieginas =<br />
<br />
== Reikalavimai ==<br />
<br />
* Windows 10/11<br />
* Įdiegta Linux distribucija su Grub2 boot loaderiu (išjungtas arba įjungtas secureboot, nėra svarbu), asmeniškai naudota Fedora 41<br />
* Visual Studio 2022 su Visual C++ paketu<br />
<br />
== Kompiliavimas ==<br />
<br />
* Užkrovę Windows 10/11 parsisiunčiame ir įdiegiame Visual Studio 2022 su Visual C++ paketu.<br />
* Parsisiunčiame https://github.com/awyl/Build-PowerMonkey į '''C:\Build-PowerMonkey'''<br />
* Pakeičiame '''build.bat''' scriptą į esantį apačioje<br />
* Paleižiame '''X64 Native Tools Command Prompt for VS 2022'''<br />
* Nunaviguojame į '''C:\Build-PowerMonkey''' ''"cd C:\Build-PowerMonkey"''<br />
* Paleidžiame: '''setup.bat'''<br />
* Paredaguojame: '''CONFIGURATION.c''', suvedame visus reikalingus undervolt parametrus (apačioje pateiktas pavyzdys)<br />
* Paleidžiame: '''build.bat'''<br />
* Užmontuojame efi skirsnį per [[cmd]] ('''admin teisėmis''') ''"mountvol X: /s"'', turėtų atsirasti naujas '''X:''' diskas, kurį pasieksite tiktai per ta patį admin teisėmis paleistą cmd<br />
* Sukuriame naują direktoriją ''"mkdir x:\EFI\PowerMonkey"''<br />
* Nukopijuojame sukompiluotą efi failą ''"copy /y C:\Build-PowerMonkey\EFI\Boot\PowerMonkey.efi x:\EFI\PowerMonkey"''<br />
<br />
=== build.bat ===<br />
<br />
<syntaxhighlight lang="batch"><br />
@echo off<br />
<br />
set PYTHON_HOME=%cd%\python<br />
set PYTHONPATH=%cd%\python<br />
set PYTHON_COMMAND=%cd%\python\python.exe<br />
set NASM_PREFIX=%cd%\nasm\<br />
set PATH=%cd%\edk2\BaseTools\bin\win32;%PATH%<br />
<br />
copy /y CONFIGURATION.c edk2\MdeModulePkg\Application\PowerMonkeyApp<br />
cd edk2<br />
call edksetup.bat<br />
call build -m MdeModulePkg/Application/PowerMonkeyApp/PowerMonkey.inf<br />
copy /y Build\MdeModule\RELEASE_VS2019\X64\PowerMonkey.efi ..\EFI\Boot<br />
<br />
cd ..<br />
</syntaxhighlight><br />
<br />
=== CONFIGURATION.c ===<br />
<br />
'''Dėmesio!''' Pavyzdys skirtas tik Core i7-8750H procesoriui.<br />
<br />
<syntaxhighlight lang="c"><br />
#include "Platform.h"<br />
#include "CONFIGURATION.h" // <- enable tracing if PowerMonkey hangs!<br />
UINT8 gPostProgrammingOcLock = 1;<br />
UINT8 gEmergencyExit = 1;<br />
UINT8 gEnableSaferAsm = 1;<br />
UINT8 gDisableFirwmareWDT = 0;<br />
UINT64 gSelfTestMaxRuns = 0; /// DO NOT ENABLE YET (WIP)<br />
UINT8 gPrintPackageConfig = 1;<br />
UINT8 gPrintVFPoints_PostProgram = 1;<br />
VOID ApplyComputerOwnersPolicy(IN PLATFORM* sys)<br />
{<br />
for (UINTN pidx = 0; pidx < sys->PkgCnt; pidx++) { <br />
PACKAGE* pk = sys->packages + pidx;<br />
pk->Program_VF_Overrides[IACORE] = 1; // Enable programming of VF<br />
pk->Program_VF_Overrides[ECORE] = 0; // Enable programming of VF<br />
pk->Program_VF_Overrides[RING] = 1; // Enable programming of VF<br />
pk->Program_VF_Overrides[UNCORE] = 0; // Enable programming of VF<br />
pk->Program_VF_Overrides[GTSLICE] = 0; // Enable programming of VF<br />
pk->Program_VF_Overrides[GTUNSLICE] = 0; // Enable programming of VF<br />
<br />
pk->planes[IACORE].VoltMode =<br />
pk->planes[RING].VoltMode = V_IPOLATIVE; // V_IPOLATIVE = Interpolate<br />
// V_OVERRIDE = Override<br />
pk->planes[IACORE].TargetVolts =<br />
pk->planes[RING].TargetVolts = 0; // in mV (absolute)<br />
<br />
pk->planes[IACORE].OffsetVolts = -150; // in mV<br />
pk->planes[RING].OffsetVolts = -130; // in mV <br />
// (negative = undervolt)<br />
<br />
pk->planes[ECORE].VoltMode = V_IPOLATIVE; // V_IPOLATIVE = Interpolate<br />
// V_OVERRIDE = Override<br />
<br />
pk->planes[ECORE].TargetVolts = 0; // in mV (absolute)<br />
pk->planes[ECORE].OffsetVolts = 0; // in mV (negative = undervolt)<br />
<br />
pk->planes[UNCORE].VoltMode = V_IPOLATIVE; // V_IPOLATIVE = Interpolate<br />
// V_OVERRIDE = Override<br />
<br />
pk->planes[UNCORE].TargetVolts = 0; // in mV (absolute)<br />
pk->planes[UNCORE].OffsetVolts = 0; // in mV (negative = undervolt)<br />
<br />
pk->Program_VF_Points[IACORE] = // 0 - Do not program<br />
pk->Program_VF_Points[RING] = 0; // 1 - Program<br />
// 2 - Print current values <br />
// (2 does not program)<br />
<br />
// Hybrid Architectures (Alder Lake +): E-Cores<br />
<br />
// 1 - Program<br />
pk->Program_VF_Points[ECORE] = 0; // 0 - Do not program<br />
// 2 - Print current values <br />
// (2 does not program)<br />
}<br />
}<br />
</syntaxhighlight><br />
<br />
Konfigūracijos undervolt:<br />
* CPU Core: -150mV<br />
* CPU Cache: -130mV<br />
<br />
<br />
== Pasirašymas ==<br />
<br />
Jeigu savo kompiuteryje turite išjungę secure boot, šį etapą galite praleisti.<br />
Šis etapas reikalauja įdiegtos Linux distribucijos su [https://github.com/hakuna-m/wubiuefi/wiki/MOKManager Mok Manager] ir [https://github.com/rhboot/shim shim loader] kuris įdiegtas kartu su [[grub2]].<br />
<br />
Sukuriame failą '''x509-configuration.ini''' į jį irašome:<br />
<syntaxhighlight lang="text"><br />
[ req ]<br />
default_bits = 4096<br />
distinguished_name = req_distinguished_name<br />
prompt = no<br />
string_mask = utf8only<br />
x509_extensions = myexts<br />
<br />
[ req_distinguished_name ]<br />
O = ojoj<br />
CN = COMPANY ojojoj<br />
emailAddress = ojoj@ojojoj.lt<br />
<br />
[ myexts ]<br />
basicConstraints=critical,CA:FALSE<br />
keyUsage=digitalSignature<br />
subjectKeyIdentifier=hash<br />
authorityKeyIdentifier=keyid<br />
</syntaxhighlight><br />
Generuojame sertifikatus:<br />
openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config x509-configuration.ini -outform DER -out public_key.der -keyout private_key.priv<br />
openssl x509 -in public_key.der -inform DER -outform PEM -out MOK.pem<br />
Uždedame parašą ant '''PowerMonkey.efi'''<br />
sbsign --key private_key.priv --cert MOK.pem /boot/efi/EFI/PowerMonkey/PowerMonkey.efi --output /boot/efi/EFI/PowerMonkey/PowerMonkey.efi-signed<br />
mv /boot/efi/EFI/PowerMonkey/PowerMonkey.efi-signed /boot/efi/EFI/PowerMonkey/PowerMonkey.efi<br />
Importuojame į Mok manager (suvedame slaptažodį kurį prisiminsime vėliau)<br />
mokutil --import public_key.der<br />
Perkrovę kompiuterį spauskite enroll MOK ir suveskite slaptažodį kurį įvedėte prieš tai<br />
<br />
== Krovimas su Grub2 ==<br />
<br />
Redaguojame '''/etc/grub.d/40_custom''' įdedame įrašą:<br />
menuentry "Windows + Power Monkey" {<br />
insmod part_gpt<br />
insmod fat<br />
search --no-floppy --fs-uuid --set=root A4A3-6EB2<br />
chainloader /EFI/PowerMonkey/PowerMonkey.efi<br />
boot<br />
chainloader /EFI/Microsoft/Boot/bootmgfw.efi<br />
boot<br />
}<br />
Reikalui esant jeigu norime nustatyti numatytają įkrovos reikšmę redaguojame failą '''/etc/default/grub''' ir pakeičiame šią eilute:<br />
GRUB_DEFAULT=6<br />
Įgaliname naujus Grub nustatymus:<br />
grub2-mkconfig -o /boot/grub2/grub.cfg<br />
<br />
<br />
[[Category:Hardware]]<br />
[[Category:Windows]]<br />
[[Category:Mac OS X]]<br />
{{Template:Distributions}}</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Vaizdas:Aborting-powermonkey.png&diff=9602Vaizdas:Aborting-powermonkey.png2024-02-19T09:01:56Z<p>\dev\null: </p>
<hr />
<div>n</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Vaizdas:Powermonkey-efi-boot-process.png&diff=9601Vaizdas:Powermonkey-efi-boot-process.png2024-02-19T09:01:15Z<p>\dev\null: </p>
<hr />
<div>n</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=PowerMonkey&diff=9600PowerMonkey2024-02-19T08:56:00Z<p>\dev\null: </p>
<hr />
<div>'''Sumažinkite procesoriaus energijos eikvojimą ir padidinkite našumą – ekologiškiau ir paprasčiau'''<br />
<br />
Iki 2020-ųjų visi žinojo, kas yra „overclocking“: sistemos priartinimas iki jos ribų didinant jos darbo dažnį, įtampą arba abu. Šis procesas buvo labai kontraversiškas, tačiau jis buvo tobulinamas, net kai kurios sistemos buvo „gamykliškai paspartintos“.<br />
<br />
Tačiau daug mažiau žmonių yra girdėję apie analogą: "undervoltage". Įtampos mažinimas yra tam tikra prasme priešingas procesas nei didinimas: sumažinus procesoriaus įtampą, CPU sunaudoja daug mažiau energijos ir generuoja daug mažiau šilumos.<br />
<br />
Įdomu tai, kad tai padarius termiškai ribotai sistemai, tokiai kaip nešiojamasis kompiuteris arba SFF (mažos formos) kompiuteris, sumažins šilumą ir pagerins našumą! Magija? Ne, fizika! Nešiojamojo kompiuterio aušinimo sistema gali pašalinti tik dalį šilumos, o kai to neužtenka, nebelieka kitos išeities, kaip tik riboti centrinį procesorių, kad būtų išvengta katastrofiško gedimo. Sumažinus įtampą aukštais dažniais, žymiai sumažėja galia ir šilumos išeiga, todėl sistema tampa vėsesnė ir greitesnė.<br />
<br />
= Iššūkiai =<br />
<br />
Deja, vis sunkiau optimizuoti įprastą nešiojamąjį kompiuterį. Pirma, originalios įrangos gamintojai dažniausiai užrakina [[CPU]] įtampos reguliavimą. Šią problemą galima sušvelninti „atrakinant“ programinės aparatinės įrangos nustatymus, kad puikios programos, tokios kaip [https://www.techpowerup.com/download/techpowerup-throttlestop/ ThrottleStop], galėtų atlikti savo darbą (nebent platforma būtų visiškai užrakinta).<br />
<br />
Tačiau matomos naujos problemos: hipervizorius kaip „[[Microsoft]] [[Hyper-V]]“ dabar naudoja net tokios galutinio vartotojo programos kaip [[WSL2]] („[[Windows]]“ posistemė, skirta [[Linux]]). Kadangi „[[Hypervisor]]“ neleidžia virtualiai mašinai modifikuoti daugumos pagrindinio kompiuterio aparatinės įrangos registrų, tokios programos kaip „ThrottleStop“ arba „[[Intel]] XTU“ negali reguliuoti įtampos.<br />
<br />
Kai programa bando įrašyti į aparatinės įrangos registrą, „[[Hypervisor]]“ sulaiko šį bandymą ir neatlieka tikrojo įrašymo. Teoriškai įmanoma, kad „Hypervisor“ pardavėjas įgyvendina rašymą, tačiau mažai tikėtina. Tai sukūrė naujų kliūčių įtampos reguliavimui ir panašiems aparatinės įrangos pakeitimams.<br />
<br />
Niekas nesukeltų anksčiau minėtų problemų, jei originalios įrangos gamintojai leistų klientams koreguoti programinės įrangos sąrankos nustatymus. Tačiau daugumoje nešiojamųjų kompiuterių yra minimalios konfigūracijos parinktys, todėl savininkas negali koreguoti savo aparatinės įrangos. „PowerMonkey POC“ ketina išspręsti būtent šią problemą.<br />
<br />
= Kaip veikia „PowerMonkey“ ? =<br />
<br />
PowerMonkey naudoja [[UEFI]] programinės įrangos galimybę vykdyti vadinamąsias „programas“ prieš iškviečiant [[OS]] įkrovos programą. Tuo metu (su sąlyga, kad programinė įranga neužsiblokavo) galima (beveik) pilnai reguliuoti procesoriaus dažnį ir įtampą bei maitinimo valdymo konfigūraciją.<br />
<br />
'''PASTABA:''' „PowerMonkey“ galima visiškai naudoti tik sistemose, naudojančiose [[S0iX]] („[[Connected Standby]]“ / „[[Modern Standby]]“ / „[[S0 Standby]]“) režimus. Sistemos, naudojančios seną [[S3]] miego režimą, grįš į platformoje užkoduotus nustatymus, kai atnaujins [[S3]] miego režimą. Kadangi [[UEFI]] DXE tvarkyklės / programos nėra įkeliamos iš naujo [[S3]] atnaujinimo eigos metu, prieš atnaujinant „[[Hypervisor]]“ negalima taikyti jokių nepaisymų.<br />
<br />
= Dieginas =<br />
<br />
== Reikalavimai ==<br />
<br />
* Windows 10/11<br />
* Įdiegta Linux distribucija su Grub2 boot loaderiu (išjungtas arba įjungtas secureboot, nėra svarbu), asmeniškai naudota Fedora 41<br />
* Visual Studio 2022 su Visual C++ paketu<br />
<br />
== Kompiliavimas ==<br />
<br />
* Užkrovę Windows 10/11 parsisiunčiame ir įdiegiame Visual Studio 2022 su Visual C++ paketu.<br />
* Parsisiunčiame https://github.com/awyl/Build-PowerMonkey į '''C:\Build-PowerMonkey'''<br />
* Pakeičiame '''build.bat''' scriptą į esantį apačioje<br />
* Paleižiame '''X64 Native Tools Command Prompt for VS 2022'''<br />
* Nunaviguojame į '''C:\Build-PowerMonkey''' ''"cd C:\Build-PowerMonkey"''<br />
* Paleidžiame: '''setup.bat'''<br />
* Paredaguojame: '''CONFIGURATION.c''', suvedame visus reikalingus undervolt parametrus (apačioje pateiktas pavyzdys)<br />
* Paleidžiame: '''build.bat'''<br />
* Užmontuojame efi skirsnį per [[cmd]] ('''admin teisėmis''') ''"mountvol X: /s"'', turėtų atsirasti naujas '''X:''' diskas, kurį pasieksite tiktai per ta patį admin teisėmis paleistą cmd<br />
* Sukuriame naują direktoriją ''"mkdir x:\EFI\PowerMonkey"''<br />
* Nukopijuojame sukompiluotą efi failą ''"copy /y C:\Build-PowerMonkey\EFI\Boot\PowerMonkey.efi x:\EFI\PowerMonkey"''<br />
<br />
=== build.bat ===<br />
<br />
<syntaxhighlight lang="batch"><br />
@echo off<br />
<br />
set PYTHON_HOME=%cd%\python<br />
set PYTHONPATH=%cd%\python<br />
set PYTHON_COMMAND=%cd%\python\python.exe<br />
set NASM_PREFIX=%cd%\nasm\<br />
set PATH=%cd%\edk2\BaseTools\bin\win32;%PATH%<br />
<br />
copy /y CONFIGURATION.c edk2\MdeModulePkg\Application\PowerMonkeyApp<br />
cd edk2<br />
call edksetup.bat<br />
call build -m MdeModulePkg/Application/PowerMonkeyApp/PowerMonkey.inf<br />
copy /y Build\MdeModule\RELEASE_VS2019\X64\PowerMonkey.efi ..\EFI\Boot<br />
<br />
cd ..<br />
</syntaxhighlight><br />
<br />
=== CONFIGURATION.c ===<br />
<br />
'''Dėmesio!''' Pavyzdys skirtas tik Core i7-8750H procesoriui.<br />
<br />
<syntaxhighlight lang="c"><br />
#include "Platform.h"<br />
#include "CONFIGURATION.h" // <- enable tracing if PowerMonkey hangs!<br />
UINT8 gPostProgrammingOcLock = 1;<br />
UINT8 gEmergencyExit = 1;<br />
UINT8 gEnableSaferAsm = 1;<br />
UINT8 gDisableFirwmareWDT = 0;<br />
UINT64 gSelfTestMaxRuns = 0; /// DO NOT ENABLE YET (WIP)<br />
UINT8 gPrintPackageConfig = 1;<br />
UINT8 gPrintVFPoints_PostProgram = 1;<br />
VOID ApplyComputerOwnersPolicy(IN PLATFORM* sys)<br />
{<br />
for (UINTN pidx = 0; pidx < sys->PkgCnt; pidx++) { <br />
PACKAGE* pk = sys->packages + pidx;<br />
pk->Program_VF_Overrides[IACORE] = 1; // Enable programming of VF<br />
pk->Program_VF_Overrides[ECORE] = 0; // Enable programming of VF<br />
pk->Program_VF_Overrides[RING] = 1; // Enable programming of VF<br />
pk->Program_VF_Overrides[UNCORE] = 0; // Enable programming of VF<br />
pk->Program_VF_Overrides[GTSLICE] = 0; // Enable programming of VF<br />
pk->Program_VF_Overrides[GTUNSLICE] = 0; // Enable programming of VF<br />
<br />
pk->planes[IACORE].VoltMode =<br />
pk->planes[RING].VoltMode = V_IPOLATIVE; // V_IPOLATIVE = Interpolate<br />
// V_OVERRIDE = Override<br />
pk->planes[IACORE].TargetVolts =<br />
pk->planes[RING].TargetVolts = 0; // in mV (absolute)<br />
<br />
pk->planes[IACORE].OffsetVolts = -150; // in mV<br />
pk->planes[RING].OffsetVolts = -130; // in mV <br />
// (negative = undervolt)<br />
<br />
pk->planes[ECORE].VoltMode = V_IPOLATIVE; // V_IPOLATIVE = Interpolate<br />
// V_OVERRIDE = Override<br />
<br />
pk->planes[ECORE].TargetVolts = 0; // in mV (absolute)<br />
pk->planes[ECORE].OffsetVolts = 0; // in mV (negative = undervolt)<br />
<br />
pk->planes[UNCORE].VoltMode = V_IPOLATIVE; // V_IPOLATIVE = Interpolate<br />
// V_OVERRIDE = Override<br />
<br />
pk->planes[UNCORE].TargetVolts = 0; // in mV (absolute)<br />
pk->planes[UNCORE].OffsetVolts = 0; // in mV (negative = undervolt)<br />
<br />
pk->Program_VF_Points[IACORE] = // 0 - Do not program<br />
pk->Program_VF_Points[RING] = 0; // 1 - Program<br />
// 2 - Print current values <br />
// (2 does not program)<br />
<br />
// Hybrid Architectures (Alder Lake +): E-Cores<br />
<br />
// 1 - Program<br />
pk->Program_VF_Points[ECORE] = 0; // 0 - Do not program<br />
// 2 - Print current values <br />
// (2 does not program)<br />
}<br />
}<br />
</syntaxhighlight><br />
<br />
Konfigūracijos undervolt:<br />
* CPU Core: -150mV<br />
* CPU Cache: -130mV<br />
<br />
<br />
== Pasirašymas ==<br />
<br />
Jeigu savo kompiuteryje turite išjungę secure boot, šį etapą galite praleisti.<br />
Šis etapas reikalauja įdiegtos Linux distribucijos su [https://github.com/hakuna-m/wubiuefi/wiki/MOKManager Mok Manager] ir [https://github.com/rhboot/shim shim loader] kuris įdiegtas kartu su [[grub2]].<br />
<br />
Sukuriame failą '''x509-configuration.ini''' į jį irašome:<br />
<syntaxhighlight lang="text"><br />
[ req ]<br />
default_bits = 4096<br />
distinguished_name = req_distinguished_name<br />
prompt = no<br />
string_mask = utf8only<br />
x509_extensions = myexts<br />
<br />
[ req_distinguished_name ]<br />
O = ojoj<br />
CN = COMPANY ojojoj<br />
emailAddress = ojoj@ojojoj.lt<br />
<br />
[ myexts ]<br />
basicConstraints=critical,CA:FALSE<br />
keyUsage=digitalSignature<br />
subjectKeyIdentifier=hash<br />
authorityKeyIdentifier=keyid<br />
</syntaxhighlight><br />
Generuojame sertifikatus:<br />
openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config x509-configuration.ini -outform DER -out public_key.der -keyout private_key.priv<br />
openssl x509 -in public_key.der -inform DER -outform PEM -out MOK.pem<br />
Uždedame parašą ant '''PowerMonkey.efi'''<br />
sbsign --key private_key.priv --cert MOK.pem /boot/efi/EFI/PowerMonkey/PowerMonkey.efi --output /boot/efi/EFI/PowerMonkey/PowerMonkey.efi-signed<br />
mv /boot/efi/EFI/PowerMonkey/PowerMonkey.efi-signed /boot/efi/EFI/PowerMonkey/PowerMonkey.efi<br />
Importuojame į Mok manager (suvedame slaptažodį kurį prisiminsime vėliau)<br />
mokutil --import public_key.der<br />
Perkrovę kompiuterį spauskite enroll MOK ir suveskite slaptažodį kurį įvedėte prieš tai<br />
<br />
== Krovimas su Grub2 ==<br />
<br />
Redaguojame '''/etc/grub.d/40_custom''' įdedame įrašą:<br />
menuentry "Windows + Power Monkey" {<br />
insmod part_gpt<br />
insmod fat<br />
search --no-floppy --fs-uuid --set=root A4A3-6EB2<br />
chainloader /EFI/PowerMonkey/PowerMonkey.efi<br />
boot<br />
chainloader /EFI/Microsoft/Boot/bootmgfw.efi<br />
boot<br />
}<br />
Reikalui esant jeigu norime nustatyti numatytają įkrovos reikšmę redaguojame failą /etc/default/grub ir pakeičiame šią eilute:<br />
GRUB_DEFAULT=6<br />
Įgaliname naujus Grub nustatymus:<br />
grub2-mkconfig -o /boot/grub2/grub.cfg<br />
<br />
<br />
[[Category:Hardware]]<br />
[[Category:Windows]]<br />
[[Category:Mac OS X]]<br />
{{Template:Distributions}}</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=PowerMonkey&diff=9599PowerMonkey2024-02-19T08:24:37Z<p>\dev\null: </p>
<hr />
<div>'''Sumažinkite procesoriaus energijos eikvojimą ir padidinkite našumą – ekologiškiau ir paprasčiau'''<br />
<br />
Iki 2020-ųjų visi žinojo, kas yra „overclocking“: sistemos priartinimas iki jos ribų didinant jos darbo dažnį, įtampą arba abu. Šis procesas buvo labai kontraversiškas, tačiau jis buvo tobulinamas, net kai kurios sistemos buvo „gamykliškai paspartintos“.<br />
<br />
Tačiau daug mažiau žmonių yra girdėję apie analogą: "undervoltage". Įtampos mažinimas yra tam tikra prasme priešingas procesas nei didinimas: sumažinus procesoriaus įtampą, CPU sunaudoja daug mažiau energijos ir generuoja daug mažiau šilumos.<br />
<br />
Įdomu tai, kad tai padarius termiškai ribotai sistemai, tokiai kaip nešiojamasis kompiuteris arba SFF (mažos formos) kompiuteris, sumažins šilumą ir pagerins našumą! Magija? Ne, fizika! Nešiojamojo kompiuterio aušinimo sistema gali pašalinti tik dalį šilumos, o kai to neužtenka, nebelieka kitos išeities, kaip tik riboti centrinį procesorių, kad būtų išvengta katastrofiško gedimo. Sumažinus įtampą aukštais dažniais, žymiai sumažėja galia ir šilumos išeiga, todėl sistema tampa vėsesnė ir greitesnė.<br />
<br />
= Iššūkiai =<br />
<br />
Deja, vis sunkiau optimizuoti įprastą nešiojamąjį kompiuterį. Pirma, originalios įrangos gamintojai dažniausiai užrakina [[CPU]] įtampos reguliavimą. Šią problemą galima sušvelninti „atrakinant“ programinės aparatinės įrangos nustatymus, kad puikios programos, tokios kaip [https://www.techpowerup.com/download/techpowerup-throttlestop/ ThrottleStop], galėtų atlikti savo darbą (nebent platforma būtų visiškai užrakinta).<br />
<br />
Tačiau matomos naujos problemos: hipervizorius kaip „[[Microsoft]] [[Hyper-V]]“ dabar naudoja net tokios galutinio vartotojo programos kaip [[WSL2]] („[[Windows]]“ posistemė, skirta [[Linux]]). Kadangi „[[Hypervisor]]“ neleidžia virtualiai mašinai modifikuoti daugumos pagrindinio kompiuterio aparatinės įrangos registrų, tokios programos kaip „ThrottleStop“ arba „[[Intel]] XTU“ negali reguliuoti įtampos.<br />
<br />
Kai programa bando įrašyti į aparatinės įrangos registrą, „[[Hypervisor]]“ sulaiko šį bandymą ir neatlieka tikrojo įrašymo. Teoriškai įmanoma, kad „Hypervisor“ pardavėjas įgyvendina rašymą, tačiau mažai tikėtina. Tai sukūrė naujų kliūčių įtampos reguliavimui ir panašiems aparatinės įrangos pakeitimams.<br />
<br />
Niekas nesukeltų anksčiau minėtų problemų, jei originalios įrangos gamintojai leistų klientams koreguoti programinės įrangos sąrankos nustatymus. Tačiau daugumoje nešiojamųjų kompiuterių yra minimalios konfigūracijos parinktys, todėl savininkas negali koreguoti savo aparatinės įrangos. „PowerMonkey POC“ ketina išspręsti būtent šią problemą.<br />
<br />
= Kaip veikia „PowerMonkey“ ? =<br />
<br />
PowerMonkey naudoja [[UEFI]] programinės įrangos galimybę vykdyti vadinamąsias „programas“ prieš iškviečiant [[OS]] įkrovos programą. Tuo metu (su sąlyga, kad programinė įranga neužsiblokavo) galima (beveik) pilnai reguliuoti procesoriaus dažnį ir įtampą bei maitinimo valdymo konfigūraciją.<br />
<br />
'''PASTABA:''' „PowerMonkey“ galima visiškai naudoti tik sistemose, naudojančiose [[S0iX]] („[[Connected Standby]]“ / „[[Modern Standby]]“ / „[[S0 Standby]]“) režimus. Sistemos, naudojančios seną [[S3]] miego režimą, grįš į platformoje užkoduotus nustatymus, kai atnaujins [[S3]] miego režimą. Kadangi [[UEFI]] DXE tvarkyklės / programos nėra įkeliamos iš naujo [[S3]] atnaujinimo eigos metu, prieš atnaujinant „[[Hypervisor]]“ negalima taikyti jokių nepaisymų.<br />
<br />
= Dieginas =<br />
<br />
== Reikalavimai ==<br />
<br />
== Kompiliavimas ==<br />
<br />
== Pasirašymas ==<br />
<br />
Jeigu savo kompiuteryje turite išjungę secure boot, šį etapą galite praleisti.<br />
<br />
Sukuriame failą '''x509-configuration.ini''' į jį irašome:<br />
<syntaxhighlight lang="text"><br />
[ req ]<br />
default_bits = 4096<br />
distinguished_name = req_distinguished_name<br />
prompt = no<br />
string_mask = utf8only<br />
x509_extensions = myexts<br />
<br />
[ req_distinguished_name ]<br />
O = ojoj<br />
CN = COMPANY ojojoj<br />
emailAddress = ojoj@ojojoj.lt<br />
<br />
[ myexts ]<br />
basicConstraints=critical,CA:FALSE<br />
keyUsage=digitalSignature<br />
subjectKeyIdentifier=hash<br />
authorityKeyIdentifier=keyid<br />
</syntaxhighlight><br />
Generuojame sertifikatus:<br />
openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config x509-configuration.ini -outform DER -out public_key.der -keyout private_key.priv<br />
openssl x509 -in public_key.der -inform DER -outform PEM -out MOK.pem<br />
Uždedame parašą ant '''PowerMonkey.efi'''<br />
sbsign --key private_key.priv --cert MOK.pem /boot/efi/EFI/PowerMonkey/PowerMonkey.efi --output /boot/efi/EFI/PowerMonkey/PowerMonkey.efi-signed<br />
mv /boot/efi/EFI/PowerMonkey/PowerMonkey.efi-signed /boot/efi/EFI/PowerMonkey/PowerMonkey.efi<br />
Importuojame į Mok manager (suvedame slaptažodį kurį prisiminsime vėliau)<br />
mokutil --import public_key.der<br />
Perkrovę kompiuterį spauskite enroll MOK ir suveskite slaptažodį kurį įvedėte prieš tai<br />
<br />
== Krovimas su Grub2 ==<br />
<br />
Redaguojame '''/etc/grub.d/40_custom''' įdedame įrašą:<br />
menuentry "Windows + Power Monkey" {<br />
insmod part_gpt<br />
insmod fat<br />
search --no-floppy --fs-uuid --set=root A4A3-6EB2<br />
chainloader /EFI/PowerMonkey/PowerMonkey.efi<br />
boot<br />
chainloader /EFI/Microsoft/Boot/bootmgfw.efi<br />
boot<br />
}<br />
Reikalui esant jeigu norime nustatyti numatytają įkrovos reikšmę redaguojame failą /etc/default/grub ir pakeičiame šią eilute:<br />
GRUB_DEFAULT=6<br />
Įgaliname naujus Grub nustatymus:<br />
grub2-mkconfig -o /boot/grub2/grub.cfg<br />
<br />
<br />
[[Category:Hardware]]<br />
[[Category:Windows]]<br />
[[Category:Mac OS X]]<br />
{{Template:Distributions}}</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=PowerMonkey&diff=9598PowerMonkey2024-02-19T08:12:43Z<p>\dev\null: Naujas puslapis: '''Sumažinkite procesoriaus energijos eikvojimą ir padidinkite našumą – ekologiškiau ir paprasčiau''' Iki 2020-ųjų visi žinojo, kas yra „overclocking“: sistemos p...</p>
<hr />
<div>'''Sumažinkite procesoriaus energijos eikvojimą ir padidinkite našumą – ekologiškiau ir paprasčiau'''<br />
<br />
Iki 2020-ųjų visi žinojo, kas yra „overclocking“: sistemos priartinimas iki jos ribų didinant jos darbo dažnį, įtampą arba abu. Šis procesas buvo labai kontraversiškas, tačiau jis buvo tobulinamas, net kai kurios sistemos buvo „gamykliškai paspartintos“.<br />
<br />
Tačiau daug mažiau žmonių yra girdėję apie analogą: "undervoltage". Įtampos mažinimas yra tam tikra prasme priešingas procesas nei didinimas: sumažinus procesoriaus įtampą, CPU sunaudoja daug mažiau energijos ir generuoja daug mažiau šilumos.<br />
<br />
Įdomu tai, kad tai padarius termiškai ribotai sistemai, tokiai kaip nešiojamasis kompiuteris arba SFF (mažos formos) kompiuteris, sumažins šilumą ir pagerins našumą! Magija? Ne, fizika! Nešiojamojo kompiuterio aušinimo sistema gali pašalinti tik dalį šilumos, o kai to neužtenka, nebelieka kitos išeities, kaip tik riboti centrinį procesorių, kad būtų išvengta katastrofiško gedimo. Sumažinus įtampą aukštais dažniais, žymiai sumažėja galia ir šilumos išeiga, todėl sistema tampa vėsesnė ir greitesnė.<br />
<br />
== Iššūkiai ==<br />
<br />
Deja, vis sunkiau optimizuoti įprastą nešiojamąjį kompiuterį. Pirma, originalios įrangos gamintojai dažniausiai užrakina [[CPU]] įtampos reguliavimą. Šią problemą galima sušvelninti „atrakinant“ programinės aparatinės įrangos nustatymus, kad puikios programos, tokios kaip [https://www.techpowerup.com/download/techpowerup-throttlestop/ ThrottleStop], galėtų atlikti savo darbą (nebent platforma būtų visiškai užrakinta).<br />
<br />
Tačiau matomos naujos problemos: hipervizorius kaip „[[Microsoft]] [[Hyper-V]]“ dabar naudoja net tokios galutinio vartotojo programos kaip [[WSL2]] („[[Windows]]“ posistemė, skirta [[Linux]]). Kadangi „[[Hypervisor]]“ neleidžia virtualiai mašinai modifikuoti daugumos pagrindinio kompiuterio aparatinės įrangos registrų, tokios programos kaip „ThrottleStop“ arba „[[Intel]] XTU“ negali reguliuoti įtampos.<br />
<br />
Kai programa bando įrašyti į aparatinės įrangos registrą, „[[Hypervisor]]“ sulaiko šį bandymą ir neatlieka tikrojo įrašymo. Teoriškai įmanoma, kad „Hypervisor“ pardavėjas įgyvendina rašymą, tačiau mažai tikėtina. Tai sukūrė naujų kliūčių įtampos reguliavimui ir panašiems aparatinės įrangos pakeitimams.<br />
<br />
Niekas nesukeltų anksčiau minėtų problemų, jei originalios įrangos gamintojai leistų klientams koreguoti programinės įrangos sąrankos nustatymus. Tačiau daugumoje nešiojamųjų kompiuterių yra minimalios konfigūracijos parinktys, todėl savininkas negali koreguoti savo aparatinės įrangos. „PowerMonkey POC“ ketina išspręsti būtent šią problemą.<br />
<br />
== Kaip veikia „PowerMonkey“ ? ==<br />
<br />
PowerMonkey naudoja [[UEFI]] programinės įrangos galimybę vykdyti vadinamąsias „programas“ prieš iškviečiant [[OS]] įkrovos programą. Tuo metu (su sąlyga, kad programinė įranga neužsiblokavo) galima (beveik) pilnai reguliuoti procesoriaus dažnį ir įtampą bei maitinimo valdymo konfigūraciją.<br />
<br />
'''PASTABA:''' „PowerMonkey“ galima visiškai naudoti tik sistemose, naudojančiose [[S0iX]] („[[Connected Standby]]“ / „[[Modern Standby]]“ / „[[S0 Standby]]“) režimus. Sistemos, naudojančios seną [[S3]] miego režimą, grįš į platformoje užkoduotus nustatymus, kai atnaujins [[S3]] miego režimą. Kadangi [[UEFI]] DXE tvarkyklės / programos nėra įkeliamos iš naujo [[S3]] atnaujinimo eigos metu, prieš atnaujinant „[[Hypervisor]]“ negalima taikyti jokių nepaisymų.<br />
<br />
[[Category:Hardware]]<br />
[[Category:Windows]]<br />
[[Category:Mac OS X]]<br />
{{Template:Distributions}}</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Res_iptv&diff=9597Res iptv2024-01-05T23:57:34Z<p>\dev\null: </p>
<hr />
<div>Serijinis numeris yra parašytas ant IPTV BOX'o (dėžutės kurios pagalba žiūrite iptv per TV).<br />
<br />
ARBA<br />
<br />
Pažiūrėję srautą, turim gauti http user agent'o headerį t.y aprašą (tai yra iptv box'o serijinis numeris). Pagal jį ir vyksta visa http ir stream'o autorizacija. Taigi...<br />
<br />
'''192.168.1.99''' - iptv box'o ip<br />
tcpdump -i eth1 -s 0 -A src host 192.168.1.99 and dst port 80<br />
Arba jeigu nežinome tikslaus tvbox ip adreso tinkle, galime daryti taip<br />
tcpdump -i eth1 -s 0 -A dst port 6081 -vvv -X<br />
Gavus kažą panašaus į:<br />
stb_xxxxxxxxxxxx<br />
Naudodami šį gautą serijinį numerį galime užspoofinti user agentą ir gauti visą kanalų sąrašą<br />
curl -A "USER_AGENTAS" -O <nowiki>http://archyvas.res.lt/playlist</nowiki><br />
Žiūrėti kiekvieną kanalą galima su vlc pagal jo m3u8 playlistą. t.y:<br />
./vlc <nowiki>http://cache.res.lt:6081/hls001-live/lrt_tv.m3u8</nowiki> :http-user-agent=USER_AGENTAS<br />
Aišku tai labai nepatogu ir reikia tam pasidaryti grojaraštį:<br />
{{FIXME}}<br />
<br />
cat playlist |grep url_hls|sed -n 's!^.*>\(http[^^]*\)<.*!\1!p'|xargs wget --user-agent="USER_AGENTAS" -O playlistas.m3u<br />
Arba paprasčiau:<br />
cat playlist |grep url_hls|sed -n 's!^.*>\(http[^^]*\)<.*!\1!p' > play.m3u<br />
./vlc play.m3u :http-user-agent=USER_AGENTAS<br />
<br />
PoC<br />
[[Vaizdas:Screenshot at Apr 04 18-07-41.png]]<br />
<br />
== EPG Generavimas ==<br />
<br />
[[php]] scriptas skirtas generuoti [[xml]] [[epg]] (''angl. electronic programme guide'') failus suprantamus daugelių [[iptv]] leistuvų ir media centrų, reikalinga tik pakeisti kintamejį '''$user_agent''' į jūsų box'o.<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
// Tool to generate compatible xml epg list based on RES IPTV json sources<br />
// validation can be made with this tool: https://www.freeformatter.com/xml-validator-xsd.html<br />
// script is very primitive as not error handling are made, please improve it by yourself<br />
$user_agent = "user agentas"; // user agent used for auth with iptv servers<br />
$write_to_xml = 1; // write static 'res-epg.xml' file<br />
$loud = 0; // print messages can be used to load xml directly<br />
$script_dir = dirname(__FILE__);<br />
<br />
function getPlaylist() {<br />
global $user_agent;<br />
$url = "http://archyvas.res.lt/playlist";<br />
<br />
$options = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: en\r\n" .<br />
"User-Agent: $user_agent\r\n"<br />
)<br />
);<br />
$context = stream_context_create($options);<br />
$data = file_get_contents($url, false, $context);<br />
$xml = simplexml_load_string($data) ;<br />
return $xml;<br />
}<br />
<br />
function returnJsonEpg($chanid, $type) {<br />
global $user_agent;<br />
$url = "http://archyvas.res.lt:8080/$chanid/epg/$type.json";<br />
$options = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: en\r\n" .<br />
"User-Agent: $user_agent\r\n"<br />
)<br />
);<br />
$context = stream_context_create($options);<br />
$data = file_get_contents($url, false, $context);<br />
return json_decode($data);<br />
}<br />
<br />
function ReplaceInvalidStr($str) {<br />
$str = str_replace('"', "'", $str);<br />
$str = str_replace('&', "&amp;", $str);<br />
$str = str_replace('<', "&lt;", $str);<br />
$str = str_replace('>', "&gt;", $str);<br />
return $str;<br />
}<br />
<br />
function ConvertJsonProgramme($obj,$chan) {<br />
$starttime = new DateTime("@$obj->start_time");<br />
$stoptime = (clone $starttime)->add(new DateInterval("PT{$obj->duration}S"));<br />
$programme = '<br />
<programme start="'.$starttime->format('YmdHis').' +0200" stop="'.$stoptime->format('YmdHis').' +0200" channel="'.$chan.'"><br />
<title lang="lt">'.ReplaceInvalidStr($obj->name).'</title><br />
<desc lang="lt">'.ReplaceInvalidStr($obj->text).'</desc><br />
</programme>';<br />
return $programme;<br />
}<br />
<br />
function start() {<br />
global $loud, $write_to_xml, $script_dir;<br />
$xml = getPlaylist();<br />
$channels = $xml->xpath('//feed');<br />
if ($loud > 0) {<br />
header("Content-type: text/xml");<br />
echo '<?xml version="1.0" encoding="UTF-8"?>';<br />
echo '<tv generator-info-name="zjbs generator" generator-info-url="http://google.lt">';<br />
}<br />
if ($write_to_xml > 0) {<br />
$f=fopen($script_dir.'/res-epg.xml','w');<br />
fwrite($f,'<?xml version="1.0" encoding="UTF-8"?>');<br />
fwrite($f,'<tv generator-info-name="zjbs generator" generator-info-url="http://google.lt">');<br />
} <br />
// generate channels<br />
foreach ($channels as $chan) {<br />
if ($loud > 0) {<br />
echo '<br />
<channel id="'.$chan->name.'"><br />
<display-name lang="lt">'.$chan->name.'</display-name><br />
<url>http://google.lt</url><br />
</channel>';<br />
}<br />
if ($write_to_xml > 0) {<br />
fwrite($f,'<br />
<channel id="'.$chan->name.'"><br />
<display-name lang="lt">'.$chan->name.'</display-name><br />
<url>http://google.lt</url><br />
</channel>');<br />
}<br />
}<br />
// generate simple epg for each channel for one day<br />
foreach ($channels as $chan) {<br />
$epg_programmes = returnJsonEpg($chan->attributes()->id,"day");<br />
foreach ($epg_programmes as $programme) {<br />
$converted = ConvertJsonProgramme($programme,$chan->name);<br />
if ($loud > 0) {<br />
print $converted;<br />
}<br />
if ($write_to_xml > 0) {<br />
fwrite($f,$converted);<br />
} <br />
}<br />
}<br />
if ($loud > 0) echo '</tv>';<br />
if ($write_to_xml > 0) {<br />
fwrite($f,'</tv>');<br />
fclose($f);<br />
}<br />
}<br />
<br />
start();<br />
<br />
?><br />
</syntaxhighlight><br />
<br />
<br />
Paleisti '''php epg_gen.php''', bus sugeneruotas '''res_epg.xml''' failas kurį galima naudoti bet kuriame iptv leistuve.. Patartina leisti kas 6val arba dar rečiau ir pahostinti kur nors leistuvui prieinamoje vietoje..<br />
<br />
[[Category:RES]]<br />
[[Category:Tinklas]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Res_iptv&diff=9596Res iptv2024-01-05T23:56:39Z<p>\dev\null: </p>
<hr />
<div>Serijinis numeris yra parašytas ant IPTV BOX'o (dėžutės kurios pagalba žiūrite iptv per TV).<br />
<br />
ARBA<br />
<br />
Pažiūrėję srautą, turim gauti http user agent'o headerį t.y aprašą (tai yra iptv box'o serijinis numeris). Pagal jį ir vyksta visa http ir stream'o autorizacija. Taigi...<br />
<br />
'''192.168.1.99''' - iptv box'o ip<br />
tcpdump -i eth1 -s 0 -A src host 192.168.1.99 and dst port 80<br />
Arba jeigu nežinome tikslaus tvbox ip adreso tinkle, galime daryti taip<br />
tcpdump -i eth1 -s 0 -A dst port 6081 -vvv -X<br />
Gavus kažą panašaus į:<br />
stb_xxxxxxxxxxxx<br />
Naudodami šį gautą serijinį numerį galime užspoofinti user agentą ir gauti visą kanalų sąrašą<br />
curl -A "USER_AGENTAS" -O <nowiki>http://archyvas.res.lt/playlist</nowiki><br />
Žiūrėti kiekvieną kanalą galima su vlc pagal jo m3u8 playlistą. t.y:<br />
./vlc <nowiki>http://cache.res.lt:6081/hls001-live/lrt_tv.m3u8</nowiki> :http-user-agent=USER_AGENTAS<br />
Aišku tai labai nepatogu ir reikia tam pasidaryti grojaraštį:<br />
{{FIXME}}<br />
<br />
cat playlist |grep url_hls|sed -n 's!^.*>\(http[^^]*\)<.*!\1!p'|xargs wget --user-agent="USER_AGENTAS" -O playlistas.m3u<br />
Arba paprasčiau:<br />
cat playlist |grep url_hls|sed -n 's!^.*>\(http[^^]*\)<.*!\1!p' > play.m3u<br />
./vlc play.m3u :http-user-agent=USER_AGENTAS<br />
<br />
PoC<br />
[[Vaizdas:Screenshot at Apr 04 18-07-41.png]]<br />
<br />
== EPG Generavimas ==<br />
<br />
[[php]] scriptas skirtas generuoti [[xml]] [[epg]] (''angl. electronic programme guide'') failus suprantamus daugelių [[iptv]] leistuvų ir media centrų, reikalinga tik pakeisti kintamejį '''$user_agent''' į jūsų box'o.<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
// Tool to generate compatible xml epg list based on RES IPTV json sources<br />
// validation can be made with this tool: https://www.freeformatter.com/xml-validator-xsd.html<br />
// script is very primitive as not error handling are made, please improve it by yourself<br />
$user_agent = "user agentas"; // user agent used for auth with iptv servers<br />
$write_to_xml = 1; // write static 'res-epg.xml' file<br />
$loud = 0; // print messages can be used to load xml directly<br />
$script_dir = dirname(__FILE__);<br />
<br />
function getPlaylist() {<br />
global $user_agent;<br />
$url = "http://archyvas.res.lt/playlist";<br />
<br />
$options = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: en\r\n" .<br />
"User-Agent: $user_agent\r\n"<br />
)<br />
);<br />
$context = stream_context_create($options);<br />
$data = file_get_contents($url, false, $context);<br />
$xml = simplexml_load_string($data) ;<br />
return $xml;<br />
}<br />
<br />
function returnJsonEpg($chanid, $type) {<br />
global $user_agent;<br />
$url = "http://archyvas.res.lt:8080/$chanid/epg/$type.json";<br />
$options = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: en\r\n" .<br />
"User-Agent: $user_agent\r\n"<br />
)<br />
);<br />
$context = stream_context_create($options);<br />
$data = file_get_contents($url, false, $context);<br />
return json_decode($data);<br />
}<br />
<br />
function ReplaceInvalidStr($str) {<br />
$str = str_replace('"', "'", $str);<br />
$str = str_replace('&', "&amp;", $str);<br />
$str = str_replace('<', "&lt;", $str);<br />
$str = str_replace('>', "&gt;", $str);<br />
return $str;<br />
}<br />
<br />
function ConvertJsonProgramme($obj,$chan) {<br />
$starttime = new DateTime("@$obj->start_time");<br />
$stoptime = (clone $starttime)->add(new DateInterval("PT{$obj->duration}S"));<br />
$programme = '<br />
<programme start="'.$starttime->format('YmdHis').' +0200" stop="'.$stoptime->format('YmdHis').' +0200" channel="'.$chan.'"><br />
<title lang="lt">'.ReplaceInvalidStr($obj->name).'</title><br />
<desc lang="lt">'.ReplaceInvalidStr($obj->text).'</desc><br />
</programme>';<br />
return $programme;<br />
}<br />
<br />
function start() {<br />
global $loud, $write_to_xml, $script_dir;<br />
$xml = getPlaylist();<br />
$channels = $xml->xpath('//feed');<br />
if ($loud > 0) {<br />
header("Content-type: text/xml");<br />
echo '<?xml version="1.0" encoding="UTF-8"?>';<br />
echo '<tv generator-info-name="zjbs generator" generator-info-url="http://google.lt">';<br />
}<br />
if ($write_to_xml > 0) {<br />
$f=fopen($script_dir.'/res-epg.xml','w');<br />
fwrite($f,'<?xml version="1.0" encoding="UTF-8"?>');<br />
fwrite($f,'<tv generator-info-name="zjbs generator" generator-info-url="http://google.lt">');<br />
} <br />
// generate channels<br />
foreach ($channels as $chan) {<br />
//print 'Debug: ID: '.$chan->attributes()->id.' Name: '.$chan->name."\n";<br />
if ($loud > 0) {<br />
echo '<br />
<channel id="'.$chan->name.'"><br />
<display-name lang="lt">'.$chan->name.'</display-name><br />
<url>http://google.lt</url><br />
</channel>';<br />
}<br />
if ($write_to_xml > 0) {<br />
fwrite($f,'<br />
<channel id="'.$chan->name.'"><br />
<display-name lang="lt">'.$chan->name.'</display-name><br />
<url>http://google.lt</url><br />
</channel>');<br />
}<br />
}<br />
// generate simple epg for each channel for one day<br />
foreach ($channels as $chan) {<br />
$epg_programmes = returnJsonEpg($chan->attributes()->id,"day");<br />
foreach ($epg_programmes as $programme) {<br />
$converted = ConvertJsonProgramme($programme,$chan->name);<br />
if ($loud > 0) {<br />
print $converted;<br />
}<br />
if ($write_to_xml > 0) {<br />
fwrite($f,$converted);<br />
} <br />
}<br />
}<br />
if ($loud > 0) echo '</tv>';<br />
if ($write_to_xml > 0) {<br />
fwrite($f,'</tv>');<br />
fclose($f);<br />
}<br />
}<br />
<br />
start();<br />
<br />
?><br />
</syntaxhighlight><br />
<br />
<br />
Paleisti '''php epg_gen.php''', bus sugeneruotas '''res_epg.xml''' failas kurį galima naudoti bet kuriame iptv leistuve.. Patartina leisti kas 6val arba dar rečiau ir pahostinti kur nors leistuvui prieinamoje vietoje..<br />
<br />
[[Category:RES]]<br />
[[Category:Tinklas]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Res_iptv&diff=9595Res iptv2024-01-05T23:55:26Z<p>\dev\null: </p>
<hr />
<div>Serijinis numeris yra parašytas ant IPTV BOX'o (dėžutės kurios pagalba žiūrite iptv per TV).<br />
<br />
ARBA<br />
<br />
Pažiūrėję srautą, turim gauti http user agent'o headerį t.y aprašą (tai yra iptv box'o serijinis numeris). Pagal jį ir vyksta visa http ir stream'o autorizacija. Taigi...<br />
<br />
'''192.168.1.99''' - iptv box'o ip<br />
tcpdump -i eth1 -s 0 -A src host 192.168.1.99 and dst port 80<br />
Arba jeigu nežinome tikslaus tvbox ip adreso tinkle, galime daryti taip<br />
tcpdump -i eth1 -s 0 -A dst port 6081 -vvv -X<br />
Gavus kažą panašaus į:<br />
stb_xxxxxxxxxxxx<br />
Naudodami šį gautą serijinį numerį galime užspoofinti user agentą ir gauti visą kanalų sąrašą<br />
curl -A "USER_AGENTAS" -O <nowiki>http://archyvas.res.lt/playlist</nowiki><br />
Žiūrėti kiekvieną kanalą galima su vlc pagal jo m3u8 playlistą. t.y:<br />
./vlc <nowiki>http://cache.res.lt:6081/hls001-live/lrt_tv.m3u8</nowiki> :http-user-agent=USER_AGENTAS<br />
Aišku tai labai nepatogu ir reikia tam pasidaryti grojaraštį:<br />
{{FIXME}}<br />
<br />
cat playlist |grep url_hls|sed -n 's!^.*>\(http[^^]*\)<.*!\1!p'|xargs wget --user-agent="USER_AGENTAS" -O playlistas.m3u<br />
Arba paprasčiau:<br />
cat playlist |grep url_hls|sed -n 's!^.*>\(http[^^]*\)<.*!\1!p' > play.m3u<br />
./vlc play.m3u :http-user-agent=USER_AGENTAS<br />
<br />
PoC<br />
[[Vaizdas:Screenshot at Apr 04 18-07-41.png]]<br />
<br />
== EPG Generavimas ==<br />
<br />
[[php]] scriptas skirtas generuoti [[xml]] [[epg]] (''angl. electronic programme guide'') failus suprantamus daugelių [[iptv]] leistuvų ir media centrų, reikalinga tik pakeisti kintamejį '''$user_agent''' į jūsų box'o.<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
// Tool to generate compatible xml epg list based on RES IPTV json sources<br />
// validation can be made with this tool: https://www.freeformatter.com/xml-validator-xsd.html<br />
// script is very primitive as not error handling are made, please improve it by yourself<br />
$user_agent = "user agentas"; // user agent used for auth with iptv servers<br />
$write_to_xml = 1; // write static 'res-epg.xml' file<br />
$loud = 0; // print messages can be used to load xml directly<br />
$script_dir = dirname(__FILE__);<br />
<br />
function getPlaylist() {<br />
global $user_agent;<br />
$url = "http://archyvas.res.lt/playlist";<br />
<br />
$options = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: en\r\n" .<br />
"User-Agent: $user_agent\r\n"<br />
)<br />
);<br />
$context = stream_context_create($options);<br />
$data = file_get_contents($url, false, $context);<br />
$xml = simplexml_load_string($data) ;<br />
return $xml;<br />
}<br />
<br />
function returnJsonEpg($chanid, $type) {<br />
global $user_agent;<br />
$url = "http://archyvas.res.lt:8080/$chanid/epg/$type.json";<br />
$options = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: en\r\n" .<br />
"User-Agent: $user_agent\r\n"<br />
)<br />
);<br />
$context = stream_context_create($options);<br />
$data = file_get_contents($url, false, $context);<br />
return json_decode($data);<br />
}<br />
<br />
function ReplaceInvalidStr($str) {<br />
$str = str_replace('"', "'", $str);<br />
$str = str_replace('&', "&amp;", $str);<br />
$str = str_replace('<', "&lt;", $str);<br />
$str = str_replace('>', "&gt;", $str);<br />
return $str;<br />
}<br />
<br />
function ConvertJsonProgramme($obj,$chan) {<br />
$starttime = new DateTime("@$obj->start_time");<br />
$stoptime = (clone $starttime)->add(new DateInterval("PT{$obj->duration}S"));<br />
$programme = '<br />
<programme start="'.$starttime->format('YmdHis').' +0200" stop="'.$stoptime->format('YmdHis').' +0200" channel="'.$chan.'"><br />
<title lang="lt">'.ReplaceInvalidStr($obj->name).'</title><br />
<desc lang="lt">'.ReplaceInvalidStr($obj->text).'</desc><br />
</programme>';<br />
return $programme;<br />
}<br />
<br />
function start() {<br />
global $loud, $write_to_xml, $script_dir;<br />
$xml = getPlaylist();<br />
$channels = $xml->xpath('//feed');<br />
if ($loud > 0) {<br />
header("Content-type: text/xml");<br />
echo '<?xml version="1.0" encoding="UTF-8"?>';<br />
echo '<tv generator-info-name="zjbs generator" generator-info-url="http://iptv.eofnet.lt">';<br />
}<br />
if ($write_to_xml > 0) {<br />
$f=fopen($script_dir.'/res-epg.xml','w');<br />
fwrite($f,'<?xml version="1.0" encoding="UTF-8"?>');<br />
fwrite($f,'<tv generator-info-name="zjbs generator" generator-info-url="http://iptv.eofnet.lt">');<br />
} <br />
// generate channels<br />
foreach ($channels as $chan) {<br />
//print 'Debug: ID: '.$chan->attributes()->id.' Name: '.$chan->name."\n";<br />
if ($loud > 0) {<br />
echo '<br />
<channel id="'.$chan->name.'"><br />
<display-name lang="lt">'.$chan->name.'</display-name><br />
<url>http://iptv.eofnet.lt</url><br />
</channel>';<br />
}<br />
if ($write_to_xml > 0) {<br />
fwrite($f,'<br />
<channel id="'.$chan->name.'"><br />
<display-name lang="lt">'.$chan->name.'</display-name><br />
<url>http://iptv.eofnet.lt</url><br />
</channel>');<br />
}<br />
}<br />
// generate simple epg for each channel for one day<br />
foreach ($channels as $chan) {<br />
$epg_programmes = returnJsonEpg($chan->attributes()->id,"day");<br />
foreach ($epg_programmes as $programme) {<br />
$converted = ConvertJsonProgramme($programme,$chan->name);<br />
if ($loud > 0) {<br />
print $converted;<br />
}<br />
if ($write_to_xml > 0) {<br />
fwrite($f,$converted);<br />
} <br />
}<br />
}<br />
if ($loud > 0) echo '</tv>';<br />
if ($write_to_xml > 0) {<br />
fwrite($f,'</tv>');<br />
fclose($f);<br />
}<br />
}<br />
<br />
start();<br />
<br />
?><br />
</syntaxhighlight><br />
<br />
<br />
Paleisti '''php epg_gen.php''', bus sugeneruotas '''res_epg.xml''' failas kurį galima naudoti bet kuriame iptv leistuve.. Patartina leisti kas 6val arba dar rečiau ir pahostinti kur nors leistuvui prieinamoje vietoje..<br />
<br />
[[Category:RES]]<br />
[[Category:Tinklas]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Res_iptv&diff=9594Res iptv2024-01-05T23:52:46Z<p>\dev\null: </p>
<hr />
<div>Serijinis numeris yra parašytas ant IPTV BOX'o (dėžutės kurios pagalba žiūrite iptv per TV).<br />
<br />
ARBA<br />
<br />
Pažiūrėję srautą, turim gauti http user agent'o stampą t.y aprašą (tai yra iptv box'o serijinis numeris). Pagal jį ir vyksta visa stream'o autorizacija. Taigi...<br />
<br />
'''192.168.1.99''' - iptv box'o ip<br />
tcpdump -i eth1 -s 0 -A src host 192.168.1.99 and dst port 80<br />
Arba jeigu nežinome tikslaus tvbox ip adreso tinkle, galime daryti taip<br />
tcpdump -i eth1 -s 0 -A dst port 6081 -vvv -X<br />
Gavus kažą panašaus į:<br />
stb_xxxxxxxxxxxx<br />
Galime spoofinti jį ir gauti visą kanalų sąrašą<br />
curl -A "USER_AGENTAS" -O <nowiki>http://archyvas.res.lt/playlist</nowiki><br />
Žiūrėti kiekvieną kanalą galima su vlc pagal jo m3u8 playlistą. t.y:<br />
./vlc <nowiki>http://cache.res.lt:6081/hls001-live/lrt_tv.m3u8</nowiki> :http-user-agent=USER_AGENTAS<br />
Aišku tai labai nepatogu ir reikia tam pasidaryti grojaraštį:<br />
{{FIXME}}<br />
<br />
cat playlist |grep url_hls|sed -n 's!^.*>\(http[^^]*\)<.*!\1!p'|xargs wget --user-agent="USER_AGENTAS" -O playlistas.m3u<br />
Arba paprasčiau:<br />
cat playlist |grep url_hls|sed -n 's!^.*>\(http[^^]*\)<.*!\1!p' > play.m3u<br />
./vlc play.m3u :http-user-agent=USER_AGENTAS<br />
<br />
PoC<br />
[[Vaizdas:Screenshot at Apr 04 18-07-41.png]]<br />
<br />
== EPG Generavimas ==<br />
<br />
[[php]] scriptas skirtas generuoti [[xml]] [[epg]] (''angl. electronic programme guide'') failus suprantamus daugelių [[iptv]] leistuvų ir media centrų, reikalinga tik pakeisti kintamejį '''$user_agent''' į jūsų box'o.<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
// Tool to generate compatible xml epg list based on RES IPTV json sources<br />
// validation can be made with this tool: https://www.freeformatter.com/xml-validator-xsd.html<br />
// script is very primitive as not error handling are made, please improve it by yourself<br />
$user_agent = "user agentas"; // user agent used for auth with iptv servers<br />
$write_to_xml = 1; // write static 'res-epg.xml' file<br />
$loud = 0; // print messages can be used to load xml directly<br />
$script_dir = dirname(__FILE__);<br />
<br />
function getPlaylist() {<br />
global $user_agent;<br />
$url = "http://archyvas.res.lt/playlist";<br />
<br />
$options = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: en\r\n" .<br />
"User-Agent: $user_agent\r\n"<br />
)<br />
);<br />
$context = stream_context_create($options);<br />
$data = file_get_contents($url, false, $context);<br />
$xml = simplexml_load_string($data) ;<br />
return $xml;<br />
}<br />
<br />
function returnJsonEpg($chanid, $type) {<br />
global $user_agent;<br />
$url = "http://archyvas.res.lt:8080/$chanid/epg/$type.json";<br />
$options = array(<br />
'http'=>array(<br />
'method'=>"GET",<br />
'header'=>"Accept-language: en\r\n" .<br />
"User-Agent: $user_agent\r\n"<br />
)<br />
);<br />
$context = stream_context_create($options);<br />
$data = file_get_contents($url, false, $context);<br />
return json_decode($data);<br />
}<br />
<br />
function ReplaceInvalidStr($str) {<br />
$str = str_replace('"', "'", $str);<br />
$str = str_replace('&', "&amp;", $str);<br />
$str = str_replace('<', "&lt;", $str);<br />
$str = str_replace('>', "&gt;", $str);<br />
return $str;<br />
}<br />
<br />
function ConvertJsonProgramme($obj,$chan) {<br />
$starttime = new DateTime("@$obj->start_time");<br />
$stoptime = (clone $starttime)->add(new DateInterval("PT{$obj->duration}S"));<br />
$programme = '<br />
<programme start="'.$starttime->format('YmdHis').' +0200" stop="'.$stoptime->format('YmdHis').' +0200" channel="'.$chan.'"><br />
<title lang="lt">'.ReplaceInvalidStr($obj->name).'</title><br />
<desc lang="lt">'.ReplaceInvalidStr($obj->text).'</desc><br />
</programme>';<br />
return $programme;<br />
}<br />
<br />
function start() {<br />
global $loud, $write_to_xml, $script_dir;<br />
$xml = getPlaylist();<br />
$channels = $xml->xpath('//feed');<br />
if ($loud > 0) {<br />
header("Content-type: text/xml");<br />
echo '<?xml version="1.0" encoding="UTF-8"?>';<br />
echo '<tv generator-info-name="zjbs generator" generator-info-url="http://iptv.eofnet.lt">';<br />
}<br />
if ($write_to_xml > 0) {<br />
$f=fopen($script_dir.'/res-epg.xml','w');<br />
fwrite($f,'<?xml version="1.0" encoding="UTF-8"?>');<br />
fwrite($f,'<tv generator-info-name="zjbs generator" generator-info-url="http://iptv.eofnet.lt">');<br />
} <br />
// generate channels<br />
foreach ($channels as $chan) {<br />
//print 'Debug: ID: '.$chan->attributes()->id.' Name: '.$chan->name."\n";<br />
if ($loud > 0) {<br />
echo '<br />
<channel id="'.$chan->name.'"><br />
<display-name lang="lt">'.$chan->name.'</display-name><br />
<url>http://iptv.eofnet.lt</url><br />
</channel>';<br />
}<br />
if ($write_to_xml > 0) {<br />
fwrite($f,'<br />
<channel id="'.$chan->name.'"><br />
<display-name lang="lt">'.$chan->name.'</display-name><br />
<url>http://iptv.eofnet.lt</url><br />
</channel>');<br />
}<br />
}<br />
// generate simple epg for each channel for one day<br />
foreach ($channels as $chan) {<br />
$epg_programmes = returnJsonEpg($chan->attributes()->id,"day");<br />
foreach ($epg_programmes as $programme) {<br />
$converted = ConvertJsonProgramme($programme,$chan->name);<br />
if ($loud > 0) {<br />
print $converted;<br />
}<br />
if ($write_to_xml > 0) {<br />
fwrite($f,$converted);<br />
} <br />
}<br />
}<br />
if ($loud > 0) echo '</tv>';<br />
if ($write_to_xml > 0) {<br />
fwrite($f,'</tv>');<br />
fclose($f);<br />
}<br />
}<br />
<br />
start();<br />
<br />
?><br />
</syntaxhighlight><br />
<br />
<br />
Paleisti '''php epg_gen.php''', bus sugeneruotas '''res_epg.xml''' failas kurį galima naudoti bet kuriame iptv leistuve.. Patartina leisti kas 6val arba dar rečiau ir pahostinti kur nors leistuvui prieinamoje vietoje..<br />
<br />
[[Category:RES]]<br />
[[Category:Tinklas]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Cpu_vulnerabilities&diff=9593Cpu vulnerabilities2023-12-11T13:23:51Z<p>\dev\null: </p>
<hr />
<div>Straipsnis skirtas aprašyti pataisų išjungimą skirtą [https://en.wikipedia.org/wiki/Spectre_(security_vulnerability) spectre] ir [https://meltdownattack.com/meltdown.pdf meltdown] šeimos [[CPU]] pažeidžiamumams, įvairiose operacijų sistemose. Išjungus pataisymus gali ženkliai padidėti darbo našumas, ypač sistemose su '''Haswell''' ar senesniais procesoriais.<br />
<br />
Žemiau pateiktoje lentelėje surašyti žymiausi [[CPU]] pažeidžiamumai bei jų skylių užlopymo šalutinis poveikis [[CPU]] našumui.<br />
{| class="wikitable"<br />
|+ <br />
|-<br />
! Pavadinimas !! Pažeidžiamumas !! CPU našumo įtaka<br />
|-<br />
| Downfall || CVE-2022-40982 || '''39-50%'''<br />
|-<br />
| Spectre v1 || CVE-2017-5753 || 2-14%<br />
|-<br />
| Spectre v2 || CVE-2017-5715 || '''iki 35%'''<br />
|-<br />
| Meltdown || CVE-2017-5754 || 15%<br />
|-<br />
| Retbleed || CVE-2022-29901 || '''14-39%'''<br />
|}<br />
<br />
<br />
<br />
== Laikraštis Kaimietis ==<br />
<br />
'''2019 metais laikraštis "kaimietis" rašo:'''<br />
<br />
Eina kalbos, kad [[Intel]] ir [[AMD]] susitarę sugalvojo, kaip paspartinti procesorių pardavimų skaičių, investavę keleta šimtų tūkstančių, prisisamdė "didelių egzpertų" kurie atrado šiuos pažeidžiamumus ir padvigubino ar net patrigubino '''naujų''' [[Intel]] ir [[AMD]] procesorių pardavimus (kuriuose jau šios spragos ištaisytos). Kiekvieną kartą po naujo pažeidžiamumo atradimo, procesorių perkamumas stebėtinai didėdavo.. Kadangi pažeidžiamumą iš programinės pusės galima tik "dalinai" ištaisyti, be to prarandamas procesoriaus našumas, galutiniam vartotojui lieka tik pirkti naują.<br />
Taip [[Intel]] reklamuojant naujos kartos procesorius 2018 metais, buvo akcentuojama, kad šios spragos ištaisytos ir vėl galite naudotis naujais procesoriais be jokios našumo praradimo rizikos. Bet tik išleidus naujus procesorius, po maždaug pusmečio, išėjo nauja pažeidžiamumų banga kuri paveikė ir juos. Dabar tai vyksta nuolat kelis ar keleta kartų į metus stabiliai, nuo pat 2017 metų. Taigi kyla klausimas ar tai daroma specialiai? Vėlgi, kadangi [[AMD]] ir [[Intel]] naudoja tą pačią architektūra, buvo paveiktos abi kompanijos, nors jų procesorių gaminimo keliai jau senai išsiskyrę, naudojamos technologijos taipogi, todėl [[AMD]] procesoriai tapo mažiau pažeidžiami. Manoma, kad apie pažeidžiamumus [[Intel]] žinojo senai tik klausimas ar jie per aplaidumą nekreipė į tai dėmesio ar darė tai specialiai, kad vėliau išaiškėjus, galėtų tai panaudoti savo naudai. Kol kas nėra iškelta nei viena viešai žinoma byla prieš [[Intel]] ar [[AMD]] už nekokybiškų gaminių pardavimą, o ir pats [[Intel]] ar [[AMD]] nepasisiūlė geranoriškai naudotojams kompensuoti žalą. Manoma, kad jie pirmiausia parašė laiškus siūlydami didelius "honorarus" įvairiems "geležies" testavimo internetiniams puslapiams ir/ar jų autoriams, kur viešai skelbiami procesorių našumo testai, po programinio jų pažeidžiamumų ištaisymo. Galimai buvo prašoma suklastoti rezultatus, kad žmonėms būtų parodyta, kad joks našumas nėra įtakotas arba įtakotas labai mažai, po programinio lygio pažeidžiamumų pataisymo.<br />
<br />
<br />
== Linux ==<br />
<br />
'''lscpu''' parodo visus cpu pažeidžiamumus ir ar jie yra aktyvūs.. Kaip ir įprastai, Linux'e viskas labai paprasta ir patogu...<br />
<br />
'''/etc/default/grub'''<br />
GRUB_CMDLINE_LINUX="mitigations=off"<br />
Sugeneruojam bootloader konfigą<br />
update-grub<br />
<br />
* [https://github.com/speed47/spectre-meltdown-checker Spectre & Meltdown checker]<br />
<br />
== Windows ==<br />
<br />
CPU Microcode atnaujinimas gali būti išjungtas pašalinus failą: '''C:\Windows\System32\mcupdate_GenuineIntel.dll'''<br />
<br />
Spectre ir meltdown pataisymai gali būti išjungti šiomis registro pataisomis:<br />
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 3 /f<br />
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f<br />
<br />
Įrankis skirtas pažiūrėti esamą pažeidžiamumų situaciją ir/arba išjungti '''spectre''' ir '''meltdown''' pažeidžiamumų pataisas: https://www.grc.com/inspectre.htm<br />
<br />
== MacOS ==<br />
<br />
{{FIXME}}<br />
<br />
== Irankiai patikrinimui ==<br />
<br />
* [https://xlab.tencent.com/special/spectre/spectre_check.html Spectre pazeidziamumo patikrinimas narsykleje]<br />
<br />
{{Template:Distributions}}<br />
[[Category:Linux]]<br />
[[Category:Windows]]<br />
[[Category:Mac OS X]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Intel_CPU&diff=9592Intel CPU2023-12-09T00:22:23Z<p>\dev\null: </p>
<hr />
<div><br />
== Kartos ==<br />
<br />
<br />
<br />
{| class="wikitable"<br />
|+ Intel Core i3/i5/i7/i9 procesorių kartos<br />
|-<br />
! Karta !! Kodinis pavadinimas !! Modelių pavyzdžiai !! Litografija !! Mobilus/Darbastalis !! Išleidimo data<br />
|-<br />
| 1 || [[Nehalem]]/[[Westmere]] || i5-750 / i7-975 || 45 nm || Mobilus/Darbastalis || 2008 Lapkričio 11 / 2010 Sausio 7<br />
|-<br />
| 2 || [[Sandy Bridge]] || Pentium G620T/Celeron G555/i3-2120/i5-2550K/i7-2600 || 32 nm || Mobilus/Darbastalis || 2011 Sausio 9<br />
|-<br />
| 3 || [[Ivy Bridge]] || Pentium G2140/Celeron G1630/i3-3250/i5-3570K/i7-3770K || 22 nm || Mobilus/Darbastalis || 2012 Balandžio 29<br />
|-<br />
| 4 || [[Haswell]] || Pentium G3470/Celeron G1850/i3-4370/i5-4690K/i7-4790K || 22 nm || Mobilus/Darbastalis || 2013 Birželio 4<br />
|-<br />
| 5 || [[Broadwell]] || Pentium 3825U/Celeron 3755U/i3-5157U/i5-5675C/i7-5775C || 14 nm || Mobilus/Darbastalis || 2014 Spalio 27<br />
|-<br />
| 6 || [[Skylake]] || Pentium G4520/Celeron G3920/i3-6320/i5-6500/i7-6700K || 14 nm || Mobilus/Darbastalis || 2015 Rugpjūčio 5<br />
|-<br />
| 7 || [[Kaby Lake]] || Pentium G4620/Celeron G3950/i3-7350K/i5-7640X/i7-7740X || 14 nm || Mobilus/Darbastalis || 2016 Rugpjūčio 30<br />
|-<br />
| 8 || [[Coffee Lake]] || Pentium Gold G5600/Celeron G4930/i3-8350K/i5-8600K/i7-8086K || 14 nm || Mobilus/Darbastalis || 2017 Spalio 5<br />
|-<br />
| || [[Whiskey Lake]] || Pentium Gold 5405U/Celeron 4205U/i3-8145U/i5-8365U/i7-8665U || 14 nm || Mobilus || 2018 Rugpjūčio 28<br />
|-<br />
| 9 || [[Coffee Lake Refresh]] || Pentium Gold G5600T/Celeron G4930/i3-9350KF/i5-9400H/i7-9850H/i9-9980HK || 14 nm || Darbastalis/Mobilus || 2018 4 ketvirtis<br />
|-<br />
| || [[Cascade Lake]] || Xeon Platinum 9282/Xeon W-2295/i9-10980XE || 14 nm || Darbastalis || 019 Balandžio 2<br />
|-<br />
| 10 || [[Comet Lake]] || Pentium Gold G6600/Celeron G5925/i3-10320/i5-10600K/i7-10700K/i9-10900K || 14 nm || Darbastalis/Mobilus || 2019 Rugpjūčio 21<br />
|-<br />
| || [[Ice Lake]] || Pentium 6805/Celeron G5925/i3-1005G1/i5-1038NG7/i7-1068NG7 || 10 nm || Mobilus || 2019 Rugsėjis<br />
|-<br />
| 11 || [[Tiger Lake]] || Pentium Gold 7505/Celeron 6305/Xeon W 11855M/i3-1125G4/i5-11400H/i7-11850H/i9-11980HK || 10 nm || Mobilus/Darbastalis || 2020 Rugsėjo 2<br />
|-<br />
| 12 || [[Alder Lake]] || Pentium Gold G7400/Celeron G6900/i3-12300/i5-12600K/i7-12700K/i9-12900KS || 10 nm || Mobilus/Darbastalis || 2021 Lapkričio 4<br />
|-<br />
| 13 || [[Raptor Lake]] || i3-13100/i5-13600K/i7-13790F/i9-13900KS || 7 nm || Mobilus/Darbastalis || 2022 Spalio 20<br />
|-<br />
| 14 || [[Raptor Lake-Refresh]] || i5-14600K/i7-14700K/i9-14900K || 7 nm || Mobilus/Darbastalis || 2023 Spalio 17<br />
|}<br />
<br />
== Kita ==<br />
<br />
* [[Cpu vulnerabilities]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Intel_CPU&diff=9591Intel CPU2023-12-09T00:14:10Z<p>\dev\null: /* Kartos */</p>
<hr />
<div><br />
== Kartos ==<br />
<br />
|| Xeon Platinum 9282/Xeon W-2295/i9-10980XE<br />
<br />
{| class="wikitable"<br />
|+ Intel Core i3/i5/i7/i9 procesorių kartos<br />
|-<br />
! Karta !! Kodinis pavadinimas !! Modelių pavyzdžiai !! Litografija !! Mobilus/Darbastalis !! Išleidimo data<br />
|-<br />
| 1 || [[Nehalem]]/[[Westmere]] || i5-750 / i7-975 || 45 nm || Mobilus/Darbastalis || 2008 Lapkričio 11 / 2010 Sausio 7<br />
|-<br />
| 2 || [[Sandy Bridge]] || Pentium G620T/Celeron G555/i3-2120/i5-2550K/i7-2600 || 32 nm || Mobilus/Darbastalis || 2011 Sausio 9<br />
|-<br />
| 3 || [[Ivy Bridge]] || Pentium G2140/Celeron G1630/i3-3250/i5-3570K/i7-3770K || 22 nm || Mobilus/Darbastalis || 2012 Balandžio 29<br />
|-<br />
| 4 || [[Haswell]] || Pentium G3470/Celeron G1850/i3-4370/i5-4690K/i7-4790K || 22 nm || Mobilus/Darbastalis || 2013 Birželio 4<br />
|-<br />
| 5 || [[Broadwell]] || Pentium 3825U/Celeron 3755U/i3-5157U/i5-5675C/i7-5775C || 14 nm || Mobilus/Darbastalis || 2014 Spalio 27<br />
|-<br />
| 6 || [[Skylake]] || Pentium G4520/Celeron G3920/i3-6320/i5-6500/i7-6700K || 14 nm || Mobilus/Darbastalis || 2015 Rugpjūčio 5<br />
|-<br />
| 7 || [[Kaby Lake]] || Pentium G4620/Celeron G3950/i3-7350K/i5-7640X/i7-7740X || 14 nm || Mobilus/Darbastalis || 2016 Rugpjūčio 30<br />
|-<br />
| 8 || [[Coffee Lake]] || Pentium Gold G5600/Celeron G4930/i3-8350K/i5-8600K/i7-8086K || 14 nm || Mobilus/Darbastalis || 2017 Spalio 5<br />
|-<br />
| || [[Whiskey Lake]] || Pentium Gold 5405U/Celeron 4205U/i3-8145U/i5-8365U/i7-8665U || 14 nm || Mobilus || 2018 Rugpjūčio 28<br />
|-<br />
| 9 || [[Coffee Lake Refresh]] || Pentium Gold G5600T/Celeron G4930/i3-9350KF/i5-9400H/i7-9850H/i9-9980HK || 14 nm || Darbastalis/Mobilus || 2018 4 ketvirtis<br />
|-<br />
| || [[Cascade Lake]] || Xeon Platinum 9282/Xeon W-2295/i9-10980XE || 14 nm || Darbastalis || 019 Balandžio 2<br />
|-<br />
| 10 || [[Comet Lake]] || 14 nm || Darbastalis/Mobilus || 2019 Rugpjūčio 21<br />
|-<br />
| || [[Ice Lake]] || 10 nm || Mobilus || 2019 Rugsėjis<br />
|-<br />
| 11 || [[Tiger Lake]] || 10 nm || Mobilus/Darbastalis || 2020 Rugsėjo 2<br />
|-<br />
| 12 || [[Alder Lake]] || 10 nm || Mobilus/Darbastalis || 2021 Lapkričio 4<br />
|-<br />
| 13 || [[Raptor Lake]] || 7 nm || Mobilus/Darbastalis || 2022 Spalio 20<br />
|-<br />
| 14 || [[Raptor Lake-Refresh]] || 7 nm || Mobilus/Darbastalis || 2023 Spalio 17<br />
|}<br />
<br />
== Kita ==<br />
<br />
* [[Cpu vulnerabilities]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Intel_CPU&diff=9590Intel CPU2023-12-08T23:55:05Z<p>\dev\null: </p>
<hr />
<div><br />
== Kartos ==<br />
<br />
<br />
{| class="wikitable"<br />
|+ Intel Core i3/i5/i7/i9 procesorių kartos<br />
|-<br />
! Karta !! Kodinis pavadinimas !! Litografija !! Mobilus/Darbastalis !! Išleidimo data<br />
|-<br />
| 1 || [[Nehalem]]/[[Westmere]] || 45 nm || Mobilus/Darbastalis || 2008 Lapkričio 11 / 2010 Sausio 7<br />
|-<br />
| 2 || [[Sandy Bridge]] || 32 nm || Mobilus/Darbastalis || 2011 Sausio 9<br />
|-<br />
| 3 || [[Ivy Bridge]] || 22 nm || Mobilus/Darbastalis || 2012 Balandžio 29<br />
|-<br />
| 4 || [[Haswell]] || 22 nm || Mobilus/Darbastalis || 2013 Birželio 4<br />
|-<br />
| 5 || [[Broadwell]] || 14 nm || Mobilus/Darbastalis || 2014 Spalio 27<br />
|-<br />
| 6 || [[Skylake]] || 14 nm || Mobilus/Darbastalis || 2015 Rugpjūčio 5<br />
|-<br />
| 7 || [[Kaby Lake]] || 14 nm || Mobilus/Darbastalis || 2016 Rugpjūčio 30<br />
|-<br />
| 8 || [[Coffee Lake]] || 14 nm || Mobilus/Darbastalis || 2017 Spalio 5<br />
|-<br />
| || [[Whiskey Lake]] || 14 nm || Mobilus || 2018 Rugpjūčio 28<br />
|-<br />
| 9 || [[Coffee Lake Refresh]] || 14 nm || Darbastalis/Mobilus || 2018 4 ketvirtis<br />
|-<br />
| || [[Cascade Lake]] || 14 nm || Darbastalis || 019 Balandžio 2<br />
|-<br />
| 10 || [[Comet Lake]] || 14 nm || Darbastalis/Mobilus || 2019 Rugpjūčio 21<br />
|-<br />
| || [[Ice Lake]] || 10 nm || Mobilus || 2019 Rugsėjis<br />
|-<br />
| 11 || [[Tiger Lake]] || 10 nm || Mobilus/Darbastalis || 2020 Rugsėjo 2<br />
|-<br />
| 12 || [[Alder Lake]] || 10 nm || Mobilus/Darbastalis || 2021 Lapkričio 4<br />
|-<br />
| 13 || [[Raptor Lake]] || 7 nm || Mobilus/Darbastalis || 2022 Spalio 20<br />
|-<br />
| 14 || [[Raptor Lake-Refresh]] || 7 nm || Mobilus/Darbastalis || 2023 Spalio 17<br />
|}<br />
<br />
== Kita ==<br />
<br />
* [[Cpu vulnerabilities]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=AMD&diff=9589AMD2023-12-08T23:01:05Z<p>\dev\null: Naujas puslapis: * AMD CPU</p>
<hr />
<div><br />
<br />
* [[AMD CPU]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=AMD_CPU&diff=9588AMD CPU2023-12-08T23:00:43Z<p>\dev\null: Naujas puslapis: * Cpu vulnerabilities</p>
<hr />
<div><br />
<br />
* [[Cpu vulnerabilities]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Intel_CPU&diff=9587Intel CPU2023-12-08T23:00:26Z<p>\dev\null: Naujas puslapis: * Cpu vulnerabilities</p>
<hr />
<div><br />
<br />
* [[Cpu vulnerabilities]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Procesorius&diff=9586Procesorius2023-12-08T22:59:13Z<p>\dev\null: </p>
<hr />
<div>'''Procesorius''' – loginis įtaisas, apdirbantis duomenų srautą. ''Procesoriaus'' sąvoka yra bendrinė, reiškianti gana abstrakčią informacinių sistemų rūšį, atliekančią manipuliacijas su duomenimis, tačiau dažniau naudojama, kalbant apie skaičiavimams skirtus procesorius, realizuotus, kaip aparatiniai (apčiuopiami) įrenginiai (dažniausiai – [[mikroprocesorius|mikroprocesoriai]]) ar (rečiau) programas, sugebančias vykdyti tam tikras komandų sekas.<br />
<br />
* [[Intel CPU]]<br />
* [[AMD CPU]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Cpu_vulnerabilities&diff=9585Cpu vulnerabilities2023-12-08T13:52:23Z<p>\dev\null: </p>
<hr />
<div>Straipsnis skirtas aprašyti pataisų išjungimą skirtą [https://en.wikipedia.org/wiki/Spectre_(security_vulnerability) spectre] ir [https://meltdownattack.com/meltdown.pdf meltdown] šeimos [[CPU]] pažeidžiamumams, įvairiose operacijų sistemose. Išjungus pataisymus gali ženkliai padidėti darbo našumas, ypač sistemose su '''Haswell''' ar senesniais procesoriais.<br />
<br />
Žemiau pateiktoje lentelėje surašyti žymiausi [[CPU]] pažeidžiamumai bei jų skylių užlopymo šalutinis poveikis [[CPU]] našumui.<br />
{| class="wikitable"<br />
|+ <br />
|-<br />
! Pavadinimas !! Pažeidžiamumas !! CPU našumo įtaka<br />
|-<br />
| Downfall || CVE-2022-40982 || '''39-50%'''<br />
|-<br />
| Spectre v1 || CVE-2017-5753 || 2-14%<br />
|-<br />
| Spectre v2 || CVE-2017-5715 || '''iki 35%'''<br />
|-<br />
| Meltdown || CVE-2017-5754 || 15%<br />
|-<br />
| Retbleed || CVE-2022-29901 || '''14-39%'''<br />
|}<br />
<br />
<br />
<br />
== Laikraštis Kaimietis ==<br />
<br />
'''2019 metais laikraštis "kaimietis" rašo:'''<br />
<br />
Eina kalbos, kad [[Intel]] ir [[AMD]] susitarę sugalvojo, kaip paspartinti procesorių pardavimų skaičių, investavę keleta šimtų tūkstančių, prisisamdė "didelių egzpertų" kurie atrado šiuos pažeidžiamumus ir padvigubino ar net patrigubino '''naujų''' [[Intel]] ir [[AMD]] procesorių pardavimus (kuriuose jau šios spragos ištaisytos). Kiekvieną kartą po naujo pažeidžiamumo atradimo, procesorių perkamumas stebėtinai didėdavo.. Kadangi pažeidžiamumą iš programinės pusės galima tik "dalinai" ištaisyti, be to prarandamas procesoriaus našumas, galutiniam vartotojui lieka tik pirkti naują.<br />
Taip [[Intel]] reklamuojant naujos kartos procesorius 2018 metais, buvo akcentuojama, kad šios spragos ištaisytos ir vėl galite naudotis naujais procesoriais be jokios našumo praradimo rizikos. Bet tik išleidus naujus procesorius, po maždaug pusmečio, išėjo nauja pažeidžiamumų banga kuri paveikė ir juos. Dabar tai vyksta nuolat kelis ar keleta kartų į metus stabiliai, nuo pat 2017 metų. Taigi kyla klausimas ar tai daroma specialiai? Vėlgi, kadangi [[AMD]] ir [[Intel]] naudoja tą pačią architektūra, buvo paveiktos abi kompanijos, nors jų procesorių gaminimo keliai jau senai išsiskyrę, naudojamos technologijos taipogi, todėl [[AMD]] procesoriai tapo mažiau pažeidžiami. Manoma, kad apie pažeidžiamumus [[Intel]] žinojo senai tik klausimas ar jie per aplaidumą nekreipė į tai dėmesio ar darė tai specialiai, kad vėliau išaiškėjus, galėtų tai panaudoti savo naudai. Kol kas nėra iškelta nei viena viešai žinoma byla prieš [[Intel]] ar [[AMD]] už nekokybiškų gaminių pardavimą, o ir pats [[Intel]] ar [[AMD]] nepasisiūlė geranoriškai naudotojams kompensuoti žalą. Manoma, kad jie pirmiausia parašė laiškus siūlydami didelius "honorarus" įvairiems "geležies" testavimo internetiniams puslapiams ir/ar jų autoriams, kur viešai skelbiami procesorių našumo testai, po programinio jų pažeidžiamumų ištaisymo. Galimai buvo prašoma suklastoti rezultatus, kad žmonėms būtų parodyta, kad joks našumas nėra įtakotas arba įtakotas labai mažai, po programinio lygio pažeidžiamumų pataisymo.<br />
<br />
<br />
== Linux ==<br />
<br />
'''lscpu''' parodo visus cpu pažeidžiamumus ir ar jie yra aktyvūs.. Kaip ir įprastai, Linux'e viskas labai paprasta ir patogu...<br />
<br />
'''/etc/default/grub'''<br />
GRUB_CMDLINE_LINUX="mitigations=off"<br />
Sugeneruojam bootloader konfigą<br />
update-grub<br />
<br />
* [https://github.com/speed47/spectre-meltdown-checker Spectre & Meltdown checker]<br />
<br />
== Windows ==<br />
<br />
CPU Microcode atnaujinimas gali būti išjungtas pašalinus failą: '''C:\Windows\System32\mcupdate_GenuineIntel.dll'''<br />
<br />
Spectre ir meltdown pataisymai gali būti išjungti šiomis registro pataisomis:<br />
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 3 /f<br />
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f<br />
<br />
Įrankis skirtas pažiūrėti esamą pažeidžiamumų situaciją ir/arba išjungti '''spectre''' ir '''meltdown''' pažeidžiamumų pataisas: https://www.grc.com/inspectre.htm<br />
<br />
== MacOS ==<br />
<br />
{{FIXME}}<br />
<br />
{{Template:Distributions}}<br />
[[Category:Linux]]<br />
[[Category:Windows]]<br />
[[Category:Mac OS X]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=CPU&diff=9584CPU2023-12-08T13:44:33Z<p>\dev\null: Nukreipiama į Procesorius</p>
<hr />
<div>#REDIRECT [[procesorius]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Cpu_vulnerabilities&diff=9583Cpu vulnerabilities2023-12-08T13:43:57Z<p>\dev\null: </p>
<hr />
<div>Straipsnis skirtas aprašyti pataisų išjungimą skirtą [https://en.wikipedia.org/wiki/Spectre_(security_vulnerability) spectre] ir [https://meltdownattack.com/meltdown.pdf meltdown] šeimos [[CPU]] pažeidžiamumams, įvairiose operacijų sistemose. Išjungus pataisymus gali ženkliai padidėti darbo našumas, ypač sistemose su '''Haswell''' ar senesniais procesoriais.<br />
<br />
Žemiau pateiktoje lentelėje surašyti žymiausi [[CPU]] pažeidžiamumai bei jų skylių užlopymo šalutinis poveikis [[CPU]] našumui.<br />
{| class="wikitable"<br />
|+ <br />
|-<br />
! Pavadinimas !! Pažeidžiamumas !! CPU našumo įtaka<br />
|-<br />
| Downfall || CVE-2022-40982 || '''39-50%'''<br />
|-<br />
| Spectre v1 || CVE-2017-5753 || 2-14%<br />
|-<br />
| Spectre v2 || CVE-2017-5715 || '''iki 35%'''<br />
|-<br />
| Meltdown || CVE-2017-5754 || 15%<br />
|-<br />
| Retbleed || CVE-2022-29901 || '''14-39%'''<br />
|}<br />
<br />
== Laikraštis Kaimietis ==<br />
<br />
'''2019 metais laikraštis "kaimietis" rašo:'''<br />
<br />
Eina kalbos, kad [[Intel]] ir [[AMD]] susitarę sugalvojo, kaip paspartinti procesorių pardavimų skaičių, investavę keleta šimtų tūkstančių, prisisamdė "didelių egzpertų" kurie atrado šiuos pažeidžiamumus ir padvigubino ar net patrigubino '''naujų''' [[Intel]] ir [[AMD]] procesorių pardavimus (kuriuose jau šios spragos ištaisytos). Kiekvieną kartą po naujo pažeidžiamumo atradimo, procesorių perkamumas stebėtinai didėdavo.. Kadangi pažeidžiamumą iš programinės pusės galima tik "dalinai" ištaisyti, be to prarandamas procesoriaus našumas, galutiniam vartotojui lieka tik pirkti naują.<br />
Taip [[Intel]] reklamuojant naujos kartos procesorius 2018 metais, buvo akcentuojama, kad šios spragos ištaisytos ir vėl galite naudotis naujais procesoriais be jokios našumo praradimo rizikos. Bet tik išleidus naujus procesorius, po maždaug pusmečio, išėjo nauja pažeidžiamumų banga kuri paveikė ir juos. Dabar tai vyksta nuolat kelis ar keleta kartų į metus stabiliai, nuo pat 2017 metų. Taigi kyla klausimas ar tai daroma specialiai? Vėlgi, kadangi [[AMD]] ir [[Intel]] naudoja tą pačią architektūra, buvo paveiktos abi kompanijos, nors jų procesorių gaminimo keliai jau senai išsiskyrę, naudojamos technologijos taipogi, todėl [[AMD]] procesoriai tapo mažiau pažeidžiami. Manoma, kad apie pažeidžiamumus [[Intel]] žinojo senai tik klausimas ar jie per aplaidumą nekreipė į tai dėmesio ar darė tai specialiai, kad vėliau išaiškėjus, galėtų tai panaudoti savo naudai. Kol kas nėra iškelta nei viena viešai žinoma byla prieš [[Intel]] ar [[AMD]] už nekokybiškų gaminių pardavimą, o ir pats [[Intel]] ar [[AMD]] nepasisiūlė geranoriškai naudotojams kompensuoti žalą. Manoma, kad jie pirmiausia parašė laiškus siūlydami didelius "honorarus" įvairiems "geležies" testavimo internetiniams puslapiams ir/ar jų autoriams, kur viešai skelbiami procesorių našumo testai, po programinio jų pažeidžiamumų ištaisymo. Galimai buvo prašoma suklastoti rezultatus, kad žmonėms būtų parodyta, kad joks našumas nėra įtakotas arba įtakotas labai mažai, po programinio lygio pažeidžiamumų pataisymo.<br />
<br />
<br />
== Linux ==<br />
<br />
'''lscpu''' parodo visus cpu pažeidžiamumus ir ar jie yra aktyvūs.. Kaip ir įprastai, Linux'e viskas labai paprasta ir patogu...<br />
<br />
'''/etc/default/grub'''<br />
GRUB_CMDLINE_LINUX="mitigations=off"<br />
Sugeneruojam bootloader konfigą<br />
update-grub<br />
<br />
<br />
== Windows ==<br />
<br />
CPU Microcode atnaujinimas gali būti išjungtas pašalinus failą: '''C:\Windows\System32\mcupdate_GenuineIntel.dll'''<br />
<br />
Spectre ir meltdown pataisymai gali būti išjungti šiomis registro pataisomis:<br />
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 3 /f<br />
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f<br />
<br />
Įrankis skirtas pažiūrėti esamą pažeidžiamumų situaciją ir/arba išjungti '''spectre''' ir '''meltdown''' pažeidžiamumų pataisas: https://www.grc.com/inspectre.htm<br />
<br />
== MacOS ==<br />
<br />
<br />
<br />
{{Template:Distributions}}<br />
[[Category:Linux]]<br />
[[Category:Windows]]<br />
[[Category:Mac OS X]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Cpu_vulnerabilities&diff=9582Cpu vulnerabilities2023-12-08T13:42:46Z<p>\dev\null: Naujas puslapis: Straipsnis skirtas aprašyti pataisų išjungimą skirtą [https://en.wikipedia.org/wiki/Spectre_(security_vulnerability) spectre] ir [https://meltdownattack.com/meltdown.pdf mel...</p>
<hr />
<div>Straipsnis skirtas aprašyti pataisų išjungimą skirtą [https://en.wikipedia.org/wiki/Spectre_(security_vulnerability) spectre] ir [https://meltdownattack.com/meltdown.pdf meltdown] šeimos [[CPU]] pažeidžiamumams, įvairiose operacijų sistemose. Išjungus pataisymus gali ženkliai padidėti darbo našumas, ypač sistemose su '''Haswell''' ar senesniais procesoriais.<br />
<br />
Žemiau pateiktoje lentelėje surašyti žymiausi [[CPU]] pažeidžiamumai bei jų skylių užlopymo šalutinis poveikis [[CPU]] našumui.<br />
{| class="wikitable"<br />
|+ <br />
|-<br />
! Pavadinimas !! Pažeidžiamumas !! CPU našumo įtaka<br />
|-<br />
| Downfall || CVE-2022-40982 || '''39-50%'''<br />
|-<br />
| Spectre v1 || CVE-2017-5753 || 2-14%<br />
|-<br />
| Spectre v2 || CVE-2017-5715 || '''iki 35%'''<br />
|-<br />
| Meltdown || CVE-2017-5754 || 15%<br />
|-<br />
| Retbleed || CVE-2022-29901 || '''14-39%'''<br />
|}<br />
<br />
== Laikraštis Kaimietis ==<br />
<br />
Eina kalbos, kad [[Intel]] ir [[AMD]] susitarę sugalvojo, kaip paspartinti procesorių pardavimų skaičių, investavę keleta šimtų tūkstančių, prisisamdė "didelių egzpertų" kurie atrado šiuos pažeidžiamumus ir padvigubino ar net patrigubino '''naujų''' [[Intel]] ir [[AMD]] procesorių pardavimus (kuriuose jau šios spragos ištaisytos). Kiekvieną kartą po naujo pažeidžiamumo atradimo, procesorių perkamumas stebėtinai didėdavo.. Kadangi pažeidžiamumą iš programinės pusės galima tik "dalinai" ištaisyti, be to prarandamas procesoriaus našumas, galutiniam vartotojui lieka tik pirkti naują.<br />
Taip [[Intel]] reklamuojant naujos kartos procesorius 2018 metais, buvo akcentuojama, kad šios spragos ištaisytos ir vėl galite naudotis naujais procesoriais be jokios našumo praradimo rizikos. Bet tik išleidus naujus procesorius, po maždaug pusmečio, išėjo nauja pažeidžiamumų banga kuri paveikė ir juos. Dabar tai vyksta nuolat kelis ar keleta kartų į metus stabiliai, nuo pat 2017 metų. Taigi kyla klausimas ar tai daroma specialiai? Vėlgi, kadangi [[AMD]] ir [[Intel]] naudoja tą pačią architektūra, buvo paveiktos abi kompanijos, nors jų procesorių gaminimo keliai jau senai išsiskyrę, naudojamos technologijos taipogi, todėl [[AMD]] procesoriai tapo mažiau pažeidžiami. Manoma, kad apie pažeidžiamumus [[Intel]] žinojo senai tik klausimas ar jie per aplaidumą nekreipė į tai dėmesio ar darė tai specialiai, kad vėliau išaiškėjus, galėtų tai panaudoti savo naudai. Kol kas nėra iškelta nei viena viešai žinoma byla prieš [[Intel]] ar [[AMD]] už nekokybiškų gaminių pardavimą, o ir pats [[Intel]] ar [[AMD]] nepasisiūlė geranoriškai naudotojams kompensuoti žalą. Manoma, kad jie pirmiausia parašė laiškus siūlydami didelius "honorarus" įvairiems "geležies" testavimo internetiniams puslapiams ir/ar jų autoriams, kur viešai skelbiami procesorių našumo testai, po programinio jų pažeidžiamumų ištaisymo. Galimai buvo prašoma suklastoti rezultatus, kad žmonėms būtų parodyta, kad joks našumas nėra įtakotas arba įtakotas labai mažai, po programinio lygio pažeidžiamumų pataisymo.<br />
<br />
<br />
== Linux ==<br />
<br />
'''lscpu''' parodo visus cpu pažeidžiamumus ir ar jie yra aktyvūs.. Kaip ir įprastai, Linux'e viskas labai paprasta ir patogu...<br />
<br />
'''/etc/default/grub'''<br />
GRUB_CMDLINE_LINUX="mitigations=off"<br />
Sugeneruojam bootloader konfigą<br />
update-grub<br />
<br />
<br />
== Windows ==<br />
<br />
CPU Microcode atnaujinimas gali būti išjungtas pašalinus failą: '''C:\Windows\System32\mcupdate_GenuineIntel.dll'''<br />
<br />
Spectre ir meltdown pataisymai gali būti išjungti šiomis registro pataisomis:<br />
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 3 /f<br />
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f<br />
<br />
Įrankis skirtas pažiūrėti esamą pažeidžiamumų situaciją ir/arba išjungti '''spectre''' ir '''meltdown''' pažeidžiamumų pataisas: https://www.grc.com/inspectre.htm<br />
<br />
== MacOS ==<br />
<br />
<br />
<br />
{{Template:Distributions}}<br />
[[Category:Linux]]<br />
[[Category:Windows]]<br />
[[Category:Mac OS X]]</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Lvm&diff=9581Lvm2023-11-10T20:53:57Z<p>\dev\null: </p>
<hr />
<div><br />
apt-get install lvm2<br />
=== Paruošiame disk layout ===<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.20.40.png|600px]]<br />
=== Sukuriame fizinę žymę ===<br />
pvcreate /dev/sda1<br />
Patikrinam<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.23.49.png|600px]]<br />
=== LVM Grupė ===<br />
Sukuriame LVM grupę<br />
vgcreate mini_iscsi /dev/sda1<br />
Patikrinam<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.26.13.png|600px]]<br />
<br />
=== Loginis skirsnis ===<br />
<br />
lvcreate -l 100%FREE -n scsi_storage mini_iscsi<br />
Rezultatas:<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.37.30.png|600px]]<br />
<br />
Sukuriame failų sistemą, loginiame skirsnyje:<br />
mkfs.ext4 -v /dev/mini_iscsi/scsi_storage<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.40.14.png|600px]]<br />
<br />
=== Papildomas diskas ===<br />
<br />
Atėjo poreikis pridėti papildomą diską... Padarome disk layout su fdisk, kaip aprašyta viršuje, tuomet:<br />
pvcreate /dev/sdc1<br />
Pridedame į tą pačią grupę<br />
vgextend mini_iscsi /dev/sdc1<br />
Parašius '''vgs''' dabar turėtų rodyti kur kas didesnę talpą, beliko užpildyti ja failų sistema darant praplėtimą:<br />
lvextend --verbose --extents +100%FREE --resizefs /dev/mini_iscsi/scsi_storage<br />
<br />
== Over 16TB ==<br />
<br />
Jeigu mūsų saugykla viršija 16TB ir gauname štai tokį pranešimą:<br />
resize2fs: New size too large to be expressed in 32 bits<br />
Tuomet reikia failų sistemoje įgalinti 64bit adresavimą:<br />
tune2fs -O 64bit /dev/mapper/mini_iscsi-scsi_storage<br />
resize2fs -b /dev/mapper/mini_iscsi-scsi_storage<br />
lvextend --verbose --extents +100%FREE --resizefs /dev/mini_iscsi/scsi_storage<br />
<br />
'''Dėmesio!''' Jeigu e2fsprogs yra (1.43 ar senesnis), jis gali nepalaikyti 64bit optiono ir grąžinti unsupported žinutę, tuomet reikia įdiegti naujausią [http://e2fsprogs.sourceforge.net e2fsprogs].<br />
<br />
== Fizinio disko išėmimas ==<br />
<br />
Išimsime diską '''/dev/sde'''<br />
resize2fs /dev/mapper/mini_iscsi-scsi_storage 17T # Resizinam FS<br />
lvreduce -L 18T /dev/mapper/mini_iscsi-scsi_storage # lvolumas turi būti truputį didesnis, kad nekiltų problemų<br />
pvdisplay # Pažiūrime ar viskas ok?<br />
pvs # Pažiūrime ar viskas ok?<br />
pvmove /dev/sde1 # Išimame duomenis iš particijos<br />
vgreduce mini_iscsi /dev/sde1 # Išimame diską iš lvm<br />
pvremove /dev/sde1 # Pašaliname lvm particiją<br />
lvextend --verbose --extents +100%FREE --resizefs /dev/mapper/mini_iscsi-scsi_storage # Extendiname kiek ten yra likę laisvos vietos<br />
<br />
Jeigu pamiršote resize2fs paleisti su parametru -p (rodys progresą), progresą galėsite pamatyti tiktai pasinaudoję [[resize2fs|šiuo triuku]].<br />
<br />
== Po OS Reinstall (lvm aktyvavimas) ==<br />
<br />
apt-get install lvm2<br />
pvscan # parodys fizinį skirsį<br />
vgscan # parodys volume groupą<br />
modprobe dm-mod # Įgalins branduolio modulį<br />
vgchange -ay # Aktyvuos disus<br />
lvscan # Parodys loginius skirsnius, kuriuos galima primontuoti<br />
<br />
== Kita info ==<br />
<br />
Toliau, galime panaudoti šią šviežiai sukurtą LVM saugyklą kaip [[iscsi]] arba [[nfs]] tipo saugyklos tinklo resursą.<br />
<br />
[[Category:Tinklas]]<br />
[[Category:Serveriai]]<br />
[[Category:OrangePI]]<br />
{{Template:Distributions}}</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Resize2fs&diff=9580Resize2fs2023-11-09T19:09:13Z<p>\dev\null: Naujas puslapis: == Progreso nustatymas jau veikiančiame resize2fs == Sužinome '''proceso pid''' ps aux|grep resize2fs Attachinam '''strace į pid''' strace -e pread64,pwrite64 -p 28366 Ska...</p>
<hr />
<div><br />
== Progreso nustatymas jau veikiančiame resize2fs ==<br />
<br />
Sužinome '''proceso pid'''<br />
ps aux|grep resize2fs<br />
Attachinam '''strace į pid'''<br />
strace -e pread64,pwrite64 -p 28366<br />
Skaitom bėgančias eilutes<br />
pread64(3, "b^4\n\315\226z\212]\367,x<\255`\2346\324\307\202\253{\\\371\200L(\277\306m\276\35"..., 1048576, 22526158700544) = 1048576<br />
pwrite64(3, "b^4\n\315\226z\212]\367,x<\255`\2346\324\307\202\253{\\\371\200L(\277\306m\276\35"..., 1048576, 2272440602624) = 1048576<br />
Mums reikia funkcijos:<br />
pread(int fd, void *buf, size_t count, off_t offset)<br />
Aktualus '''pread funkcijos''' paskutinis parametras '''22526158700544''' tai disko lokacija kurią dabar skaito '''resize2fs''', skaičius tiesiog reikia pasiversti į suprantamus matavimo vienetus<br />
echo "22526158700544/1024/1024/1024"|bc # Gigabaitai<br />
echo "22526158700544/1024/1024/1024/1024"|bc # Terabaitai<br />
<br />
[[Category:Linux]]<br />
{{Template:Distributions}}</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Lvm&diff=9579Lvm2023-11-09T19:03:07Z<p>\dev\null: </p>
<hr />
<div><br />
apt-get install lvm2<br />
=== Paruošiame disk layout ===<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.20.40.png|600px]]<br />
=== Sukuriame fizinę žymę ===<br />
pvcreate /dev/sda1<br />
Patikrinam<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.23.49.png|600px]]<br />
=== LVM Grupė ===<br />
Sukuriame LVM grupę<br />
vgcreate mini_iscsi /dev/sda1<br />
Patikrinam<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.26.13.png|600px]]<br />
<br />
=== Loginis skirsnis ===<br />
<br />
lvcreate -l 100%FREE -n scsi_storage mini_iscsi<br />
Rezultatas:<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.37.30.png|600px]]<br />
<br />
Sukuriame failų sistemą, loginiame skirsnyje:<br />
mkfs.ext4 -v /dev/mini_iscsi/scsi_storage<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.40.14.png|600px]]<br />
<br />
=== Papildomas diskas ===<br />
<br />
Atėjo poreikis pridėti papildomą diską... Padarome disk layout su fdisk, kaip aprašyta viršuje, tuomet:<br />
pvcreate /dev/sdc1<br />
Pridedame į tą pačią grupę<br />
vgextend mini_iscsi /dev/sdc1<br />
Parašius '''vgs''' dabar turėtų rodyti kur kas didesnę talpą, beliko užpildyti ja failų sistema darant praplėtimą:<br />
lvextend --verbose --extents +100%FREE --resizefs /dev/mini_iscsi/scsi_storage<br />
<br />
== Over 16TB ==<br />
<br />
Jeigu mūsų saugykla viršija 16TB ir gauname štai tokį pranešimą:<br />
resize2fs: New size too large to be expressed in 32 bits<br />
Tuomet reikia failų sistemoje įgalinti 64bit adresavimą:<br />
tune2fs -O 64bit /dev/mapper/mini_iscsi-scsi_storage<br />
resize2fs -b /dev/mapper/mini_iscsi-scsi_storage<br />
lvextend --verbose --extents +100%FREE --resizefs /dev/mini_iscsi/scsi_storage<br />
<br />
'''Dėmesio!''' Jeigu e2fsprogs yra (1.43 ar senesnis), jis gali nepalaikyti 64bit optiono ir grąžinti unsupported žinutę, tuomet reikia įdiegti naujausią [http://e2fsprogs.sourceforge.net e2fsprogs].<br />
<br />
== Fizinio disko išėmimas ==<br />
<br />
Išimsime diską '''/dev/sde'''<br />
resize2fs /dev/mapper/mini_iscsi-scsi_storage 17T # Resizinam FS<br />
lvreduce -L 18T /dev/mapper/mini_iscsi-scsi_storage # lvolumas turi būti biški didesnis, kad nekiltų problemų<br />
pvdisplay # Pažiūrime ar viskas ok?<br />
pvs # Pažiūrime ar viskas ok?<br />
pvmove /dev/sde1 # Išimame duomenis iš particijos<br />
vgreduce mini_iscsi /dev/sde1 # Išimame diską iš lvm<br />
pvremove /dev/sde1 # Pašaliname lvm particiją<br />
lvextend -L <new size> /dev/mapper/mini_iscsi-scsi_storage # Extendiname kiek ten yra likę laisvos vietos<br />
resize2fs /dev/mapper/mini_iscsi-scsi_storage # Automatiškai praplės FS iki max<br />
<br />
Jeigu pamiršote resize2fs paleisti su parametru -p (rodys progresą), progresą galėsite pamatyti tiktai pasinaudoję [[resize2fs|šiuo triuku]].<br />
<br />
== Po OS Reinstall (lvm aktyvavimas) ==<br />
<br />
apt-get install lvm2<br />
pvscan # parodys fizinį skirsį<br />
vgscan # parodys volume groupą<br />
modprobe dm-mod # Įgalins branduolio modulį<br />
vgchange -ay # Aktyvuos disus<br />
lvscan # Parodys loginius skirsnius, kuriuos galima primontuoti<br />
<br />
== Kita info ==<br />
<br />
Toliau, galime panaudoti šią šviežiai sukurtą LVM saugyklą kaip [[iscsi]] arba [[nfs]] tipo saugyklos tinklo resursą.<br />
<br />
[[Category:Tinklas]]<br />
[[Category:Serveriai]]<br />
[[Category:OrangePI]]<br />
{{Template:Distributions}}</div>\dev\nullhttps://xn--n-soa.lt/w//index.php?title=Lvm&diff=9578Lvm2023-11-09T14:55:01Z<p>\dev\null: </p>
<hr />
<div><br />
apt-get install lvm2<br />
=== Paruošiame disk layout ===<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.20.40.png|600px]]<br />
=== Sukuriame fizinę žymę ===<br />
pvcreate /dev/sda1<br />
Patikrinam<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.23.49.png|600px]]<br />
=== LVM Grupė ===<br />
Sukuriame LVM grupę<br />
vgcreate mini_iscsi /dev/sda1<br />
Patikrinam<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.26.13.png|600px]]<br />
<br />
=== Loginis skirsnis ===<br />
<br />
lvcreate -l 100%FREE -n scsi_storage mini_iscsi<br />
Rezultatas:<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.37.30.png|600px]]<br />
<br />
Sukuriame failų sistemą, loginiame skirsnyje:<br />
mkfs.ext4 -v /dev/mini_iscsi/scsi_storage<br />
<br />
[[Vaizdas:Screenshot 2020-01-22 at 07.40.14.png|600px]]<br />
<br />
=== Papildomas diskas ===<br />
<br />
Atėjo poreikis pridėti papildomą diską... Padarome disk layout su fdisk, kaip aprašyta viršuje, tuomet:<br />
pvcreate /dev/sdc1<br />
Pridedame į tą pačią grupę<br />
vgextend mini_iscsi /dev/sdc1<br />
Parašius '''vgs''' dabar turėtų rodyti kur kas didesnę talpą, beliko užpildyti ja failų sistema darant praplėtimą:<br />
lvextend --verbose --extents +100%FREE --resizefs /dev/mini_iscsi/scsi_storage<br />
<br />
== Over 16TB ==<br />
<br />
Jeigu mūsų saugykla viršija 16TB ir gauname štai tokį pranešimą:<br />
resize2fs: New size too large to be expressed in 32 bits<br />
Tuomet reikia failų sistemoje įgalinti 64bit adresavimą:<br />
tune2fs -O 64bit /dev/mapper/mini_iscsi-scsi_storage<br />
resize2fs -b /dev/mapper/mini_iscsi-scsi_storage<br />
lvextend --verbose --extents +100%FREE --resizefs /dev/mini_iscsi/scsi_storage<br />
<br />
'''Dėmesio!''' Jeigu e2fsprogs yra (1.43 ar senesnis), jis gali nepalaikyti 64bit optiono ir grąžinti unsupported žinutę, tuomet reikia įdiegti naujausią [http://e2fsprogs.sourceforge.net e2fsprogs].<br />
<br />
== Fizinio disko išėmimas ==<br />
<br />
Išimsime diską '''/dev/sde'''<br />
resize2fs /dev/mapper/mini_iscsi-scsi_storage 17T # Resizinam FS<br />
lvreduce -L 18T /dev/mapper/mini_iscsi-scsi_storage # lvolumas turi būti biški didesnis, kad nekiltų problemų<br />
pvdisplay # Pažiūrime ar viskas ok?<br />
pvs # Pažiūrime ar viskas ok?<br />
pvmove /dev/sde1 # Išimame duomenis iš particijos<br />
vgreduce mini_iscsi /dev/sde1 # Išimame diską iš lvm<br />
pvremove /dev/sde1 # Pašaliname lvm particiją<br />
lvextend -L <new size> /dev/mapper/mini_iscsi-scsi_storage # Extendiname kiek ten yra likę laisvos vietos<br />
resize2fs /dev/mapper/mini_iscsi-scsi_storage # Automatiškai praplės FS iki max<br />
<br />
== Po OS Reinstall (lvm aktyvavimas) ==<br />
<br />
apt-get install lvm2<br />
pvscan # parodys fizinį skirsį<br />
vgscan # parodys volume groupą<br />
modprobe dm-mod # Įgalins branduolio modulį<br />
vgchange -ay # Aktyvuos disus<br />
lvscan # Parodys loginius skirsnius, kuriuos galima primontuoti<br />
<br />
== Kita info ==<br />
<br />
Toliau, galime panaudoti šią šviežiai sukurtą LVM saugyklą kaip [[iscsi]] arba [[nfs]] tipo saugyklos tinklo resursą.<br />
<br />
[[Category:Tinklas]]<br />
[[Category:Serveriai]]<br />
[[Category:OrangePI]]<br />
{{Template:Distributions}}</div>\dev\null