Portál AbcLinuxu, 29. dubna 2024 22:07

Jaderné noviny - 24. 1. 2007

15. 2. 2007 | Robert Krátký
Články - Jaderné noviny - 24. 1. 2007  

Aktuální verze jádra: 2.6.20-rc5. Představení lguest. Označování zastaralého a zavrženého kódu. Plány pro Linux Kernel Summit 2007.

Aktuální verze jádra: 2.6.20-rc5

link

Aktuální předverze řady 2.6 je stále 2.6.20-rc5. Do hlavního git repozitáře však zase začaly proudit patche - zatím jich bylo asi 250. Jde převážně o opravy, ale byla přidána i sada patchů ze stromu MTD s ovladačem AT91 NAND a "Cafe" NAND (pro OLPC systémy).

Starší jádra: verze 2.6.16.38 byla vydána 21. ledna a obsahuje opravy několika bezpečnostních problémů.

Představení lguest

link

Nedá se říci, že by Linux trpěl nedostatkem virtualizačních řešení. Horší je to s paravirtualizačními systémy, které by bylo snadné pochopit. Nedávný přírůstek do rodiny však tuto situaci výrazně mění. Hypervizor lguest od Rustyho Rusella (vyslovováno rʌs.ti'vai.zər) má pouhých 6000 řádků (včetně kódu pro uživatelský prostor) a poskytuje kompletní, byť spartánský, paravirtualizační mechanismus.

Jádrem lguest je natahovatelný modul lg. Při inicializaci si tento modul alokuje kus paměti a namapuje jej do jaderného adresního prostoru těsně nad oblast vmalloc - jinými slovy nahoru. Do této oblasti je natažen malý hypervizor; je to kousek kódu v assembleru, který se stará především o přepínání mezi jádrem a virtualizovaným hostem. Přepínání zahrnuje i hrátky s tabulkami stránek - co připadá jádru hostitele jako virtuální paměť, je fyzická paměť pro hosta - a správu obsahu registrů.

Hypervizor bude také ve virtuálních adresních prostorech hostů. Avšak povolit hostům úpravy hypervizora by bylo špatné, protože by jim to umožnilo uniknout ze svého virtuálního písečku. Vzhledem k tomu, že jádro hosta poběží v RING 1, nezabrání mu v provádění čachrů s kódem hypervizoru obyčejná i386 ochrana stránek. Takže je místo toho k udržení odstupu využíván segmentační mechanismus.

Modul lg také implementuje základy pro virtualizovaný I/O subsystém. Na nejnižší úrovni je "DMA" mechanismus, který prostě jen kopíruje paměť mezi buffery. DMA buffer lze navázat na určenou adresu; pokus o DMA na tuto adresu pak paměť zkopíruje do bufferu. DMA oblasti mohou být v paměti, která je sdílena hosty, a v takovém případě budou data kopírována z jednoho hosta na druhého, přičemž přijímající host obdrží přerušení; tak je implementováno síťování mezi hosty. Není-li nalezena žádná sdílená DMA oblast, budou DMA přenosy předány k provedení hypervizoru v uživatelském prostoru (popsáno níže). K dispozici jsou také jednoduché ovladače disku a konzole.

A nakonec modul lg implementuje ovládací rozhraní přístupné přes /proc/lguest - funkce, která možná bude muset být změněna, než se lguest dostane do hlavního jádra. Uživatelský hypervizor vytvoří hosta zápisem příkazu "inicializuj" do tohoto souboru. Přitom je určen rozsah paměti, který se má použít, kde najít jádro atd. Rozhraní lze také používat k přijímání a provádění DMA operací a odesílání přerušení do hostovaného systému. Zajímavé je, že spuštění hosta je zařízeno čtením z tohoto ovládacího souboru; provádění bude trvat, dokud se host nezastaví na něčem, k čemu je potřeba uživatelský zásah.

Na straně jádra je ještě implementace paravirt_ops pro práci s lguest hypervizorem; musí být zakompilována do každého jádra, které bude spouštěno jako host. Při inicializaci systému hledá tento kód speciální podpis zanechaný hypervizorem při startu hosta; je-li podpis přítomen, znamená to, že jádro běží v rámci lguest. V takovém případě budou nainstalovány paravirt_ops určené pro lguest, což jádru umožní běžet jako správný host.

lguest address spaces

Poslední součástí systému je uživatelský hypervizor klient. Jeho úkolem je alokování rozsahu paměti, která se stane hostovou "fyzickou" pamětí; obraz jádra hosta je do tohoto rozsahu namapován. Kód samotného klienta byl nalinkován speciálně tak, aby seděl ve virtuálním adresním prostoru nahoře a nechal pod sebou místo pro hosta. Jakmile je systém hosta na místě, provede uživatelský klient čtení z ovládacího souboru a host nabootuje.

Soubor na hostitelském systému může posloužit jako obraz disku pro hosta, přičemž uživatelský klient se stará o "DMA" požadavky na přesun bloků tam a zpět. Síťová zařízení lze nastavit tak, aby prováděla komunikaci mezi hosty. Síťový ovladač lg může také fungovat v loopback režimu, kdy je interní síťové zařízení připojeno k TAP zařízení nakonfigurovaném na hostiteli; tak se mohou hostované systémy vázat na porty a provozovat servery.

S trochou představivosti je z diagramu vpravo patrné, jak to všechno funguje dohromady. Lguest klient ten proces nastartuje, když je spuštěn na hostiteli v uživatelském prostoru. Alokuje paměť znázorněnou modrým rámečkem, ze které bude virtualizovaná fyzická paměť hosta, a pak namapuje jádro hosta. Jakmile uživatelský klient provede čtení z /proc/lguest, jsou upraveny tabulky stránek a popisovače segmentů tak, aby modrý rámeček vypadal jako celý systém, a kontrola je předána hostovanému jádru. Host může prostřednictvím jaderného kódu hypervizora požadovat některé služby; pro všechno ostatní je kontrola vrácena uživatelskému klientu.

Tohle je poměrně kompletní popis všeho, co lguest umí. Žádná živá migrace jako u Xen, žádná copy-on-write disková zařízení ve stylu UML, žádná správa zdrojů nad rámec toho, co nabízí jádro, atd. Jednoduchost kódu je zcela zjevně jednou z jeho nejatraktivnějších vlastností; je snadné mu porozumět a pracovat s ním. Do jádra se tedy pravděpodobně dostane mnohem snáze než některé další implementace hypervizorů. Zůstává otázkou, jestli bude kód jednoduchý i ve chvíli, kdy s ním lidi začnou doopravdy pracovat.


Následující obsah je © KernelTrap

Označování zastaralého a zavrženého kódu

link

21. led, originál

Robert Day navrhl dvě nové konfigurační volby, které by umožňovaly označit kód jako "deprecated" [zavržený] nebo "obsolete" [zastaralý]. Odvolával se na nedávné zmatky při pokusech o odstranění devfs, kdy nebylo jasné, jaký je současný stav, a co se chystá: Používání deprecated kódu je z technického hlediska v pořádku, ale používání obsolete kódu by mělo vyvolat nějaké varování. Kromě zmatků způsobených nejasným rozdílem mezi významy obou slov byla reakce na návrh vstřícná. H. Peter Anvin patch také podpořil: Když nic jiného, tak to dodá jisté mantinely těm nekonečným "odstranit či neodstranit" debatám. Robert také poznamenal, že "deprecated" by se hodilo jako kontrola při kompilaci jádra: Byl by to rychlý a jednoduchý způsob, jak z kompilace odstranit vše, co *má* být obsolete, abyste si byli jisti, že neberete žádný mrtvý kód. Patch obsahuje definice obou stavů:

Kód označený jako 'deprecated' je oficiálně stále dostupný, ale většinou už byl určen k odstranění, takže byste udělali nejlépe, kdybyste si začali hledat náhradu.

Kód označený jako 'obsolete' už není oficiálně podporován a neměl by být součástí žádné běžné kompilace, ale přesto může být stále k dispozici, pokud jeho funkci nutně potřebujete. *Velmi* se doporučuje na obsolete kód dlouhodobě nespoléhat.

Plány pro Linux Kernel Summit 2007

link

21. led, originál

Theodore Ts'o oznámil, že Linux Kernel Summit bude v roce 2007 přesunut z tradiční Ottawy v Kanadě do Cambridge v Anglii. Rozhodnutí popsal jako jednorázový experiment, který bude později vyhodnocen, aby se zjistilo, jestli má v budoucnu cenu summit přesouvat do jiných míst: Je mi jasné, že kdyby to bylo je na nás, vývojářích, tak bychom měli konferenci v Honolulu, Austrálii nebo na Novém Zélandu. Bohužel to záleží i na jiných věcech a finančních okolnostech.

Související články

Jaderné noviny - 17. 1. 2007
Jaderné noviny - 10. 1. 2007
Jaderné noviny - 3. 1. 2007
Jaderné noviny - 20. 12. 2006

Odkazy a zdroje

Kernel coverage at LWN.net: January 24, 2007
kerneltrap.org

Další články z této rubriky

Jaderné noviny – přehled za březen 2024
Jaderné noviny – přehled za únor 2024
Jaderné noviny – přehled za leden 2024
Jaderné noviny – přehled za prosinec 2023
Jaderné noviny – přehled za listopad 2023

Diskuse k tomuto článku

CIJOML avatar 15.2.2007 01:34 CIJOML | skóre: 58 | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
Odpovědět | Sbalit | Link | Blokovat | Admin
Praha je levnejsi a navic kongresova velmoc ;)
15.2.2007 01:55 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
A navíc v Cambridgi už je naplánovaná International Lisp Conference 2007. To není fér! :-D Ale kdybych si měl vybrat, beru ILC. ;-)
15.2.2007 08:21 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
Odpovědět | Sbalit | Link | Blokovat | Admin
Nebyl by srozumitelnější následující slovosled?
Hypervizor od Rustyho Rusella lguest (vyslovováno rʌs.ti'vai.zər) má…
V té současné verzi jsem dumal nad tím, proč se tam ta poznámka o výslovnosti je a co se takhle vlastně vyslovuje, když tam je ta podivná část rʌs.ti' – až když jsme to nechal být a dočetl za závorku, došlo mi to…
15.2.2007 08:28 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
Pravda. Dal jsem tedy závorku až za jméno.
15.2.2007 12:07 kraklakvakve
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
Teď to vypadá jako výslovnost jména autora...
15.2.2007 13:03 J.
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
Taky mi to tak připadlo a připomnělo mi to:

Raymond: No, no, no - it's spelt Raymond Luxury Yacht, but it's pronounced 'Throatwobbler Mangrove'.
15.2.2007 12:32 k3 | skóre: 15 | blog:  
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
Odpovědět | Sbalit | Link | Blokovat | Admin
Nevi nekdo neco vic o tom bugu co v 2.6.20 je s highmem ? Jestli si jej nekdo uz i vsiml a pripadne konecne opravil ?
michich avatar 15.2.2007 18:27 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
Nejak upresnit by to neslo?
17.2.2007 19:50 Jirka
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
Asi mysli toto:
[<c01485ba>] filemap_nopage+0x2ba/0x3e0
[<c0152a5b>] __handle_mm_fault+0x10b/0x930
[<c0115316>] do_page_fault+0x126/0x630
[<c01151f0>] do_page_fault+0x0/0x630
[<c03779c4>] error_code+0x74/0x7c
[<c0370033>] xdr_buf_from_iov+0x3/0x30
=======================
Mem-info:
DMA per-cpu:
CPU 0: Hot: hi:   0, btch:  1 usd:   0 Cold: hi:  0, btch:  1 usd:  0
Normal per-cpu:
CPU 0: Hot: hi: 186, btch: 31 usd: 147 Cold: hi: 62, btch: 15 usd: 14
Active:102055 inactive:2415 dirty:0 writeback:0 unstable:0 free:1177
 slab:4749 mapped:96 pagetables:844
DMA free:1992kB min:88kB low:108kB high:132kB active:9668kB
 inactive:128kB present:16256kB pages_scanned:16123 all_unreclaimable? yes
lowmem_reserve[]: 0 476
Normal free:2716kB min:2744kB low:3428kB high:4116kB active:398552kB
 inactive:9532kB present:487428kB pages_scanned:640578 all_unreclaimable? yes
lowmem_reserve[]: 0 0
DMA: 0*4kB 1*8kB 0*16kB 0*32kB 1*64kB 1*128kB 1*256kB 1*512kB
 1*1024kB 0*2048kB 0*4096kB = 1992kB
Normal: 19*4kB 2*8kB 0*16kB 0*32kB 1*64kB 0*128kB 0*256kB
 1*512kB 0*1024kB 1*2048kB 0*4096kB = 2716kB
Swap cache: add 12881, delete 12881, find 1724/1811, race 0+0
Free swap  = 0kB
Total swap = 0kB
Free swap:            0kB
To ted zlobi pri kompilaci a i jinych cinnostech me. Ale musim rict, ze suspend-to-ram && suspend-to-disk ma 2.6.20 perfektne funkcni! Jsem zvedavy na zmeny v ACPI v 2.6.21.
17.2.2007 01:38 eh
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
nepochybne, hledej smudlo... :-D
17.2.2007 19:51 Jirka
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
Nejaky odkaz by nebyl? ;o)
15.2.2007 12:46 kotek
Rozbalit Rozbalit vše Re: Jaderné noviny - 24. 1. 2007
Odpovědět | Sbalit | Link | Blokovat | Admin
at zije ICQ

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.