Portál AbcLinuxu, 6. května 2025 20:26
dmesg | grep microc [ 0.000000] Atom PSE erratum detected, BIOS microcode update recommended [ 0.068703] Atom PSE erratum detected, BIOS microcode update recommended [ 0.016000] Atom PSE erratum detected, BIOS microcode update recommended [ 9.450901] microcode: sig=0x106c2, pf=0x4, revision=0x208 [ 9.516652] microcode: Microcode Update Driver: v2.01Jak moc je nutný update BIOSu z důvodu bezpečnosti ? Je rozdíl používat Debian Stretch (kernel 4.9.xxx) nebo Ubuntu 16.04 (kernel 4.4.0-123) ? (opět z pohledu bezpečnosti)
Řešení dotazu:
sudo /usr/sbin/iucode_tool -tb -lS /lib/firmware/intel-ucode/*
sysvinit
. Tam není možné nainstalovat iucode-tool
takže ani intel-microcode
.
dmesg:
[ 0.000000] Atom PSE erratum detected, BIOS microcode update recommended [ 0.000000] Disabled fast string operations [ 0.000000] x86/fpu: Legacy x87 FPU detected. [ 0.000000] x86/fpu: Using 'eager' FPU context switches. [ 0.000000] e820: BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000008efff] usable [ 0.000000] BIOS-e820: [mem 0x000000000008f000-0x000000000009ffff] reserved [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007f532fff] usable [ 0.000000] BIOS-e820: [mem 0x000000007f533000-0x000000007f53afff] reserved [ 0.000000] BIOS-e820: [mem 0x000000007f53b000-0x000000007f5cafff] usable [ 0.000000] BIOS-e820: [mem 0x000000007f5cb000-0x000000007f5cefff] reserved [ 0.000000] BIOS-e820: [mem 0x000000007f5cf000-0x000000007f65ffff] usable [ 0.000000] BIOS-e820: [mem 0x000000007f660000-0x000000007f6effff] ACPI NVS [ 0.000000] BIOS-e820: [mem 0x000000007f6f0000-0x000000007f6f2fff] usable [ 0.000000] BIOS-e820: [mem 0x000000007f6f3000-0x000000007f6fefff] ACPI data [ 0.000000] BIOS-e820: [mem 0x000000007f6ff000-0x000000007f6fffff] usable [ 0.000000] BIOS-e820: [mem 0x000000007f700000-0x000000007fffffff] reserved [ 0.000000] BIOS-e820: [mem 0x00000000f0000000-0x00000000ffffffff] reserved [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] SMBIOS 2.4 present. [ 0.000000] DMI: /D945GCLF, BIOS LF94510J.86A.0067.2008.0619.1959 06/19/2008 [ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved [ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable [ 0.000000] e820: last_pfn = 0x7f700 max_arch_pfn = 0x1000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-DFFFF uncachable [ 0.000000] E0000-E0FFF write-protect [ 0.000000] E1000-E7FFF uncachable [ 0.000000] E8000-E8FFF write-protect [ 0.000000] E9000-EFFFF uncachable [ 0.000000] F0000-F0FFF write-protect [ 0.000000] F1000-F7FFF uncachable [ 0.000000] F8000-F8FFF write-protect [ 0.000000] F9000-FFFFF uncachable [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask 080000000 write-back [ 0.000000] 1 base 07F800000 mask 0FF800000 uncachable [ 0.000000] 2 base 07F700000 mask 0FFF00000 uncachable [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT [ 0.000000] found SMP MP-table at [mem 0x000fe200-0x000fe20f] mapped at [c00fe200] [ 0.000000] initial memory mapped: [mem 0x00000000-0x0bdfffff] [ 0.072316] Atom PSE erratum detected, BIOS microcode update recommended [ 0.076009] Disabled fast string operations [ 0.080009] CPU: Physical Processor ID: 0 [ 0.084007] CPU: Processor Core ID: 0 [ 0.088012] mce: CPU supports 5 MCE banks [ 0.092017] CPU0: Thermal monitoring enabled (TM1) [ 0.096012] process: using mwait in idle threads [ 0.100018] Last level iTLB entries: 4KB 32, 2MB 0, 4MB 0 [ 0.104009] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 8, 1GB 0 [ 0.108385] Freeing SMP alternatives memory: 24K [ 0.118167] ftrace: allocating 24079 entries in 48 pages [ 0.136212] smpboot: Max logical packages: 4 [ 0.140021] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.144465] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.188000] smpboot: CPU0: Intel(R) Atom(TM) CPU 230 @ 1.60GHz (family: 0x6, model: 0x1c, stepping: 0x2) [ 0.200009] Performance Events: PEBS fmt0+, LBR disabled due to erratumAtom events, Intel PMU driver. [ 0.220008] ... version: 3 [ 0.224005] ... bit width: 40 [ 0.228005] ... generic registers: 2 [ 0.232005] ... value mask: 000000ffffffffff [ 0.236005] ... max period: 000000007fffffff [ 0.240007] ... fixed-purpose events: 3 [ 0.244005] ... event mask: 0000000700000003 [ 0.252096] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter. [ 0.260391] CPU 1 irqstacks, hard=f71a6000 soft=f71a8000 [ 0.260396] x86: Booting SMP configuration: [ 0.264011] .... node #0, CPUs: #1 [ 0.016000] Initializing CPU#1 [ 0.016000] Atom PSE erratum detected, BIOS microcode update recommended [ 0.016000] Disabled fast string operations [ 0.444058] x86: Booted up 1 node, 2 CPUs [ 0.448011] smpboot: Total of 2 processors activated (6384.46 BogoMIPS) [ 0.456326] devtmpfs: initialized [ 0.460730] PM: Registering ACPI NVS region [mem 0x7f660000-0x7f6effff] (589824 bytes) [ 0.552278] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.672020] futex hash table entries: 1024 (order: 4, 65536 bytes) [ 0.744175] pinctrl core: initialized pinctrl subsystem [ 0.808429] NET: Registered protocol family 16 [ 0.872019] cpuidle: using governor ladder [ 0.932016] cpuidle: using governor menu [ 0.976147] ACPI: bus type PCI registered [ 1.024013] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 [ 1.104052] PCI: MMCONFIG for domain 0000 [bus 00-7f] at [mem 0xf0000000-0xf7ffffff] (base 0xf0000000) [ 1.212013] PCI: MMCONFIG at [mem 0xf0000000-0xf7ffffff] reserved in E820 [ 1.296010] PCI: Using MMCONFIG for extended config space [ 1.360008] PCI: Using configuration type 1 for base access [ 1.708022] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM [ 1.712015] acpi PNP0A03:00: [Firmware Info]: MMCONFIG for domain 0000 [bus 00-7f] only partially covers this bridge [ 1.720026] PCI host bridge to bus 0000:00 [ 9.443363] mpls_gso: MPLS GSO support [ 9.488810] microcode: sig=0x106c2, pf=0x4, revision=0x208 [ 9.554553] microcode: Microcode Update Driver: v2.01 [ 9.659632] Using IPI No-Shortcut mode [ 9.704923] registered taskstats version 1 [ 9.753877] zswap: loaded using pool lzo/zbud [ 9.806121] ima: No TPM chip found, activating TPM-bypass! [ 9.872360] rtc_cmos 00:01: setting system clock to 2018-05-04 11:00:10 UTC (1525431610) [ 9.969338] PM: Hibernation image not present or could not be loaded. [ 9.970149] Freeing unused kernel memory: 756K [ 64.442061] ACPI: Power Button [PWRF] [ 64.667886] intel_rng: Firmware space is locked read-only. If you can't or intel_rng: don't want to disable this in firmware setup, and if intel_rng: you are certain that your system has a functional intel_rng: RNG, try using the 'no_fwh_detect' option. [ 65.143115] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 65.225821] ACPI Warning: SystemIO range 0x0000000000000428-0x000000000000042F conflicts with OpRegion 0x0000000000000428-0x0000000000000429 (\GPE0) (20160831/utaddress-247) [ 65.411178] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
dmesg | grep Atom [ 0.080000] smpboot: CPU0: Intel(R) Atom(TM) CPU 230 @ 1.60GHz (family: 0x6, model: 0x1c, stepping: 0x2) [ 0.080000] Performance Events: PEBS fmt0+, LBR disabled due to erratumAtom events, Intel PMU driver.V debianu bez
sysvinit
:
/usr/sbin/iucode_tool -tb -lS /lib/firmware/intel-ucode/* /usr/sbin/iucode_tool: system has processor(s) with signature 0x000106c2 microcode bundle 1: /lib/firmware/intel-ucode/06-01-01 microcode bundle 2: /lib/firmware/intel-ucode/06-01-02 microcode bundle 3: /lib/firmware/intel-ucode/06-01-06 microcode bundle 4: /lib/firmware/intel-ucode/06-01-07 microcode bundle 5: /lib/firmware/intel-ucode/06-01-09 microcode bundle 6: /lib/firmware/intel-ucode/06-03-02 microcode bundle 7: /lib/firmware/intel-ucode/06-03-03 microcode bundle 8: /lib/firmware/intel-ucode/06-03-04 microcode bundle 9: /lib/firmware/intel-ucode/06-05-00 microcode bundle 10: /lib/firmware/intel-ucode/06-05-01 microcode bundle 11: /lib/firmware/intel-ucode/06-05-02 microcode bundle 12: /lib/firmware/intel-ucode/06-05-03 microcode bundle 13: /lib/firmware/intel-ucode/06-06-00 microcode bundle 14: /lib/firmware/intel-ucode/06-06-05 microcode bundle 15: /lib/firmware/intel-ucode/06-06-0a microcode bundle 16: /lib/firmware/intel-ucode/06-06-0d microcode bundle 17: /lib/firmware/intel-ucode/06-07-01 microcode bundle 18: /lib/firmware/intel-ucode/06-07-02 microcode bundle 19: /lib/firmware/intel-ucode/06-07-03 microcode bundle 20: /lib/firmware/intel-ucode/06-08-00 microcode bundle 21: /lib/firmware/intel-ucode/06-08-01 microcode bundle 22: /lib/firmware/intel-ucode/06-08-03 microcode bundle 23: /lib/firmware/intel-ucode/06-08-06 microcode bundle 24: /lib/firmware/intel-ucode/06-08-0a microcode bundle 25: /lib/firmware/intel-ucode/06-09-05 microcode bundle 26: /lib/firmware/intel-ucode/06-09-06 microcode bundle 27: /lib/firmware/intel-ucode/06-0a-00 microcode bundle 28: /lib/firmware/intel-ucode/06-0a-01 microcode bundle 29: /lib/firmware/intel-ucode/06-0a-04 microcode bundle 30: /lib/firmware/intel-ucode/06-0b-01 microcode bundle 31: /lib/firmware/intel-ucode/06-0b-04 microcode bundle 32: /lib/firmware/intel-ucode/06-0d-06 microcode bundle 33: /lib/firmware/intel-ucode/06-0d-08 microcode bundle 34: /lib/firmware/intel-ucode/06-0e-08 microcode bundle 35: /lib/firmware/intel-ucode/06-0e-0c microcode bundle 36: /lib/firmware/intel-ucode/06-0f-02 microcode bundle 37: /lib/firmware/intel-ucode/06-0f-06 microcode bundle 38: /lib/firmware/intel-ucode/06-0f-07 microcode bundle 39: /lib/firmware/intel-ucode/06-0f-0a microcode bundle 40: /lib/firmware/intel-ucode/06-0f-0b microcode bundle 41: /lib/firmware/intel-ucode/06-0f-0d microcode bundle 42: /lib/firmware/intel-ucode/06-16-01 microcode bundle 43: /lib/firmware/intel-ucode/06-17-06 microcode bundle 44: /lib/firmware/intel-ucode/06-17-07 microcode bundle 45: /lib/firmware/intel-ucode/06-17-0a microcode bundle 46: /lib/firmware/intel-ucode/06-1a-04 microcode bundle 47: /lib/firmware/intel-ucode/06-1a-05 microcode bundle 48: /lib/firmware/intel-ucode/06-1c-01 microcode bundle 49: /lib/firmware/intel-ucode/06-1c-02 microcode bundle 50: /lib/firmware/intel-ucode/06-1c-0a microcode bundle 51: /lib/firmware/intel-ucode/06-1d-01 microcode bundle 52: /lib/firmware/intel-ucode/06-1e-05 microcode bundle 53: /lib/firmware/intel-ucode/06-25-02 microcode bundle 54: /lib/firmware/intel-ucode/06-25-05 microcode bundle 55: /lib/firmware/intel-ucode/06-26-01 microcode bundle 56: /lib/firmware/intel-ucode/06-2a-07 microcode bundle 57: /lib/firmware/intel-ucode/06-2d-06 microcode bundle 58: /lib/firmware/intel-ucode/06-2d-07 microcode bundle 59: /lib/firmware/intel-ucode/06-2f-02 microcode bundle 60: /lib/firmware/intel-ucode/06-3a-09.initramfs microcode bundle 61: /lib/firmware/intel-ucode/06-3c-03.initramfs microcode bundle 62: /lib/firmware/intel-ucode/06-3d-04.initramfs microcode bundle 63: /lib/firmware/intel-ucode/06-3e-04 microcode bundle 64: /lib/firmware/intel-ucode/06-3e-06 microcode bundle 65: /lib/firmware/intel-ucode/06-3e-07 microcode bundle 66: /lib/firmware/intel-ucode/06-3f-02.initramfs microcode bundle 67: /lib/firmware/intel-ucode/06-3f-04.initramfs microcode bundle 68: /lib/firmware/intel-ucode/06-45-01.initramfs microcode bundle 69: /lib/firmware/intel-ucode/06-46-01.initramfs microcode bundle 70: /lib/firmware/intel-ucode/06-47-01.initramfs microcode bundle 71: /lib/firmware/intel-ucode/06-4e-03 microcode bundle 72: /lib/firmware/intel-ucode/06-4f-01 microcode bundle 73: /lib/firmware/intel-ucode/06-55-04 microcode bundle 74: /lib/firmware/intel-ucode/06-56-02.initramfs microcode bundle 75: /lib/firmware/intel-ucode/06-56-03 microcode bundle 76: /lib/firmware/intel-ucode/06-56-04 microcode bundle 77: /lib/firmware/intel-ucode/06-5e-03 microcode bundle 78: /lib/firmware/intel-ucode/06-8e-09 microcode bundle 79: /lib/firmware/intel-ucode/06-8e-0a microcode bundle 80: /lib/firmware/intel-ucode/06-9e-09 microcode bundle 81: /lib/firmware/intel-ucode/0f-00-07 microcode bundle 82: /lib/firmware/intel-ucode/0f-00-0a microcode bundle 83: /lib/firmware/intel-ucode/0f-01-01 microcode bundle 84: /lib/firmware/intel-ucode/0f-01-02 microcode bundle 85: /lib/firmware/intel-ucode/0f-01-03 microcode bundle 86: /lib/firmware/intel-ucode/0f-02-02 microcode bundle 87: /lib/firmware/intel-ucode/0f-02-04 microcode bundle 88: /lib/firmware/intel-ucode/0f-02-05 microcode bundle 89: /lib/firmware/intel-ucode/0f-02-06 microcode bundle 90: /lib/firmware/intel-ucode/0f-02-07 microcode bundle 91: /lib/firmware/intel-ucode/0f-02-09 microcode bundle 92: /lib/firmware/intel-ucode/0f-03-02 microcode bundle 93: /lib/firmware/intel-ucode/0f-03-03 microcode bundle 94: /lib/firmware/intel-ucode/0f-03-04 microcode bundle 95: /lib/firmware/intel-ucode/0f-04-01 microcode bundle 96: /lib/firmware/intel-ucode/0f-04-03 microcode bundle 97: /lib/firmware/intel-ucode/0f-04-04 microcode bundle 98: /lib/firmware/intel-ucode/0f-04-07 microcode bundle 99: /lib/firmware/intel-ucode/0f-04-08 microcode bundle 100: /lib/firmware/intel-ucode/0f-04-09 microcode bundle 101: /lib/firmware/intel-ucode/0f-04-0a microcode bundle 102: /lib/firmware/intel-ucode/0f-06-02 microcode bundle 103: /lib/firmware/intel-ucode/0f-06-04 microcode bundle 104: /lib/firmware/intel-ucode/0f-06-05 microcode bundle 105: /lib/firmware/intel-ucode/0f-06-08 selected microcodes: 048/001: sig 0x000106c1, pf_mask 0x01, 2007-12-03, rev 0x0109, size 5120 049/001: sig 0x000106c2, pf_mask 0x08, 2009-04-10, rev 0x0219, size 5120 049/002: sig 0x000106c2, pf_mask 0x04, 2009-04-10, rev 0x0218, size 5120 049/003: sig 0x000106c2, pf_mask 0x01, 2009-04-10, rev 0x0217, size 5120 050/001: sig 0x000106ca, pf_mask 0x10, 2009-08-25, rev 0x0107, size 5120 050/002: sig 0x000106ca, pf_mask 0x08, 2009-08-25, rev 0x0107, size 5120 050/003: sig 0x000106ca, pf_mask 0x04, 2009-08-25, rev 0x0107, size 5120 050/004: sig 0x000106ca, pf_mask 0x01, 2009-08-25, rev 0x0107, size 5120
# head -n 2 /var/log/dmesg [ 0.000000] microcode: microcode updated early to revision 0x17, date = 2005-04-22 [ 0.000000] Linux version 4.9.0-6-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.88-1 (2018-04-29)
# dpkg -l | grep sysvinit ii sysvinit-core 2.88dsf-59.9 amd64 System-V-like init utilities ii sysvinit-utils 2.88dsf-59.9 amd64 System-V-like utilities # dpkg -l | grep iucode ii iucode-tool 2.1.1-1 amd64 Intel processor microcode tool
Synaptic
a apt-get
píše, že to nejde nainstalovat.
Nepíšou proč to nejde.
$ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 9.4 (stretch) Release: 9.4 Codename: stretch $ uname -a Linux debian 4.9.0-6-686-pae #1 SMP Debian 4.9.88-1 (2018-04-29) i686 GNU/Linux
microcode-20180425.tgz
# iucode_tool -S --write-earlyfw=/boot/early_ucode.cpio /lib/firmware/intel-ucode/* iucode_tool: system has processor(s) with signature 0x000106c2 iucode_tool: microcode bundle /lib/firmware/intel-ucode/list: unknown microcode formatZnamená to, že mikrokód není pro tento procesor ?
intel-ucode/*Mě přijde že se snažíš zapsat nějakej texťák se seznamem souborů (z té expanze hvězdičkou). Odpověď jsi už měl v tom minulém vlákně:
V debianu bez sysvinit:Píše ti to, že máš signaturu 0x000106c2, takže to bude ten soubor 049, což odpovídá řádkuselected microcodes: 048/001: sig 0x000106c1, pf_mask 0x01, 2007-12-03, rev 0x0109, size 5120 049/001: sig 0x000106c2, pf_mask 0x08, 2009-04-10, rev 0x0219, size 5120 049/002: sig 0x000106c2, pf_mask 0x04, 2009-04-10, rev 0x0218, size 5120 049/003: sig 0x000106c2, pf_mask 0x01, 2009-04-10, rev 0x0217, size 5120 050/001: sig 0x000106ca, pf_mask 0x10, 2009-08-25, rev 0x0107, size 5120 050/002: sig 0x000106ca, pf_mask 0x08, 2009-08-25, rev 0x0107, size 5120
microcode bundle 49: /lib/firmware/intel-ucode/06-1c-02. Kdyžtak si to ověř přímo na tom souboru, že ho to matchne (nebo dej prostě takovej pattern, aby to bralo jen ty soubory s mikrokódem, nejsem si jistý jak přesně to maskování přesně funguje, takže pokud to na tom druhým debianu našlo i kompatibilní mikrokód v souboru 048 a 050, tak bych je ověřil taky samozřejmě). Ale asi tě zklamu, ten mikrokód je z roku 2009, což je věčnost. Pár chyb to určitě opraví, ale pokud je ten Atom out of order, tak na něm meltdown i spectre pojede pořád.
# iucode_tool -S --write-earlyfw=/boot/early_ucode.cpio /lib/firmware/intel-ucode/06-1c-02 iucode_tool: system has processor(s) with signature 0x000106c2 iucode_tool: Writing selected microcodes to: /boot/early_ucode.cpioFunguje to a firmware je pak stejnej jako od debianu.
Pár chyb to určitě opraví, ale pokud je ten Atom out of order, tak na něm meltdown i spectre pojede pořád.Kernel žádnou ochranu nemá ?
Kernel žádnou ochranu nemá ?Má ale je neúčinná - jak chceš SW zablokovat HW chybu v CPU to prostě nejde - právě že částečně se to řeší tím novým mikrokodem, ale taky to nějak nejde stačí se kouknout kolikrát ho už změnily a kolikrát řekly používat pak zase nepoužívat atd......
049/002: sig 0x000106c2, pf_mask 0x04, 2009-04-10, rev 0x0218, size 5120V tom balíku jsou mikrokódy +- všech procesorů, co kdy Intel vyrobil (a měly možnost updatu), takže i když vydá novej balík, tak to neznamená, že jsou updatovaný všechny modely v tom balíku. Jelikož je ten konkrétné mikrokód z roku 2009, tak pro něj Intel opravu chyby z roku 2018 nevydal. On víceméně na staré lowendy kašle a dost možná by to ani opravit nešlo. Oprava v kernelu na aktuální formu meltdownu je, ale bez kooperace s novým mikrokódem výrazně snižuje výkon. "Oprava" spectre spočívá v tom, že se rekompiluje userspace vylepšeným kompilátorem. Jak je na tom oprava branch-scope nevím, ale je to IMO ještě komplikovanější mechanismus než spectre. A těch 8 nových spectre-ng chyb ještě nebylo zveřejněno. Ale jak jsem psal, tak takhle starý CPU intel opravovat nebude (mám c2d z té stejné doby a taky nic).
Důležitý je tento datum:Rozumím tomu a su s tím smířenej. Zajímalo mě, co je v balíku novýho.049/002: sig 0x000106c2, pf_mask 0x04, 2009-04-10, rev 0x0218, size 5120V tom balíku jsou mikrokódy +- všech procesorů, co kdy Intel vyrobil (a měly možnost updatu), takže i když vydá novej balík, tak to neznamená, že jsou updatovaný všechny modely v tom balíku. Jelikož je ten konkrétné mikrokód z roku 2009, tak pro něj Intel opravu chyby z roku 2018 nevydal. On víceméně na staré lowendy kašle a dost možná by to ani opravit nešlo.
iucode_tool: microcode bundle /lib/firmware/intel-ucode/list: unknown microcode formatNie, tá informácia znamená že si do adresára
/lib/firmware/
nahral obsah archívu s mikrokódmi od intelu vrátane ich textového zoznamu intel-ucode/list
ktorý tam nemá čo hľadať.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.