Portál AbcLinuxu, 7. května 2025 20:27
Aktuální verze jádra: 2.6.16.16. Citáty týdne: Andrew Morton, Russell King. O budoucnosti smbfs. Velké změny v SATA. Recenze knihy: User Mode Linux. Varování při kompilaci jádra.
Aktuální verze jádra je 2.6.16.16, vydaná 10. května. Obsahuje opět opravu bezpečnostní chyby; tentokrát DoS problému v zamykacím kódu souborových systémů.
Aktuální předverze je 2.6.17-rc4, vydaná 11. května. Jsou to téměř všechno samé opravy; Linus k tomu řekl: je na čase zpomalit před 2.6.17. Podrobnosti najdete v dlouhém changelogu.
Od vydání -rc4 bylo do hlavního git repozitáře začleněno přes 100 patchů. Skoro všechny jsou - jak jinak - opravy.
Aktuální -mm strom je 2.6.17-rc4-mm1. Mezi nedávné změny patří CacheFS, patch, díky kterému jsou operace s adresním prostorem konstantní, odsunutí smbfs (vizte níže), patche pro počítání doby, po kterou úlohy čekají, eCryptfs a klibc - odlehčená knihovna C, kterou využívá kód initramfs.
Mohl bych si tu otevřít krámek s použitými papírovými pytlíky.
Poznámka: Pytlík z hnědého papíru (brown paper bag) je ustálené rčení označující chybu, která je tak trapně zřejmá, že ten, kdo je za ni zodpovědný, by měl nosit na hlavě papírový pytlík, aby ho na internetu nikdo nepoznal... Jako první použil papírový pytlík Linus Torvalds po vydání jádra 2.2. Andrew Morton reagoval citovaným posteskem na to, že se v kódu, který se mu dostává do rukou, nachází tolik "brown paper bag bugs", že by si z prodávání těchto pytlíků mohl udělat živnost.
Myslím, že budeme skutečně potřebovat Linux V2 - předělávku. Zdá se, že opravováním jednoduchých chyb vznikají další chyby, což znamená, že míříme k noční můře každého správce.
-- Russell King
Smbfs umožňuje linuxovým systémům připojovat souborové systémy exportované protokolem SMB. Tím pádem lze využít pro přístup k souborům exportovaným z windows systému. Za dobu své existence byl smbfs velmi využívaný, ale nedávno jej začal předbíhat novější souborový systém CIFS. CIFS se v tuto chvíli těší pozornosti téměř všech vývojářů a většina uživatelů už na něj přešla (nebo by měla).
Jako příklad rozdílného přístupu ke správě smbfs a CIFS může posloužit jádro 2.6.16.11, které obsahovalo opravu bezpečnostního problému v kódu CIFS. Ačkoliv má CIFS kořeny v smbfs, nikdo tomu nevěnoval tolik pozornosti, aby si uvědomil, že smbfs by mohlo trpět stejným problémem. Takže zatímco 2.6.16.11 opravilo problém v CIFS 24. dubna, odpovídající oprava pro smbfs (která si vynutila 2.6.16.14), se objevila až 4. května, o jedenáct dní později. Během té doby byl smbfs zranitelný kvůli chybě, o které se vědělo.
Jádro 2.6.17-rc4-mm1 odráží stav věcí patchem, který smbfs označuje jako zastaralý a určený k pozdějšímu odstranění. Všem zbývajícím uživatelům se doporučuje přejít na CIFS. Pro některé uživatele už přišlo rozhodnutí dříve - jádro ve Fedora Core 5 smbfs nepodporuje. Vzhledem k tomu, že je v jádře alternativa připravená hned k použití, neměla by tato migrace představovat velký problém.
Je to pěkný plán, ale zůstává jedna menší potíž: CIFS neumí pracovat se systémy Windows 95 a Windows 98. Bez smbfs nebudou uživatelé moci připojovat sdílené oddíly exportované z hostitelů, na kterých běží tyto staré verze Windows. Někteří to komentovali tak, že jde o příliš staré verze, než aby musely být podporovány, ale Linus to nebere:
Nezbavujeme se funkcí jen proto, že jsou považovány za "zbytečné". Dokud smbfs někdo skutečně používá, a dokud jsou tito uživatelé ochotni testovat a případně posílat patche, když něco nefunguje, neměli bychom to pouštět.
Andrew Morton se nechal slyšet, že podpora Windows 9x pro CIFS je na cestě, a měla by snad být hotová pro zařazení do 2.6.18. Pokud to tak dopadne, mohlo by jádro 2.6.18 obsahovat zmínku o zastaralosti smbfs, které by bylo do konce roku označeno jako "nefunkční". Pro ty z vás, kdo ještě používáte smbfs: byli jste varováni.
Jeff Garzik nedávno oznámil, že začlenil velký balík patchů do subsystému SATA: Bude-li vše správně fungovat, měla by tato aktualizace zlepšit zacházení s chybami, vyřešit několik dlouhodobých a obtížných chyb a poskytnout solidní základ pro budoucí přidávání zajímavých funkcí. Plánuje zařadit nový kód do jádra 2.6.18, jakmile začne jeho vývojová fáze. Výsledkem by mohlo být výrazné zlepšení situace linuxových uživatelů SATA, z nichž mnozí se již nějakou dobu potýkají s různými problémy.
Patche byly odeslány do konference linux-ide. Jde o impozantní seznam: 122 patchů rozdělených do 11 částí. Záplavu kódu má na svědomí především Tejun Heo, i když Jens Axboe a Albert Lee také významně přispěli. Shrnutí připravovaných změn:
Zcela přepracované zpracovávání chyb v libata. Tento kód představuje přibližně třetinu z celého balíku patchů a dává do pořádku spoustu věcí. Vytváří modularizovaný mechanismus pro zpracovávání chyb, který nízkoúrovňovým ovladačům umožňuje zasáhnout a změnit reakci v různých chvílích procesu. Paměť potřebná pro zpracování chyb je teď alokována předem, což minimalizuje možnost komplikací v okamžiku, kdy už to jde s věcmi z kopce. Pro zaznamenávání chyb je vyhrazen zvláštní kruhový buffer. Informace jsou pak využity např. kódem pro obnovu, který pozná, že chyb je příliš mnoho a je potřeba snížit rychlost přenosu.
Výsledkem této práce by měl být o hodně robustnější SATA subsystém, který se dokáže vzpamatovat z mnohem širšího okruhu chyb.
Nová, programovaná I/O smyčka, která místo dotazování řadiče z vlákna jádra používá přerušení. V případech, kdy je potřeba programovaný I/O, by měl být nový kód efektivnější.
Native Command Queuing (NCQ) - nativní řazení příkazů. NCQ je SATA verzí TCQ (tagged command queuing - řazení označených příkazů) - schopnosti zpracovávat najednou několik I/O požadavků na stejnou mechaniku. NCQ odstraňuje nevyužitý čas mezi dokončením jednoho a zadáním druhého příkazu. Ale hlavní výhodou je řazení operací. Linuxový blokový I/O subsystém se snaží vydávat blokové I/O požadavky v efektivním pořadí, ale je nutné trochu hádat. Není totiž možné vědět, jak jsou bloky na disku ve skutečnosti uspořádány. Mechanika však ví velmi dobře, kde jednotlivé bloky jsou, takže může provádět optimalizaci pořadí požadavků. Výsledkem může být nemalé zvýšení výkonu.
Linuxová implementace NCQ zvládne až 32 současných operací - i když jak mechanika, tak ovladač mohou toto číslo snížit. Nevím o žádných výkonnostních testech, které by v souvislosti s touto funkcí proběhly.
Podpora hotplug je další významnou částí balíku patchů. S těmito úpravami si SATA vrstva dokáže poradit s disky, které jsou přidávány a odebírány za běhu - za předpokladu, že tuto funkci podporuje hardware. Součástí je také možnost "warmplug" (hot - horký, warm - teplý) určená pro omezenější hardware - uživatel si může na běžícím systému vyžádat přidání nebo odebrání disků.
Do libata byla přidána nová vrstva (ata_link); ata_link se stará o fyzické připojení disků. Hlavní motivací pro ata_link je pravděpodobně podpora SATA "násobičů" portů, které rozšiřují počet disků, které lze připojit do systému. Stávající kód násobiče podporuje přepínací režim "informační struktura rámce", při kterém mohou být všechny připojené disky aktivní naráz. Prozatím to funguje jen s ovladačem sil24, ale podpora dalších se určitě objeví.
Většina kódu byla vyvíjena a diskutována nějaký čas, takže mezi (některými) vývojáři převládá názor, že by celý balík mohl jít do jádra 2.6.18, ačkoliv hotplug, ata_link a násobič portů možná budou muset počkat na další verzi. Andrew Morton vyjádřil obavy ze začlenění tolika kódu, když stále existuje poměrně dlouhý seznam nevyřešených SATA chyb. Jeff odpověděl, že nový kód mnohé z těchto chyb opraví a usnadní vystopování těch zbývajících. Jak to tak vypadá, 2.6.18 bude tedy asi obsahovat velmi vylepšené SATA.
Pro Linux existuje hodně virtualizačních technologií, z nichž některé jsou poslední rok nebo dva hodně na výsluní. Jedna z nejstarších a nejzajímavějších se však drží spíše při zemi. User-mode Linux (UML), který implementoval Jeff Dike, přistupuje k virtualizaci unikátním způsobem. UML jádro běží v procesu na běžném linuxovém hostiteli. Jde v podstatě o speciální port jádra určený k provozu v rámci jiného linuxového systému. Díky tomu se UML na hostiteli jeví jako řada běžných procesů; lze je spravovat (a debuggovat) jako jakýkoliv jiný strom procesů.
UML může zpočátku trochu nahánět strach. Přináší spoustu nových zkratek a celou sadu konfiguračních voleb. Jako u mnoha dalších částí jádra nebyla dokumentace k UML vždy zrovna dokonalá. Takže vydání knihy User Mode Linux od Jeffe Dikea je vítanou událostí. Jde o součást Open Source Series Bruce Perense, a díky tomu bude později letos vydána s Open Content License. Prozatím je nutné knihu získat postaru. Zajímáte-li se však o UML, nebudou to vyhozené peníze.
Kniha má formu tutoriálu a začíná s úvodem do UML a virtualizace obecně. Nabízí krok za krokem postup jednoduchým UML sezením a pak představuje virtuální disky a síťová rozhraní.
Jádrem knihy je několik kapitol o správě UML a propojení s hostitelským systémem (a dalšími instancemi UML). Takže je tam kapitola o správě souborových systémů, včetně podrobností o tom, jak poskytnout omezený přístup k souborovým systémům hostitele. Také detailní kapitola o síťování. UML nabízí několik možných sítových transportů, které lze použít k vytvoření izolovaných sítí pro UML systémy, nebo k propojení těchto systémů s okolním světem. Kapitola pojednává o všech a poskytuje také návod usnadňující výběr mezi nimi. Nechybí kapitola o rozhraní pro správu UML.
Několik koncových kapitol se zabývá konfigurací UML pro specifické úlohy. Kapitola 11 přibližuje kompilaci UML ze zdrojových kódů. Z pohledu recenzenta je na tuto kapitolu trochu pozdě; až do této chvíle se všude očekávalo, že UML je na systému prostě k dispozici. Některé distribuce mají balíčky s UML, jiné ne. Takže nějaký časnější návod k sestavení UML systému a vytvoření počátečního souborového systému pro jeho nabootování by se hodil. Kniha je uzavřena povídáním o (ambiciózních) plánech do budoucna a dvěma referenčními oddíly.
Chybí informace o tom, jaká verze UML je popisována - nešťastné opomenutí. Vzorový výstup bootu v úvodní kapitole ukazuje jádra 2.6.10 a 2.6.11-rc.
Pominu-li menší nedostatky, je těžké Jeffově knize něco vytknout. Poskytuje velmi užitečnou referenci pro důležitý linuxový virtualizační mechanismus. Pro UML existuje množství různých využití, včetně vývoje jádra, konsolidace serverů, vývoje embedded systémů, experimentování s různými distribucemi nebo prostě potěšení z provozu rozsáhlého clusteru na notebooku. Ať už je to co chce, bude tato kniha pro uživatele UML hodnotným přírůstkem na poličku.
Následující obsah je © KernelTrap
11. kvě, originál
Nedávná série patchů odeslaných do konference linux-kernel se pokoušela o pročištění varovných hlášek kompilátoru a vedla k mnoha diskuzím o tom, jak by měla být varování opravena. Jedna z debat se týkala varování způsobeného proměnnou, o které si kompilátor chybně myslel, že nebyla inicializována. Alan Cox k tomu řekl: Skrývat podobná varování může být nebezpečné, protože to později skryje i skutečné problémy. A pokračoval v tom smyslu, že dané varování je dobrá věc, protože vývojářům připomíná, aby svůj kód neustále kontrolovali: Dokud tam to varování bude, lidi to čas od času zkontrolují.
Al Viro to řekl trošku příkřeji: Vůbec. Nikdy. Neopravujte. Správný. Kód. Protože dříve nebo později zakamuflujete opravdovou chybu. Je daleko lepší odmítnout patche, které $NÁSTROJ umlčí, než riskovat 'opravu' naslepo, která schová skutečný bug. Pokud neukážete existující posloupnost kódu směřující k použití bez inicializace (a musí to být předvedeno ve zprávě s poslaným patchem, aby bylo možné věc ověřit jako opravdový problém) jsou tyto patche v lepším případě bezcenné, v horším nebezpečné.
Andrew Morton poukázal na to, že jádro generuje příliš mnoho varování, a skutečné chyby se v té změti ztrácí. Občas dostávám patche, které přidávají nová varování, a tato varování označují opravdové chyby. Vývojář prostě varování v té záplavě blbostí přehlédne. A pokračoval návrhem na ztlumení určitých druhů varování při použití různých verzí GCC. Al Viro místo toho doporučil opravit GCC: GCC by mělo být rozumnější. Vážně, ty nesmysly spouští i některé velmi běžné případy - např. funkce, která vrací buď chybu nebo 0 a v případě úspěchu ukládá hodnotu do *pointer_argument. Jde o jasný krok zpět z hlediska verze 4.x a mělo to být posuzováno jako chyba v GCC.
Prodejce bude dělat problémy pokud najde sebemenší náznak opálených kontaktů, stopy po jiskrách na spojích a cínu nebo jiné stopy zničení. Často vadí i sebemenší ulomený kousek plastu, který by za normálních okolností neměl ani náznak vlivu na funkčnost, prostě proto, že z toho prodejce usoudí na neopatrné zacházení s výrobkem a tudíž závadu způsobenou nesprávným použitím. Bude dělat problémy proto, protože mu stejné problémy bude dělat i jeho dodavatel, který mu to nejenom hodí na hlavu, ale zároveň naúčtuje neoprávněnou reklamaci.
Takže pokud něco takového děláte, buďte si jistí, že ta věc je opravdu vadná a že není poctivé cesty jak ji reklamovat, nebo způsob jak ji použít jinde a netýká se to jen HDD.
smartctl -d ata -i /dev/sda smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION SECTION === Device Model: SAMSUNG SP2004C Serial Number: S07GJ10Y551661 Firmware Version: VM100-33 User Capacity: 200�49�47�16 bytes Device is: In smartctl database [for details use: -P show] ATA Version is: 7 ATA Standard is: ATA/ATAPI-7 T13 1532D revision 4a Local Time is: Tue May 30 10:26:54 2006 CEST SMART support is: Available - device has SMART capability. SMART support is: Enabled
$ hdparm -I /dev/sda /dev/sda: ATA device, with non-removable media Model Number: ST3160812AS Serial Number: 4LS0YPX2 Firmware Revision: 3.AAE Standards: Supported: 7 6 5 4 Likely used: 7 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 268435455 LBA48 user addressable sectors: 312581808 device size with M = 1024*1024: 152627 MBytes device size with M = 1000*1000: 160041 MBytes (160 GB) Capabilities: LBA, IORDY(can be disabled) Queue depth: 32 Standby timer values: spec'd by Standard, no device specific minimum R/W multiple sector transfer: Max = 16 Current = 16 Recommended acoustic management value: 254, current value: 0 DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 Cycle time: min=120ns recommended=120ns PIO: pio0 pio1 pio2 pio3 pio4 Cycle time: no flow control=240ns IORDY flow control=120ns Commands/features: Enabled Supported: * SMART feature set Security Mode feature set * Power Management feature set * Write cache * Look-ahead * Host Protected Area feature set * WRITE_BUFFER command * READ_BUFFER command * DOWNLOAD_MICROCODE SET_MAX security extension * 48-bit Address feature set * Device Configuration Overlay feature set * Mandatory FLUSH_CACHE * FLUSH_CACHE_EXT * SMART error logging * SMART self-test * General Purpose Logging feature set * SATA-I signaling speed (1.5Gb/s) * SATA-II signaling speed (3.0Gb/s) * Native Command Queueing (NCQ) * Phy event counters * Software settings preservation Security: Master password revision code = 65534 supported not enabled not locked not frozen not expired: security count not supported: enhanced erase Checksum: correct
Chybej mi nejaky pravidelny stable verze.Vždyť verze 2.6.x.y jsou přímo označovány jako
-stable
. Tenhle systém IMHO funguje docela dobře.
Adrian Bunk má v úmyslu spravovat řadu 2.6.16.x i po vydání 2.6.17.Slysel jsem. Vsak mu na to par lidi taky reklo ze nevi do ceho jde
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.