- 11101 megtekintés
Hozzászólások
Respect, kivancsi vagyok idovel atfut-e a rendszeren..
"Nem akkor van baj amikor nincs baj, hanem amikor van!"
Népi bölcsesség
- A hozzászóláshoz be kell jelentkezni
Hogyan van ez a bemenő könyvtár, kimenő lemezkép? Hogyan adok meg kernel paramétereket, initram image-et? Valami hevenyészett magyar nyelvű doksit írsz ide? Aztán a Fedora build szerveren miért nincs belőle még csomag? :) Különben kíváncsi vagyok, szóval lehet, hogy valamikor lefordítom forrásból, s kipróbálom, csak csinálj hozzá kedvet! Nem kell halál precíz doksi, csak valami érthető, fontos dolgokat tartalmazó valami jó lenne.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Hát én végigfutottam a doksiján, és azt látom, hogy csinálsz egy könyvtárat, amibe 3 fájlt tegyél:
kernel
initrd
simpleboot.cfg
Ez utóbbiba pedig írd bele:
kernel /kernel kparam1 kparam2 kparam3 ...
module /initrd iparam1 iparam2 ...
(meg ha egyéb modulokat akarsz tölteni, akkor azokat is module kezdetű sorral)
és futtasd le
a simpleboot -i initrd /dir outfile parancsot, és kész.
- A hozzászóláshoz be kell jelentkezni
Köszönöm. Bevallom, nem néztem még meg a doksit.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A használati utasítás mindig is a gyengék szórakozása volt... :-)
Egyébként én sem néztem még, de maga a téma nagyon jól néz ki! Örülök minden ilyennek!
Köszönet érte, és persze hatalmas gratula a szerzőnek!
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Egyébként senki sem akart még megverni téged amiatt, hogy egy sorba több utasítást írsz? :) Ezért szerintem kukoricán kellene térdepelned:
while(a > s && a[-1] == ' ') { a--; } *a = 0;
Lehet, így írtam volna:
while (a > s && a[-1] == ' ') a--;
*a = '\0';
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Nekem jobban tetszik úgy, ahogy van. Ha ezeket két sorba írnád, kevésbé lenne átlátható az egész. (Kivéve 80x25-ön)
- A hozzászóláshoz be kell jelentkezni
Szerintem az eredeti kevésbé érthető. Bár nem fontos, ízlés kérdése csupán.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Igen, ízlés kérdése. Abban igazad van, hogy a nagy kódolási módszertanok meg a nagy projektek gyakorlatai azt ajánlják, amit te írsz, hogy lehetőleg minden külön sorban legyen, de a gyakorlatban én is jobbnak látom, ha egy nagy rövid ciklus vagy elágazás csak egyetlen sort foglal el, olvashatóbb, jobban látja az ember az egészét, és nem szaporítja a sorokat feleslegesen.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
a gyakorlatban én is jobbnak látom, ha egy nagy rövid ciklus vagy elágazás csak egyetlen sort foglal el, olvashatóbb, jobban látja az ember az egészét, és nem szaporítja a sorokat feleslegesen
Hat nem tudom, van az eszszerusegnek is hatara. Ezt pl. ugy dobnam vissza code review-n, hogy laba nem erne a foldet:
while (a > s && a[-1] == ' ') a--;
Tok egyszeru benezni refaktoralaskor, de legalabb "nem szaporitottuk a sorokat feleslegesen". :)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Szerintem felreertetted, hogy mi a problema. :)
Marmint meg lehet sertodni rajta, de attol meg valos az issue: https://www.imperialviolet.org/2014/02/22/applebug.html
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Valahogy igy:
#define rtrim(a, b) while(a < b && *a == ' ') a++;
stbstb.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Ha functionként írod, akkor is inlineolja a gcc -O2-vel.
- A hozzászóláshoz be kell jelentkezni
FIXME, de szerintem gelei-nek nem a te kódoddal van problémája, hanem locsemege javaslatával.
gondolom így jobban tetszene neki:
while (a > s && a[-1] == ' ') { a--; }
*a = '\0';
Amúgy meg respect.
- A hozzászóláshoz be kell jelentkezni
Igen, közben rájöttem, hogy ez a nyűgje. Szerintem ez a megoldás valóban veszélyes, ha új sorba van írva, de ha ugyanabba kerül, akkor nincs vele baj. Szerintem ez nem jó:
if (cond)
statement;
Ellenben ezzel nem látok problémát:
if (cond) statement;
Az első esetben odakerül még egy sor, és kész a baj.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Izebize, ezeket mar reg kitalaltak okos emberek: https://wiki.sei.cmu.edu/confluence/display/c/EXP19-C.+Use+braces+for+t…
Szinte osszes C coding szabvany szerint mindket pelda hibas. A standard pedig nem hiaba szuletett ... Meg lehet nezni hany CVE van hianyzo kapcsos zarojelek miatt :)
- A hozzászóláshoz be kell jelentkezni
Az egy sorba írt másodikkal mi a baj?
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
konnyen osszetevesztheto hogy az if kifejezesbe tartozik. nyilvan nem az if (a>0) felenel, hanem ahol van egy csomo operator is.
veletlenul ket statement is kerul az if utan, aztan kesz a baj.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Arra gondolsz, hogy valaki nem látja az utolsó záró zárójelet? Mindegy is, nekem kifejezetten tetszik ez a forma, használni is fogom a jövőben.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
if (((a>0) && (a<1232)) || (((b>12) && (b<323)) || ize(b))) bigyo(a+ 1234 > 4343 ? : a+12, bb);
siman be lehet nezni hogy most akkor a bigyo a kifejezes resze vagy sem. nyilvan nem te, hanem egyszeru kodernek
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
> siman be lehet nezni
dehogy lehet. egyreszt a ) utani bigyorol messzirol sut hogy ott valami veget ert, masreszt minden ide (meg az mcedit is) mutatja a zarojelek parjait.
> hanem egyszeru kodernek
azok maradjanak a php-nel, es ne nyuljanak c-hez, meg foleg ne refaktoraljak azt.
- A hozzászóláshoz be kell jelentkezni
if (((i>1) && (i<111)) || (((j>11) && (j<1111)) || ijij(j))) lIlI(i+111 > 1111 ? i+11, Ilj);
- A hozzászóláshoz be kell jelentkezni
ez igy syntax error, a ?-es resz utan , helyett : kell
amugy a C nem valo mindenkinek. aki nem tud kodolni, hasznaljon rust-ot :)
- A hozzászóláshoz be kell jelentkezni
Programozzon, aki raer :)
- A hozzászóláshoz be kell jelentkezni
azok maradjanak a php-nel
ez php-ban is valid szintaxis
- A hozzászóláshoz be kell jelentkezni
Értem, mire gondolsz. Az nem túl nagy baj, ha a kódot el is olvassa valaki, nem csak elképzeli, mi van odaírva. Amít nagyon könnyű elszúrni, ha valami copy-paste módon keletkezik, de az új helyen nem visszük bele azt a picike módosítást, amit kellene, mondjuk egy offset az indexhez, vagy valami efféle.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Az a baj, hogy mindenki magabol indul ki :) Kulonbozo szintu emberek nyulnak a kodhoz, igy szukseg van szabalyokra, best practice-ekre amiket be lehet tartatni, konnyu ellenorizni. Alapvetoen ez lehet egy baj, ha valaki hozzatesz valamit:
if (cond) statement1; statement2;
Ezt te nem szurnad el, de mas igen ...
- A hozzászóláshoz be kell jelentkezni
Na jó, de miért tenne egy sorba két utasítást? Amúgy, ha kiírom a kapcsos zárójelet, azt is törölheti valaki. Ha azt írom, hogy if (*(int8_t *) func(parm1, parm2) == -2), akkor ezt is elronthatja valaki. A *--*p kedvencembe is belerondíthatnak. Csak le kell ültetni egy majmot a kód elé, a napi munkáját fel kell commitolni, aztán meg is vagyunk.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
"Na jó, de miért tenne egy sorba két utasítást?"
Mondom, hogy mindenki magabol indul ki ... ez hiba! De ertem, hogy nehez elvonatkoztatni :D
Sokminden lehet ... mondjuk mert egy junior? Orul ha egyaltalan lefordul a kodja...
Itt mi tortent: https://embeddedgurus.com/barr-code/2014/03/apples-gotofail-ssl-securit… ?
De stiluson en nem akarok vitatkozni ... csak informaciot kozoltem!
Ha kitorli a bracketeket, akkor azt legalabb a linterek megfogjak, ha ugye cel, hogy betartassanak valami coding szabvanyt...
- A hozzászóláshoz be kell jelentkezni
C-ben az életveszélyes, ha valaki nem érti, mit csinál. Teszem azt, próbálgatással tesz dereferáló * karaktert, vagy címet adó & karaktert valahova, s ha lefordul a kód, akkor úgy érzi, akkor ez úgy jó is. Nem kell a nyelv, a fordító minden képességével tisztában lenni az utolsó betűig, de azt érteni kell, mi az, amit csinál.
Teszem azt, van egy char **s; majd átadja valaki 's' pointert egy memcpy() vagy stpcpy() függvénynek, abból azért lesz baj.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
tisztában lenni az utolsó betűig, de azt érteni kell, mi az, amit csinál
Hahahahah. 5-10% talan erti...
Tetszik, amikor valaki aki opcode szinten vagja mi tortenik (mint te) egy MCU-ban, naivan azt feltetelezi, hogy a legtobb ember is beleteszi az energiat, hogy a-z megertse, hogy mi tortenik :D
Sok programozo egy oprendszert nem tud feltelepiteni a gepere, nemhogy azt vagja, hogy indul el es irjon egy bootoadert ...
Ugyhogy ertem amit irsz, de a valosag sajnos nem ez. Nem, nem erti, hogy mit csinal! De hat kell a munkaero ...
- A hozzászóláshoz be kell jelentkezni
Én nem tanultam hivatalosan soha C-t, de könnyű dolgom volt, mert korábban sokat programoztam assembly-ben, így van rálátásom a memória modellre. Nem esek kétségbe egy uniontól, mert assembly-ben is simán megcsináltam, hogy ugyanazt a területet többféleképpen használtam fel, ha úgy láttam indokltnak. Hasonlóképpen az indirekciók, pointerezések, mikor számít, hogy valami atomikus, s mikor mindegy ez. Mondhatnám, hogy kötelezővé tennék minden programozónak assembly-t valamilyen mikrokontrollerre. Ha az megy, akkor fogja érteni kellő mélységben, hogy mi micsoda.
Persze nem mondom, hogy assembly ismeret nélkül nem lehet megtanulni programozni, de semmiképp sem úgy kell csinálni, hogy írok valami hülyeséget, végig sem gondolom, hogy ez most a változómra mutató pointer, vagy a változómra mutató pointerre mutató pointer, aztán addig írom a csillagokat, amíg egyszer csak lefordul.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Igazad van! En is felhaboritonak tartom ... :) Legtobb ember csak takol, ez van. De kellenek a takolo lapatolok is.
Ha mernokok epitenek fel hazakat az eleg draga lenne es talan meg hazak se lennenek...
Igy a kepzett emberek terveznek, ellenoriznek es szabvanyokat, metodologiakat dolgoznak ki es vigyaznak ra, hogy a takolok ne csinaljanak nagy kart.
- A hozzászóláshoz be kell jelentkezni
Egy heterogén programozó csapatban nem az az elvárás, hogy mindenki 100 százalékos legyen - mert ezt lehetetlen megvalósítani -, hanem hogy a csapatmunka minél hatékonyabb legyen. Produktivitás, fenntarthatóság szempontból egyáltalán nem jó, ha valaki félreérthető, nehezen értelmezhető és módosítható kódot produkál.
Egy egyszemélyes, hobbiprojektben azt csinálsz, amit akarsz, de hosszú távon ott is (meg karrier szempontból is) nagy valószínűséggel inkább kiszúrsz magaddal ha nem így csinálod. Már ha valamennyire fontos, amit csinálsz. :)
- A hozzászóláshoz be kell jelentkezni
Ezzel egyetértek, olyannyira, hogy igyekszem érthető változó- és függvényneveket adni, jól olvasható kódot írni, és ami talán ennél is fontosabb, következetes vagyok. Tehát mindenhol ugyanúgy formázom a swittch() case szerkezetet, meg a többit, nem csinálom azt, hogy egyik helyen így, máshol meg úgy.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
igy van.
de most nezd meg business oldalrol is ezt.
egy manager azt latja, hogy a java team-be felvesz junior fizetesert kezdoket, akik alapvetoen kepesek leimplementalni a felmerulo igenyeket. kell egy senior mellejuk, aki a hajat tepi, de egyben tartja a kodbazist kozben.
vs. a c csapat, ahova csupa senior kell, valag penzert, es egymast turjak technikai trivialitasokon (marmint business szempontbol trivialitas; nyilvan a boost vs. stl kurvara nem mindegy :D ).
ehhez vedd hozza, hogy mig junior-t toborozni relative egyszeru, OKJ-s kepzeseken meg egyetemen kitett flyer-ekkel megoldhato olcson, addig senior-t nem fogsz csak ugy felvenni. Vagy sok penzt kinalsz neki (de az csak ideig-oraig tartja meg), vagy erdekes munkat (... az sok-sok lead engineer ora, amig olyan kodbazis lesz, ami alkalmas erre), kulonben elmegy hamar. headhunter meg tipikusan 2 havi berert hoz neked embert (!!! nem vicc, es ez csak az alja !!!). Nem fog neked osszebaszni egy css-t, mert azt mondja, 'nem ert hozza', meg 'spagetti fos a frontend kod, nincs az az isten hogy komplett refaktor nelkul hozzanyuljak'.
na, ezert van az, hogy java-t meg hasonlot tolnak mindenhol. c-t csak ott, ahol nincs mas lehetoseg. illetve most jon a rust, amig otvozi a kettot, csak marha kevesen ertik/csinaljak meg.
- A hozzászóláshoz be kell jelentkezni
a c csapat, ahova csupa senior kell, valag penzert, es egymast turjak technikai trivialitasokon
Ez keremszepen "rasszizmus"! :D Java-s osztalyon is turjak egymast ugyanigy!
De ja ertem, ahogy irtam fentebb, kell a lapatolo takolo is, hisz azok csinaljak a penzt, a seniorok valojaban csak viszik...
- A hozzászóláshoz be kell jelentkezni
Off: félreértésről szólva, néha még az is segít, ha a olvtársak a gondolataikat effektíve le is írják, nem csak érzékeltetni próbálják.
- A hozzászóláshoz be kell jelentkezni
Azt látom, hogy a végéről eldobod a szóközöket, de ez még nem indokolja, hogy egy sorba írd az egész megoldást.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Mi vele a bajod? Így kellene?
while (a > s && a[-1] == ' ') {
a--;
}
Vagy az a-- a megütközés tárgya? Mi a jó? --a? a -= 1? Esetleg a = a - 1? Vagy legyen a += ~0LL? Nem próbáltam ki, de szerintem működne.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
> Tok egyszeru benezni refaktoralaskor
kinek? az olyan inkabb ne refaktoraljon...
> nem szaporitottuk a sorokat feleslegesen
en meg pythonban is egy sorba irom az ilyet.
- A hozzászóláshoz be kell jelentkezni
Nem értek vele egyet. Ha ilyen van, akkor legyen static inline függvény, amit a fordító az adott helyre be fog tenni, s nem lesz hívás, nem lesz stack művelet. De nem tartom jó iránynak, hogy azért írunk több dolgot egy sorba, mert logikailag összetartozik. Ezzel az erővel komplett függvényeket írhatnánk pontosvesszőkkel szeparálva egyetlen sorba.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Nyilván jó a kódod, ízlésekről vitatkozunk. :)
Logikailag egy függvény is egybe tartozik, de csak nem írod az egészet egy sorba.
bármelyik részét is vennéd el belőle, már nem lenne működőképes
Ez akkor is igaz, ha több sorba írod a kódot, nem? :)
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
itt van a hozzászólásdoboz tetején, lásd https://snipboard.io/IA5GF9.jpg
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Valószínűleg valami noscriptes dolog megeszi. ckeditor van, annak a kimenete sima html, nem beszél [fenetudja] jellegű markupokat. Vagy bekapcsolod, hogy menjen, vagy írsz kézzel htmlt a maradék textareadba. (hacsak azt el nem bassza valami)
- A hozzászóláshoz be kell jelentkezni
nemvolt celom tokeletes define gyartasa, amugy is illik a "tobbsoros" definet egy {} koze rakni.
igazabol amig one-man-show moka van addig tokmind1 milyen a kod, lenyeg hogy a dev ertse. csak amikor mar tobben kezdenek el dolgozni rajta, akkor ajanlott valami standard codestyle hasznalni (vannak is erre jo ellenorozo progik). aztan majd a hackerek megmutatjak miert is hasznos igy csinalni (lasd apple bug)! ;)
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
A Forráskód gombot kell lenyomni, és akkor nagyjából html-ben lehet alkotni. Pl.:
<pre><code>
for (char *a= s+strlen(s); a>s && a[-1]==' '; *--a= '\0');
</pre></code>- A hozzászóláshoz be kell jelentkezni
A lezárásnál először nem a code taget zárjuk le?
- A hozzászóláshoz be kell jelentkezni
Mi történik akkor, ha pl.
char s[]= "ABC";
char *a= s+2;
Szerintem felülcsapja a C-t nullával.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ezt nem próbáltam ki. Tényleg így lenne, mert inicializálja az 'a' pointer által mutatott területet egy üres stringgel? Gondolom, ez az ellenszer:
char s[] = "ABC";
char *a;
a = s + 2;
Szerk.: Már kipróbáltam, nem bántja s-et.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Mármint arra gondolok, hogy a rtrim akkor se írja felül a string utolsó karakterét, ha nem a termináló nullára mutat kezdetben az 'a'. Pl.:
for (a= s+len; a>s && a[-1]==' '; *--a = '\0');
vagy
for (a= s+len; --a>=s && *a==' '; *a = '\0');- A hozzászóláshoz be kell jelentkezni
Szerintem felülcsapja a C-t nullával.
Kipróbáltam. Nem. Csak az 'a' pointert állítja arra a címre, ahol a 'C' betű van, de nem inicializál üres stringre ott.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Nekem az eredeti jobban tetszik, mert latvanyos, hogy az a-- az sokszor fut le, majd a vegen a *a=0 csupan egyszer, kvazi lezarja a kolto altal gondolt logika veget.
A kapcsok ilyenten valo kirakasa megved a goto fail fele hibaktol, es mivel egy sorba irja a trivialis es logikailag egybetartozo kodot, nem pazarolja feleslegesen a helyet.
Nekem bejon ez a stilus! :-)
- A hozzászóláshoz be kell jelentkezni
Hát... jó. Nekem nem tetszik, de ez ízlés kérdése. Mindamellett, hogy világos, amit írsz.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
kreativitás vs. vaskalaposság
- A hozzászóláshoz be kell jelentkezni
A doksiig nem jutottál el, de a kódig igen? :)
Nyilván az igazi programozónak a kód az igazi doksi ;)
- A hozzászóláshoz be kell jelentkezni
A doksi a szukseges rossz, mert megteremti a lehetoseget, hogy elterjen a kodtol, es ezzel dezinformacio keruljon a rendszerbe.
Ezert is (meg mert lusta vagyok es utalok doksit irni) csinaltam az egyik programomat ugy, hogy a konfiguracio bemenet egy xlsx, amit ertelmesen kitoltve es csv -be generalva majd rafuttatva egy generatort letrejon a bash config file. Az excel pedig mar dokumentacionak minosul, mert vannak benne szinek. :-)
- A hozzászóláshoz be kell jelentkezni
nem, mert logikailag 1 egyseg.
igazabol a kerdes az, hogy ez miert nem egy library alap fuggvenyei kozott van, miert kell minden alkalommal ujrairni. Ha csak 1% esellyel kurod el egy keso esti coding session alatt, mar boven megerne IMHO.
- A hozzászóláshoz be kell jelentkezni
Szerintem egy ilyen rovid kodot kar kirakni fuggvenybe, annak hivasi koltsege van. Ha sokszor kell, akkor a #define jo barat, pont erre valo. IMHO. :-)
- A hozzászóláshoz be kell jelentkezni
Ha az alábbi kettő valamelyike teljesül, akkor nem kell aggódni emiatt:
1. Z80-nál gyorsabb CPU
2. optimalizáló fordítóprogram
- A hozzászóláshoz be kell jelentkezni
#define pont, hogy arra lesz jo, hogy frankon kodot duplikaljon a fordito, tehat lassitson a futason.
nyugi, normalis fordito mar evtizedek ota inline-ol, ahol kell.
- A hozzászóláshoz be kell jelentkezni
A duplikátumtól nem lassabb lesz a kód, hanem nagyobb.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
AFAIK az instruction-caching hatékonysága fordítottan arányos a kód méretével.
- A hozzászóláshoz be kell jelentkezni
Ez mondjuk igaz, bár nem minden CPU-ban van cache.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Meg a static inline.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
ezt csak most csak nektek:
fsize=read(fd,raw,fsize);
for(char* q=raw;q<raw+fsize;){
char* p=q; while(q<raw+fsize && *q!=10) q++; *q++=0;
if(!username || (!memcmp(p,username,unlen) && p[unlen]==':')){
for(i=0;i<n && strcmp(db[i],p);i++); if(i>=n) db[n++]=p;
} }
- A hozzászóláshoz be kell jelentkezni
*q!=10
Tényleg ilyen gány módon keresed a line feed-et? :(
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Tenyleg. Hogy kene? :) strchr?
- A hozzászóláshoz be kell jelentkezni
A backslash-t még nem kell lefóliázni (egyelőre), tehát szabad használni a \n- szekvenciát.
- A hozzászóláshoz be kell jelentkezni
off
A backslash nem okoz károkat a fejlődő gyermekeknek. :P
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ahogy NevemTeve írta, én biztosan a *q != '\n' formát használtam volna. Beszédesebb, mert látszik, hogy mi a szándék. A 10 az egy szám. Persze, értem, hogy a kódja, csak nem öndokumentáló úgy a kód.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
mintha ezen mulna a kod olvashatosaga :)
amugy mostanaba sokat pythonoztam (meg portoltam oda-vissza c-py kozott kodokat), es ott nem egyenerteku a 10 es a '\n' ezert szoktam le az 'chr'-es formarol
- A hozzászóláshoz be kell jelentkezni
Már csak az a kérdés, miért akar valaki C-ben Python kódot írni. :)
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
pythonban irok c kodot :) legalabbis c-like kodot...
- A hozzászóláshoz be kell jelentkezni
Én ezt awk-val szoktam elkövetni. :)
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
FreeBSD gyorsteszt :-) :
- a letölthető bináris egy chmod a+x után csont nélkül fut
- és teszi a dolgát
- mint utóbb egy -vv jelzi, nem szereti a FreeBSD gyári kernelt, Multiboot2 high half life-nak (vagy minek) minősíti
- mindent megcsinál (image), aztán a boot jó lassan betölti a kernelt, újrarajzolja a takeittux bootsplash-t, aztán mintha egy kernel panic lenne, valami hexdump és végtelen ciklusban bootol és hanyattesik.
De mivel deklaráltan nem Linux, gazából már ez is szép. Az külön tetszik, hogy némi CFG-szintaxis ellenőrzés is van benne.
(Érdekes módon nem EFI, hanem MBR módban bootolt ezen a gépen - hasonlót a régebbi FreeBSD bootloader is csinált - az új emlékeim szerint már ment.)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
FreeBSD boothoz javaslom a loader.efi és a loader manuálját (esetleg forrását) tanulmányozni. Pl: loader.efi tartalmaz utalást arra, hogy a kernel-t betöltés után valahová áthelyezik a memóriában.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Fú ha. Pár nap alatt? Respect. Grat!
Jó ránézni a kódra, és jó látni, hogy van aki még tud rendesen programozni egy (két) rendes nyelvben. :)
Én simán eldobnám a linket pár disztrónak, hátha valaki berakja. :)
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Esetleg beküldeni IRC-en vagy levlistán?
Gondolom minden nagyobb disztrónak van ilyen csatornája, esetleg érdemes lehet rápróbálni. :)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
No, nézelődtem picit a Debian oldalán..
Itt találtam egy debian-devel levilstát, ez egy általános fejlesztői lista. Fel lehet rá iratkozni.
Fogalmazz meg egy levelet amiben pár mondatot írsz a szoftveredről, igazóból az is jó amit ide írtál csak fogalmazd át angolra.
Szerintem érdemes lehet rápróbálni.. Lehet nyersz még pár tesztelőt.
- A hozzászóláshoz be kell jelentkezni
Le a kalappal! Pár nap alatt egy bootloader ami ráadásul teli van assembly kóddal is, nem semmi. Egyszerűen lenyűgöznek azok az emberek akik képesek ilyen low level cuccokat írni.
Megnéztem a kódot, de persze nem sokat értettem belőle :D
Lehet ez nem 100%-ban az én hibám. Valszeg soha nem fogok egy betűt sem hozzátenni, de biztos vagy benne hogy jó az abban a formában?
Csak a loader.c 1952 sor, teletűzdelve 100+ soros függvényekkel. Jövőbeli maintainerek szerintem megköszönnék ha kevésbé lenne egybeömlesztve a kód.
Ezt leszámítva, gratz!
// Hocus Pocus, grab the focus
winSetFocus(...)
http://c2.com/cgi/wiki?FunnyThingsSeenInSourceCodeAndDocumentation
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Hi,
Pl
efi_gop() 90 sor, 2 hatalmas if block benne
bios_open() szintén 90 sor, szintén két hatalmas if block benne
fw_init() 100 sor, 4 if-else block benne
fw_loadconfig() 130 sor, szintén több if-else block és több ciklus
Szerintem ezeket lehetne leginkább "felpucolni", és ahogy sejtem ezek a legfontosabbak is. Nem is az hogy egy függvény más dolgot is csinál mint a neve, hanem egy funkciónak 3-4 módja is bele van sűrítve egybe. Például a fw_loadconfig mondjuk be tudja tölteni a configot kb4 féle képpen, ezt a 4 féle módot kivenném egy-egy alacsonyabb szintű függvénybe. A másik hogy az ifek belsejét kivenném egy függvénybe aminek a neve leírja hogy mit jelent az a feltétel, pl "if(!memcmp(s, "kernel", 6))", de ez már csak hab a tortán. Valszeg csak nekem nem mond semmit.
A másik a progress bar, tök jó hogy van de nem része a core funkcionalitásnak, én kicsapnám egy külön modulba.
A clean code lényege az olvashatóság, ez nehezen olvasható szerintem, persze ha ez az ára a hatékonyságnak és a hatékonyság a legfontosabb akkor nincs mit tenni. Valóban nem értek a low level programozáshoz, és meghajlok az előtt hogy ha ezernyi kis függvényed van akkor nem fér bele az erőforrásba.
Megkérdezhetem hogy miért ragaszkodsz a 256KB-hoz?
// Hocus Pocus, grab the focus
winSetFocus(...)
http://c2.com/cgi/wiki?FunnyThingsSeenInSourceCodeAndDocumentation
- A hozzászóláshoz be kell jelentkezni
szerintem bzt elég látványosan jobban vágja ezt a területet bármelyikünknél, és úgy tűnik, mindennek átgondolt oka van, amit és ahogyan csinált. kedves, hogy ezután többen ilyen általános kódolási alapelvekre akarják "tanítani".
- A hozzászóláshoz be kell jelentkezni
kedves, hogy ezután többen ilyen általános kódolási alapelvekre akarják "tanítani".
Szerintem senki nem akarja alapelvekre tanitani, de ha igy is lenne, attol meg hogy valamiben zseni vagy, meg lehet, hogy masok, masban tudnak ujat mutatni.
Amig egy projekt one-man-show, addig tok jol elvannak a zsenik, csak amikor egyutt kell dolgozni hetkoznapi kepessegu emberekkel, abbol lesznek az olyan balesetek, mint az Apple bug fentebb. Lehet vitatkozni azon, hogy a coding standardoknak van-e letjogosultsaga, de meg a sajat regi kodjaimmal is be tudom magam szopatni, ha nem vagyok konzekvens, nemhogy akkor, amikor 800 (nem typo!) fejlesztovel dolgoztam egy kodbazison.
- A hozzászóláshoz be kell jelentkezni
Valamiert poliverzum C++ kodja jutott eszembe a threadrol. Ami tulajdonkeppen C volt, kiveve, hogy volt new meg delete a *alloc meg free helyett. :)
bzt kodja meg sokkal szebb, mint az OpenSSL-e, amit amugy olyan szivesen hasznal mindenki 600x minden nap. :)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
ARM-ék MbedTLS-ét (ők írták...
Nem ők írták, csak 'karbantartják'.
Volt anno az XySSL, valamikor 15 évvel ezelőttig (Az SSLv3/TLSv1-et tudott.)
Aztán az bezáródott és lett belőle PolarSSL, amiért már fizetni kellett, ha beépítetted saját termékbe.
És a PolarSSL-t vette meg az ARM és nevezték át MbedTLS-re.
- A hozzászóláshoz be kell jelentkezni
Oszinten mondtam, hogy ez egy jo minosegu kod. Es hogy sokkal rosszabbakat hasznalunk nap mint nap. :)
Nem ertem mit kotekednek itt ennyit.
- A hozzászóláshoz be kell jelentkezni
általánosságban egyetértek, csakhogy:
- ez itt egy one-man-show, és semmi nem utal arra, hogy ez megváltozna a jövőben.
- itt nem arról van szó, hogy nem használ semmilyen coding standard-et, hanem hogy a low-level szempontok figyelembevétele, és más - praktikus - szempontok miatt MÁS standard-et használ, mint amit a sok okos megszokott, és ész nélkül, bármilyen környezetben használna.
- nem gondolom, hogy itt bárki bármi újat mutatott volna neki, de ha én siklottam át valami fölött, kérlek hivatkozd be, mire gondolsz.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Nem kell ez a lekezelő hangnem. Már mindenki elismerte a zsenialitásod. Egy másik zseni aki szintén járatos a bootloader írásban valszeg úgy olvassa a kódodat mint egy megfejtett keresztrejtvényt, ha nekem kéne meg kb olyan lenne mintha kínai keresztrejtvényt kéne megfejtenem.
Azt látom hogy nem vagy képes felfogni hogy ha van egy ifed akkor már két dolgot is csinál az a függvény néha ezt néha azt. De nem akarok erről vitatkozni mert nem értek hozzá.
// Hocus Pocus, grab the focus
winSetFocus(...)
http://c2.com/cgi/wiki?FunnyThingsSeenInSourceCodeAndDocumentation
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
256 byte? Ez még mikrokontrolleren is elég feszes.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Asszem a kulonbseg akozott ahogy en programozok es ahogy bzt teszi, ahhoz hasonlo, hogy mig en firkalok a grafit ceruzaval, addig bzt kifarag belole egy ilyet: https://twistedsifter.com/wp-content/uploads/2015/04/pencil-tip-carving…
:-)
- A hozzászóláshoz be kell jelentkezni
grat !
- A hozzászóláshoz be kell jelentkezni
Jól gondolom, hogy minden kernelfrissítéskor új image-et kellene csinálni? Azért kérdezem, mert Fedorához néhány naponta, esetleg hetente szokott új kernel jönni. :)
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Nem tőlem kérdezted, de nekem sokkal inkább egy másodlagos kernel könnyű megadási lehetőség tűnik fontosnak. De hogy mi módon kéne tudni azt kiválasztani ....
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Nem feltétlen kell túltolni a csilivili menüt, pl. ha a shift le van nyomva, kihajít egy listát a képernyőre, hogy
1. (hd0,0)/vmlinuz-1.2.6
2. (hd0,0)/vmlinuz-1.2.4
3. (hd0,3)/NTLDR
amelyik számot lenyomod, az indul.
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
És miért fáj átnevezni boot managerré? Mert ha jól értem, csak adminisztratív akadály van.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ha csak annyit tennél bele, hogy felkínálná a kerneleket - helyesebben config bejegyzéseket -, s egy egyjegyű számmal [0-9] választani lehetne, az sokat hozna szolgáltatásban, de könnyű leprogramozni, nem egy hatalmas vagy bonyolult kód.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Az én elképzelésembe kb. ennyi tartozik. Ugyanis ahogy (asszem) locsemege is írta, erre a funkcióra azért lenne szükség, hogy amikor elkefélődik valami az aktuális kernel+modul párossal és abszolút bootolhatatlan rendszert állítunk elő, akkor ne kelljen lennie egy alternatív médiának, amire már rá lehet bootolni és kijavítani ezt. Ha van ilyen backupkernel rész, akkor pl. lehet tartani egy stabil, megbízható kernelverziót talonban.
Tegnap láttam, hogy beletetted a memóriaméret kiírását - ideális esetben valahogy ehhez hasonlóan jó lenne egy üzenet, hogy a backupkernel eléréséhez legyen lenyomva az Any(kó) billentyű az első (mondjuk) 5 sec-ben.
(Amúgy jelzem, valamikor este olvastam, hogy gyorsítottál a BIOS betöltésen - akkor letöltöttem az éppen aktuális változatot, mindent újracsináltam, de ezen a memóriakiíráson kívül, meg hogy FreeBSD kernelnek és nem multiboot-nak hívja - más változást - sebességbelit se - tapasztaltam.)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
De nem kell várni, kell valami olyan gomb, amit büntetlenül nyomva tudsz tartani folyamatosan már előtte is akár, megnézi hogy nyomva van-e, ha igen akkor backup, ha nem akkor rendes. (A windowsnak pl. ctrl volt, aztán lett hivatalosan F8, régebben még működött a ctrl is, már most nem tudom...) Az F gombokon elég sok minden van és elég változatos is lehet hardver függvényében. A CTRL+valami is sok minden szokott lenni (mondjuk az elsősorban szervereken, raid controller bios, nic firmware, diagnosztika...). Ezért írtam pl. a shiftet. És ráadásul minden billentyűzeten van, nem az van hogy jah ha maced van akkor nem ctrl hanem command... Egyik-másik notebookra már szinte fel sincs festve az Fx, csak a fényerő, hangerő és egyéb jelek... Vagy csak Fn-nel működik. A shiftet mindenhol meg lehet nyomni, minden user ismeri, az is, aki még a CTRL-t sem. :)
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
Zahy javaslatát én is támogatom két ok miatt.
1) Dual boot, pl. Linux és Windows
2) Mi van, ha az új kernellel valami baj van? Téglásítottuk a gépet, csak live pendrive-ról lehet rendbe szedni? Jó volna, ha a régi kernelt vissza lehetne boot-olni.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Szerintem semmi baj nincs, ha csak live pendrive-ról lehet helyrehozni. Persze a többiben igazatok van.
Saját gépem néha megszopat, sedutil-alapú hardveres NVMe öntitkosítást használok, és néha 1-1 hibás update-kor nem jól futott le az initramfs-generálás Arch alatt, és nem működött a jelszóbevitel a boot korai szakaszában lefutó sedutil-cli alatt. Na, azt óriási szívás volt helyrehozni, de megtanultam, felkészültem rá, boot partícióra felrakta egy szükséges toolokat hozzá. A sedutil sajnos nem része egyik telepített és live disztrónak sem, van ugyan hozzá hivatalos rescue lemezkép, de az meg ACPI hülyeség miatt áramtalanít újraindításkor, így elveszik a kititkosított állapot. Azóta minden fontosabb initramfs-t érintő update-nél inkább kézzel is lefuttatom az mkinitcpio parancsot, hogy tuti stimmeljen minden.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Egyszer megcsinálod, az onnantól mindig bootolható lesz. Felmountolhatod, és a kerneleket meg a konfigot kényed kedved szerint változtathatgatod továbbra is bootolni fog, ha lecserélted, akkor az új kernellel.
Tehát ebbe az image-be bele lehet pakolni több kernelt, fel kell mount-olni loop device-ként, s a config módosítása után boot-olja a másik kernelt? Új kernel hogyan kerül bele? Symlink?
Ugye a gondom az, hogy Fedorára havonta jön mondjuk öt új kernel, semmi kedvem szüttyögni új image készítésével mindig. Tekintve, hogy eddig csak PIC32 (MIPS core) architektúrára írtam boot loadert, az sem szabványos, csak mentem a magam feje után, mert megtehettem, így aztán fogalmam sincs, mi van egy PC-n, hol van az entry point, mit kell előtte tenni, hogy abból ne legyen baj, mi lesz az IT vektorokkal, a stack inicializálásával, mi van a hardware, például RAM frissítés initjével, ezekre kell-e figyelni, s ha igen, akkor kinek és hol.
(Amúgy vicces volt olvasni a commentben, hogy az NMI tiltása, tekintve, hogy az NMI nem maszkolható megszakítást jelent. :) Jó, tudom, a PC-k valóban annyira vackok, hogy ami nem az, azért mégis de, az.)
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Apple valamikor valtott GOP-ra. Kb, amikortol az UEFI-s Windows bebootolhato a gepeiken CSM kod nelkul. Szerintem ilyen 2012-2013 modellev korul.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Hm hm, A 2011-es es 2008-as gepeik UGA-sak voltak, ez tuti, a 2018-as gep pedig szerintem, mar GOP-os. De szerintem valamikor kozte lett GOP-os a dolog. Az is lehet, hogy valami FW update hozta el, illetve az is lehet, hogy nem mind1, hogy integralt, vagy dedikalt a GPU. Hogyan tudom szerinted megnezni, hogy GOP vagy UGA?
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Simpleboot, a szopásmentes GRUB helyettesítő
Jó ez a linugz, na!
- A hozzászóláshoz be kell jelentkezni
A grubbal az a baj, hogy eszméletlen nagy. Lényegében szinte egy oprendszer. Sokat mond, hogy a configja gyakorlatilag egy shell program. Meg az is, hogy indirect, mert vannak template-ek, amelyek alapján a config scriptet egy utility generálja. Ugyan működik, de egy bonyolult undormány.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A GRUB1 vagy a GRUB2?
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Jaja, az alma ezt is milyen jól megoldotta. Egyféle HW, egyféle OS...
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Korábban már akartam írni: ha a lemezképet dd-vel felrakom egy pendrive-ra, és azt bedugom egy működő FreeBSD-s gépbe, kapok pár sornyi hibát / warningot a konzolon:
GEOM: da0: unsupported GPT detected.
GEOM: da0: number of GPT entries: 8184, entry size: 128B.
GEOM: da0: maximum supported number of GPT entries: 4096, entry size: 1024B.
GEOM: da0: GPT rejected.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Még egy hibajegy:
-vv hatására kiírsz sok infót a normál bootparaméterekről, de a framebuffer / backupframebuffer valahogy összekeveredik:
$ cat DIR/simpleboot.cfg
kernel /kernel
bootsplash #007f7f /takeittux.tga
framebuffer 1680 1050 32
verbose 3
backupkernel /kernel.old
backupbootsplash #007f7f /takeittux.tga
backupframebuffer 640 480 32
backupverbose 3
$ ./simpleboot -vv DIR simpleboot.img
OK
Loader: start LBA 3115, size 83 sectors
Boot partition: start LBA 2048, size 67584 sectors
Partition UUID: 1231B6E8-0E0C-6860-1D512B69C0E98036
Kernel: "/kernel"
Format: Multiboot2 ELF64 kernel (x86_64)
(invalid, not freestanding kernel?)
80200000 .. 8038aa98 r.. (invalid, higher-half kernel)
8038b000 .. 81188150 r.x (invalid, higher-half kernel)
81188150 .. 817fd2a4 r.. (invalid, higher-half kernel)
81800000 .. 81800140 rw. (invalid, higher-half kernel)
81801000 .. 81e00000 rw. (invalid, higher-half kernel)
(invalid, dynamically linked kernel?)
Number of modules: 0 file
Framebuffer: 640 x 480 pixels, 32 bits per pixel
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
gratula, tetszik! en is ruhellem a grubot, az elilo-val elvagyok de annak is vannak hulyesegei...
mondjuk a problemak mindig akkor kezdodnek, ha sok disk van, es a bios nem feltetlen olyan sorrendben latja oket mint a linux...
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Milyen mértékegység szerint első disk? Gondolom, a sorrend attól függ, milyen hamar válaszolnak már persze a kernelnek, éppen ezért nem szabad sda, sdb, sdc, stb. nevekkel hivatkozni, hanem UUID-dal célszerű. Persze, a kernel előtt lehet valamiféle hardware cím szerinti sorrendiség, ezt nem tudom.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
BIOS alatt az, amelyik a 0x1F0-ás IO címen érhető el (ez eredetileg az ATA master volt, de a modern gépek is hardware-sen emulálják ezt a portot
Most akkor a BIOS INT 13h-t használod (ami nagyon nem egyenlő az 0x1f0-ás ATA porttal), vagy direktben támadod az ATA interfészt I/O műveletekkel? Ez utóbbit szerintem pl. nem emulálja senki SCSI meg RAID kártyák esetén, de abban sem lennék biztos, hogy az M.2 NVME flashről bootoló gépeken találni ilyet.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
meg megnézi, hogy a BIOS drivekód 80h-e, és ha igen, akkor elérhető-e a port (ha FFh-t olvas a státuszportról, akkor úgy veszi, nincs). Ha minden oké, akkor direkt ATA, ha ezek közül bármi nem teljesül, akkor fallbackel INT 13h-ra.
Szerintem a logikád hibás. Semmi nem garantálja, hogy ha létezik az első IDE port, akkor az INT 13h 80h diszk az pont ezzel esik egybe. Ha mondjuk egy szép régi (mondjuk Adaptec 2940) SCSI kártya is van a gépben, bekonfigurálva bootolható diszkkel, meg egy classic IDE kártya is van a gépben, rajta egy IDE diszkkel, akkor a BIOS 80h diszk attól függően lesz az egyik vagy a másik, hogy az Adaptec BIOS-ában hogyan állítottad be (róla akarsz-e bootolni vagy sem).
De későbbi generációs alaplapok (olyan 2000-2010 magasságában), ahol több IDE kontroller is volt az alaplapra ráintegrálva, tudtak olyat, hogy a BIOS diszk boot sorrendet BIOS-ban lehetett felülbírálni. Ilyenkor a HW nem változott (azaz az IDE kontrollerek pont ugyanazon a címen maradtak), viszont hogy melyik a 80h a BIOS szerint, az változott a beállításoktól függően. Így megeshetett, hogy az első IDE kontroller címén elérhető első diszk nem pont a 80h volt.
Általában de, a hw-s RAID kártyák mind emulálják. Muszáj nekik, ettől lesznek hw-s RAID-ek. SCSI-ban nem vagyok biztos, olyant kb. 20 éve használtam utoljára.
Már miért lenne muszáj nekik? Ott a BIOS extension a kártyán, berakja magát az INT 13h-ra, aztán lesznek szívesek a boot loaderek azt használni. A DOS eleve az INT 13h-t használta, rendes modern OS alatt pedig amúgy is használhatatlan lenne egy ilyen IDE emuláció, ott nem nélkülözhető a rendes driver amúgy sem.
egyébként nem valószínű, hogy régi BIOS-os gépeken tényleg találsz NVME-t
Egy komplett "tick-tock" CPU generáció (Gen6 Skylake/Gen7 Kaby Lake) alaplapjain ott figyelnek az M.2 slotok, és a Gen8-ig nem volt szokásos az UEFI-only bootolás belső diszkről. Szóval de, vagy 2 éven át ez volt a helyzet.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Szerintem nem érted a problémámat.
Az a problémám, hogy szemben a világ összes többi boot loaderével, amelyek BIOS módban standard módon az INT 13h-t használják a diszk elérésére, Te a Simpleboot projekt nevével ellentétben ezt a rém egyszerű (és nem utolsósorban: minden esetben jól működő) logikát felturbóztad, és beleraktad az IDE port direkt elérését, meg az elágazásokat, hogy akkor melyiket használd, és ezzel elérted, hogy bizonyos, nyilván elég obskúrus és a mai világban meglehetősen ritka esetekben még akár hasra is eshet.
Nem bántásnak szánom, csak próbálom megérteni: ez mire jó? Mert nyilván volt valami koncepciód, hogy miért vállaltad be ezt az extra elbonyolítást, ha már az volt a projekt célja, hogy egyszerű legyen.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Csak FYI, most kipróbáltam egy netbookon. Azok elég jellemző tulajdonsága a kellően kicsi kijelző, meg az extrém gyenge hardver, és morbid BIOS-ok. Ez egy Acer Aspire One A150, majdnem a múlt évezredből, egy AMD C60-as, virtualizációt is támogató procival és 4 GB memóriával. Kijelző felbontása 1024 x 600. Nos a ma este letöltött verzió abban a pillanatban amikor valamit csinál induláskor a képernyővel, átvált villogó színes négyzetes valamivé. Próbáltam framebuffer sor nélkül, és 640x480x32-s kijelző előírással is, nem változott a dolog. (A BIOSa nem tud EFI módot, de az általam gyártott BIOS+UEFI módú FreeBSD-s pendrájv csont nélkül képes rajta bebootolni.)
Ez azért nem egy hibajegy, mert ennél többet nem nagyon tudok segíteni, de még egy verbose 3 tartalmú konfiggal is ezt csinálja.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Az, hogy ez a BIOS miket tud, azt egyelőre nem kerestem ki. Mivel kb 5-10 perc kipróbálni egy új verziót, simán tudok próbálgatni. (Majd ha hazamegyek.) Amúgy változatlanul freebsd kernelt próbálok, de ezen a gépen sokkal hamarabb elhal, mint hogy egyáltalán bármit akarna csinálni.
Ja, egy pontatlanság a doksiban:
https://gitlab.com/bztsrc/simpleboot/-/blob/main/docs/ABI.md#bootstrapp…
On UEFI machines the very same 2nd stage file, called EFI/BOOT/BOOT.X64
ez a fájlnév ugyebár EFI/BOOT/BOOTX64.EFI
- A hozzászóláshoz be kell jelentkezni
No kipróbáltam a legutolsót amit kb fél órája találtam. Pont ugyanúgy villódzik, annyi az extra, hogy lemorzézta, hogy tá - tá -tá - ti-ti.
Jav: amúgy InsydeH2O Setup Utility Rev 3.5 -nek mondja magát. Meg hogy System BIOS V1.12 VGA BIOS ATI Ver012.036.000.029.041054
Acer Aspire One 522, meg VGA Memory 256 MB
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Sajnos ez ahhoz túl modern, hogy soros portja legyen. DSUB, 3 USB, Eth és egy HDMI. Azt majd még megnézem, hogy ha a HDMI-re rádugok egy nagyobb kijelzőt, attól jobb lesz-e (de ez biztosan nem most lesz). Illetve megnézhetem nagyobb felbontású külső VGA-csatlakozós kijelzővel is, bár nem emlékszem, hogy a BIOS-ban tudok-e a kijelzőkkel variálni.
Igazából abban bíztam, hogy a morzekód mond valamit, az korábban nem volt.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
És a BIOS-ában van olyan opció, hogy USB soros emuláció?
Szokott ilyen lenni? Én még nem találkoztam ezzel. Billentyűzetet, egeret, USB-s tárolóeszközöket már jó ideje támogatnak, de egyebet még nem láttam hagyományos BIOS esetén.
UEFI esetén már lehet esély a sikerre:
https://github.com/open-estuary/uefi/blob/master/OptionRomPkg/Bus/Usb/F…
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Miert nyulsz egyaltalan VBE-hez? Van olyan eset, amikor a sima BIOS text console nem mukodik? Osszezavar valamit az UEFI?
- A hozzászóláshoz be kell jelentkezni
Gondolom, nem ASCII-art a boot logó, meg szebb, csinosabb, miegymás.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Azaz bloat?
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
No kipróbáltam az issue/2 -ben levő disk.img -t. Az eredmény: villogó képernyő, ellenben nem morzézik :-(
További érdekességek: az ebben a zip-ben levő simpleboot nem fut FreeBSD-n - ellentétben a főoldalról tölthető verzió igen. Az IMG-méret kiszámoló funkció szerintem hasznos, bár másodjára mindig megtaláltam a méretmegadáshoz szükséges opciókat is.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
A hiba az issue2-s simpleboot-ról. Az aktuális könyvtárbeli ez a speciállis, a ../simpleboot a "standard"
$ file simpleboot
simpleboot: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=1d80601627e7cd4df04e27bdaa0f376feeddd9b1, for GNU/Linux 4.4.0, not stripped
$ file ../simpleboot
../simpleboot: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6b5d5422e8f0bcd33b02762d117b270ddf80657e, for GNU/Linux 3.2.0, stripped
$ ./simpleboot
./simpleboot: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by ./simpleboot)
./simpleboot: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./simpleboot)
$ ../simpleboot
Simpleboot disk image tool, Copyright (c) 2023 bzt, MIT license
https://gitlab.com/bztsrc/simpleboot
simpleboot [-v|-vv] [-k <name>] [-i <name>] [-s <mb>] [-p <mb>] \
[-u <guid>] indir outfile
simpleboot [-v|-vv] [-k <name>] [-i <name>] -b <device>
-v, -vv increase verbosity / validation
-k <name> set the default kernel filename (defaults to 'kernel')
-i <name> set the default initrd filename (by default none)
-s <mb> set the disk image size in Megabytes (defaults to 35M)
-p <mb> set the boot partition size in Megabytes (defaults to 33M)
-u <guid> set the boot partition's unique identifier (defaults to random)
-b <device> no new image, make an already existing device bootable instead
indir use the contents of this directory for the boot partition
outfile output image file name
Loader versions: edd7ba80 (x86)
$
Amúgy próbálgatni szívesen próbálok, semmi gond nincs vele.
A legutolsó verzió is ugyanúgy villódzik.
- A hozzászóláshoz be kell jelentkezni
Symbol versioning, az ám a jó, hadd tanulja meg a pórnép, hogy itt nem lesz bináris programoknak másolgatása.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Érdemes a nyolcadikkal kezdeni. Ha ott villódzik, akkor jöhet a negyedik. Ha nem villódzik a nyolcadikkal, akkor következzen a tizenkettedik, és így tovább. Fokozatos közelítéssel (szukcesszív approximációval) hamarabb lehet eredmény. Hasonlóan célszerű csinálni, mint ahogy az A/D átalakítók egyes típusai működnek.
https://en.wikipedia.org/wiki/Successive-approximation_ADC
https://circuitdigest.com/article/how-does-successive-approximation-sar…
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Én balga! Elfogadtam renard tanácsát. Nem kellett volna. (Szigorúan zárójelben jegyzem meg, hogy én is bináris kereséssel akartam végigmenni, azzal a különbséggel, hogy én elsőre a legelsőt akartam kipróbálni, és csak utána lépkedni így "felezve".)
Szóval rossz hírem van:
# history
1 21:28 dd of=/dev/da0 bs=16M if=disk_008.img
2 21:29 dd of=/dev/da0 bs=16M if=disk_004.img
3 21:30 dd of=/dev/da0 bs=16M if=disk_002.img
4 21:31 dd of=/dev/da0 bs=16M if=disk_001.img
5 21:32 dd of=/dev/da0 bs=16M if=disk_000.img
Azaz már a 000-s imidzs is villódzik.
(Mellesleg nem vagy valahol BP közelében? Szívesen kölcsönadom az ominózus gépet egy-két hétre, ha van kedved vele vacakolni.)
- A hozzászóláshoz be kell jelentkezni
Mi van akkor, ha az 1. image még nem hibázik, de a 2. image igen, és a te módszereddel mész? :)
- A hozzászóláshoz be kell jelentkezni
Ugyanúgy az 5. lépésnél lett volna meg, mint most :-) Ha az első 2-ben van hiba, a te módszereddel 5 illetve 4 lépés, az enyémmel 1 illetve 5 lépés kellett volna. Azaz átlagban az enyém jobb :-D
De igazából arra akartam kilyukadni, hogy bennem a legesső sikertelen netbookos kisérlet óta motoszkál a fejemben, hogy valahol nagyon korán kezd el zűrölni a dolog, ezért akartam az első meglevővel kezdeni. De persze meggyőzött a matematika.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Off: mikor 25 éve boot-loadert próbáltam tákolni, azt vettem észre, hogy a video-bios string-kiíró funkciója nem megy, de a karakterkiíró igen.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
> Plusz az efistub nem tud normál ELF meg PE kerneleket tölteni Multiboot2-vel ;-)
Úgy értettem,hogy nekem mivel lenne jobb :) A backup egyszerűbb indítása már előny!
> Nagyszerű, köszönöm! Ezt érdemes lenne valahogy berakni a repóba, ha hozzájárulsz. Attribution requirements?
Előbb legyen egy 0.0.1-es verzió, mint mérföldkő és mellette a -9999 git verzió, aztán mehet. Csak git verzió azért nem jó, mert ha épp egy olyan pillanatban készül bináris ami eltörik, nincsen hová visszalépni és úgy sosem kerülhet be a hivatalos repóba.
> Félreérted, a generálandó lemezképen nincs elég hely! Alapból 33 Mb-sre csinálja (a lehető legkissebb FAT32, ami létrehozható). Add meg "-p <mb>" kapcsolóval megabájtban, hogy mekkora boot partíciót szeretnél. (Ez azért kell, mert előre, még a másolás elkezdése előtt tudni kell, mekkora területet fog lefoglalni a FAT tábla.)
Ahh... :) Szóval csak optimalizálni kell valahogyan az initrd generálást, a dracut legutóbbi initrd-je 60+ Mb.
Épp dolgozom egy minimalizált hypervisoron gentoo alapokon. A képességei az összes járatos konténer technika és virtualizáció telepítésének lehetősége, de választhatóan: egyik vagy másik konténer, minden konténer akár, virtualizációval vagy nélküle. A telepítőt írom éppen és mivel a minimalizált helyfoglalás a célom, a projekted nagyon is beleillik! Egyelőre a rootfs-el voltam elfoglalva, kicsit ránézek az initrd generálásra, mert ez eddig fel sem tűnt, hogy ekkora bazi nagy és ezt a szálat követem.
Szerk: közben látom, hogy 6 órája megszületett a 0.0.1-es verzió, így a módosított ebuild a következő:
# Copyright 2023 .....
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DESCRIPTION="Dependency-free, suckless bootable disk image creator"
HOMEPAGE="https://gitlab.com/bztsrc/simpleboot"
LICENSE="MIT"
SLOT="0"
IUSE="rebuild"
# If PV starts with 9999, use git-r3 for version control
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI='https://gitlab.com/bztsrc/simpleboot.git'
else
inherit vcs-snapshot
EGIT_COMMIT="28164466"
SRC_URI="https://gitlab.com/bztsrc/simpleboot/-/archive/${EGIT_COMMIT}/simpleboot-${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~amd64 ~x86"
fi
BDEPEND="
rebuild? (
dev-lang/fasm
sys-devel/llvm
sys-devel/lld
)
"
src_prepare() {
default
# Nothing specific to prepare
}
src_compile() {
if use rebuild; then
emake -C src distclean || die "Failed to execute 'make -C src distclean'"
fi
emake -C src -j1 || die "Failed to build simpleboot"
}
src_install() {
dobin src/simpleboot || die "Failed to install simpleboot"
# Create the /etc/simpleboot directory if it does not exist
dodir /etc/simpleboot
# Copy the example/simpleboot.cfg as simpleboot.cfg to /etc/simpleboot
insinto /etc/simpleboot
newins example/simpleboot.cfg simpleboot.cfg.example || die "Failed to copy simpleboot.cfg"
}
pkg_config() {
einfo "Creating Simpleboot configuration file in /etc/simpleboot directory..."
# Simpleboot configuration file creation in the /etc/simpleboot directory
local simpleboot_cfg="${EROOT}/etc/simpleboot/simpleboot.cfg"
local kernel_list=("${EROOT}"/boot/vmlinuz-*)
# Find the latest and oldest kernel version
local latest_kernel_version=""
local oldest_kernel_version=""
for kernel_file in "${kernel_list[@]}"; do
kernel_version=$(basename "${kernel_file}" | cut -d- -f2-)
if [[ -z "${latest_kernel_version}" ]] || [[ "${kernel_version}" > "${latest_kernel_version}" ]]; then
latest_kernel_version="${kernel_version}"
fi
if [[ -z "${oldest_kernel_version}" ]] || [[ "${kernel_version}" < "${oldest_kernel_version}" ]]; then
oldest_kernel_version="${kernel_version}"
fi
done
echo "# New" > "${simpleboot_cfg}"
echo "verbose 2" >> "${simpleboot_cfg}"
echo "kernel vmlinuz-${latest_kernel_version}" >> "${simpleboot_cfg}"
echo "module initramfs-${latest_kernel_version}.img" >> "${simpleboot_cfg}"
echo "framebuffer 1920 1080 32" >> "${simpleboot_cfg}"
echo "bootsplash #af00d7 splash.tga" >> "${simpleboot_cfg}"
echo "" >> "${simpleboot_cfg}"
echo "# Backup" >> "${simpleboot_cfg}"
echo "verbose 3" >> "${simpleboot_cfg}"
echo "backupkernel vmlinuz-${oldest_kernel_version}" >> "${simpleboot_cfg}"
echo "backupmodule initramfs-${oldest_kernel_version}.img" >> "${simpleboot_cfg}"
echo "backupframebuffer 640 480 32" >> "${simpleboot_cfg}"
echo "backupbootsplash #af00d7 backup_splash.tga" >> "${simpleboot_cfg}"
# Calculate the size of the latest kernel file
local latest_kernel_file="${EROOT}/boot/vmlinuz-${latest_kernel_version}"
local latest_kernel_size=0
if [[ -f "${latest_kernel_file}" ]]; then
latest_kernel_size=$(stat -c %s "${latest_kernel_file}")
fi
# Calculate the size of related initramfs and splash files
local initramfs_file="${EROOT}/boot/initramfs-${latest_kernel_version}.img"
local initramfs_size=0
if [[ -f "${initramfs_file}" ]]; then
initramfs_size=$(stat -c %s "${initramfs_file}")
fi
local splash_file="${EROOT}/boot/splash.tga"
local splash_size=0
if [[ -f "${splash_file}" ]]; then
splash_size=$(stat -c %s "${splash_file}")
fi
# Calculate the total size of the latest files
local latest_total_size=$((latest_kernel_size + initramfs_size + splash_size))
# Calculate the size of the oldest kernel file
local oldest_kernel_file="${EROOT}/boot/vmlinuz-${oldest_kernel_version}"
local oldest_kernel_size=0
if [[ -f "${oldest_kernel_file}" ]]; then
oldest_kernel_size=$(stat -c %s "${oldest_kernel_file}")
fi
# Calculate the size of related backup initramfs and splash files
local backup_initramfs_file="${EROOT}/boot/initramfs-${oldest_kernel_version}.img"
local backup_initramfs_size=0
if [[ -f "${backup_initramfs_file}" ]]; then
backup_initramfs_size=$(stat -c %s "${backup_initramfs_file}")
fi
local backup_splash_file="${EROOT}/boot/backup_splash.tga"
local backup_splash_size=0
if [[ -f "${backup_splash_file}" ]]; then
backup_splash_size=$(stat -c %s "${backup_splash_file}")
fi
# Calculate the total size of the oldest files
local oldest_total_size=$((oldest_kernel_size + backup_initramfs_size + backup_splash_size))
# Calculate the overall total size
local overall_total_size=$((latest_total_size + oldest_total_size))
# Print the sizes of the latest and oldest files
einfo "Size of the latest files: ${latest_total_size} bytes"
einfo "Size of the oldest files: ${oldest_total_size} bytes"
# Check if the total size is too large
if [[ ${overall_total_size} -gt 33000000 ]]; then
ewarn "Total size of related files is too large (${overall_total_size} bytes). The generated image exceeds the allowed 33 MB size."
fi
# Print the content of the configuration file
einfo "Content of Simpleboot configuration file:"
cat "${simpleboot_cfg}"
# Check if the configuration file exists in /etc/simpleboot
if [[ -e "${EROOT}/etc/simpleboot/simpleboot.cfg" ]]; then
einfo "Configuration file successfully copied to /etc/simpleboot."
else
ewarn "Failed to copy configuration file to /etc/simpleboot."
fi
}
ezt kell menteni simpleboot-9999.ebuild néven majd másolni a simpleboot-0.0.1.ebuild fájlba. Ezen a ponton a 28164466 Commit lesz a 0.0.1-es verzió amíg nem lesz egy hivatalos letölthető 0.0.1 kiadás. Egyúttal a --config kiírja a konzolra az méreteket is és figyelmeztet ha a méret túl nagy.
A telepítés menetét is beleteheted a doksiba ha gondolod.
Saját repo létrehozása után a fájlokat a repo alatt a sys-boot/simpleboot mappába kell helyezni, majd
ebuild simpleboot-0.0.1.ebuild digest
parancs ami létrehozza a Manifest fájlt. Ezután a
echo "sys-boot/simpleboot ~amd64" >> /etc/portage/package.accept_keywords/sys-boot
engedélyezi a nem stabilnak kikiáltott csomagunkat és így telepíthető a
emerge -pv sys-boot/simpleboot
emerge -pv =sys-boot/simpleboot-9999
USE="rebuild" emerge -pv sys-boot/simpleboot
parancsok valamelyikével (a -p elhagyása után települ, így csak megmutatja, hogy mi történne ha...)
PS: az EGIT_COMMIT="28164466" helyett jobban tetszene egy kiadott verzió, egyszerűbben karbantartható az ebuild, mert akkor nem commit alapján kezeljük a verziót, hanem kiadás alapján.
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
Ha jól értem, nem kell az initrd-t optimalizálnod, csak meg kell mondanod, hogy nagyobb legyen az image, s ezáltal belefér majd a dracut által csinált nagy initrd.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Jól érted, de a tervezett rootfs jelenleg 35MB, nevetséges lenne egy 130MB-s boot :) A dracut hostonly rögtön 12800K környékére csökkentette az initrd-t, majd még optimalizálok amit lehet! Közben az ebuild is változott, hozzáadtam ezt:
# Calculate the overall total size in MB and round up to the nearest integer
local rounded_space_mb=$(( (overall_total_size + 999999) / 1000000 ))
# Check if the total size is too large
if [[ ${overall_total_size} -gt 33000000 ]]; then
ewarn "Total size of related files is too large (${overall_total_size} bytes). The generated image exceeds the allowed 33 MB size (by default)."
einfo "Command usage example: simpleboot -vv -p ${rounded_space_mb}MB ./ simpleboot.img"
fi
így példaként kiírja az épp elégséges -p értéket egész MB-re kerekítve (már nem tudom szerkeszteni az előző hozzászólásom).
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
> Csak egy apróság, MiB-ben számold (1000000 helyett 1048576). Erre nem is gondoltam, hogy kiírható az "MB", de tényleg működik így is az atoi miatt, és olvashatóbb.
Megtörtént:
# Calculate the overall total size in MB and round up to the nearest integer
local rounded_space_mib=$(( (overall_total_size + 1048575) / 1048576 ))
# Check if the total size is too large
if [[ ${overall_total_size} -gt 34603008 ]]; then
ewarn "Total size of related files is too large (${overall_total_size} bytes). The generated image exceeds the allowed 33 MiB size (by default)."
einfo "Command usage example: simpleboot -vv -p ${rounded_space_mib} ./ simpleboot.img"
else
einfo "Command usage example: simpleboot -vv ./ simpleboot.img"
fi
> Egyébként egyelőre beraktam az eredeti ebuild-edet, majd ha lesz végleges verzió, szólj, és frissítem!
> https://gitlab.com/bztsrc/simpleboot/-/tree/main/distrib
Láttam, így fedeztem fel, hogy van 0.0.1-es deb-ed. Végleges ebuild akkor lesz ha lesz 0.0.1-es kiadás, hogy ne commit-ra támaszkodjunk, mert akkor minden nagyobb változáskor kell az ebuild tartalmát is változtatni. Ha van kiadás, onnantól ha nem változnak a függőségek és a Makefile, csak az ebuild nevében kell a verziószámot megváltoztatni és már aktuális is. Ehhez az ebuilden nem sokat kell változtatni, csak a commit helyett a megfelelő verzió tömörítvényét kell letölteni. Figyelem a repódat, ha látom, hogy van, módosítok!
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Mindjárt próbálom, de kérlek csinálj egy valami release-t, azzal kész lenne az ebuild.
Szerk:
félreértettem! Csak egy release kell és akkor ez a végleges ebuild:
sys-boot/simpleboot-9999.ebuild
# Copyright 2023 .....
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DESCRIPTION="Dependency-free, suckless bootable disk image creator"
HOMEPAGE="https://gitlab.com/bztsrc/simpleboot"
LICENSE="MIT"
SLOT="0"
IUSE="rebuild"
# If PV starts with 9999, use git-r3 for version control
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI='https://gitlab.com/bztsrc/simpleboot.git'
else
SRC_URI="https://gitlab.com/bztsrc/simpleboot/-/archive/${PV}/simpleboot-${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~amd64 ~x86"
fi
BDEPEND="
rebuild? (
dev-lang/fasm
sys-devel/llvm
sys-devel/lld
)
"
src_prepare() {
default
# Nothing specific to prepare
}
src_compile() {
if use rebuild; then
emake -C src distclean || die "Failed to execute 'make -C src distclean'"
fi
emake -C src -j1 || die "Failed to build simpleboot"
}
src_install() {
dobin src/simpleboot || die "Failed to install simpleboot"
# Create the /etc/simpleboot directory if it does not exist
dodir /etc/simpleboot
# Copy the example/simpleboot.cfg as simpleboot.cfg to /etc/simpleboot
insinto /etc/simpleboot
newins example/simpleboot.cfg simpleboot.cfg.example || die "Failed to copy simpleboot.cfg"
}
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
> Erre miért van szükség? Az SRC_URI-ban simán lehetne a PV "main".
Ha van egy csak git-re alapozott csomagod, az mindig fejlesztői állapotban van és nem nevezhető stabilnak ha egyetlen kiadott verziója sincsen! A release egy rögzített állapot! Ez még ha lehetnek is hibái, egy stabil amibe új funkció már nem kerül csak hibajavítások. Ha a git-ről telepített 9999-es nek nevezett verziót lehet csak elérni az nem tekinthető állandónak és így stabilnak sem. Ebben az esetben nem lesz a gentoo stabil ágának sem a része soha. Ez igaz bármely szoftverre. Valamiért a deb verziót is elnevezted 0.0.1-nek.
> Ez így biztos nem jó. A simpleboot.cfg-nak semmi keresnivalója az /etc-ben. Ennek abba a könyvtárba kell kerülnie, amiből a lemezképed gyártod, és majd bootoláskor fogja a loader használni. Kb. mint a /boot/grub/grub.cfg (bár ott nyakatekert, hogy mikor ki használja...) Illetve semmi értelme az example/simpleboot.cfg-t másolni, mert az úgy működésképtelen, csak a szintakszist demózza (meg lustáknak van, hogy legyen honnan copy'n'paste-elni).
Ez benne maradt véletlenül, korábban arra gondoltam, hogy automatizálva a telepítést lehessen egy meghatározott stabil kernelt backup-ként használni (jellemzően egy kernel frissítés utáni simpleboot paranccsal) és egy időben frissebbet pedig mint elsődlegest. Ezeket a /boot mappában ellenőrizte az ebuild és abból gondoltam generáltatni a cfg alapján az image-t. Ehhez a /etc alatt gondoltam az állapotot rögzíteni és az example mellé generált cfg-t használni ahol az example a puska, mint sok más konfig esetében is. Ez már azért sem volt jó, mert a programod a mappa teljes tartalmával dolgozik, a /boot alatt meg lehet több is időnként, mint ez a két verzió, így mindenképpen másolgatni kell a fájlokat valahová a cfg-vel együtt. Ez az én félreértésem volt, természetesen nincs ebben az értelemben semmi keresnivalója a /etc alatt, hanem valahová a csomag dokumentációjába való. A pkg_config rész törlésével egy időben kellett volna törölnöm, de elfelejtettem, így most ez a maradék a végleges, ahol ha lesz release, akkor kezeli, ha nem akkor pedig az aktuális git verziót telepíti a fájl nevétől függően. Fentebb írtam, hogyan működik az ebuild esetében ez.
# Copyright 2023 .....
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DESCRIPTION="Dependency-free, suckless bootable disk image creator"
HOMEPAGE="https://gitlab.com/bztsrc/simpleboot"
LICENSE="MIT"
SLOT="0"
IUSE="rebuild"
# If PV starts with 9999, use git-r3 for version control
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI='https://gitlab.com/bztsrc/simpleboot.git'
else
SRC_URI="https://gitlab.com/bztsrc/simpleboot/-/archive/${PV}/simpleboot-${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~amd64 ~x86"
fi
BDEPEND="
rebuild? (
dev-lang/fasm
sys-devel/llvm
sys-devel/lld
)
"
src_prepare() {
default
# Nothing specific to prepare
}
src_compile() {
if use rebuild; then
emake -C src distclean || die "Failed to execute 'make -C src distclean'"
fi
emake -C src -j1 || die "Failed to build simpleboot"
}
src_install() {
dobin src/simpleboot || die "Failed to install simpleboot"
}
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
> úgy látszik, túlságosan hozzászoktam a rolling release disztrókhoz :-)
Azért a gentoo elég rolling szerintem :)
> Rendben, lesz release, majd szólok.
Csak másold az ebuildet és nevezd át, a simpleboot-9999.ebuild marad és lesz mellette egy simpleboot-valamiverzió.ebuild ahol a valamiverzió lesz amit te kiadtál verziónak. Ha lesz újabb, akkor megint másol/átnevez.
> Az ebuild-et frissítettem (annyit nyúltam csak bele, hogy rakja fel a man page-t, mert időközben lett olyanja is, illetve a kommentet átírtam, mert MIT-s, nem GPL)
az ebuild maga az GPL, a te licenced alatta van a szkriptben, az vonatkozik az alkalmazásra.
DESCRIPTION="Dependency-free, all-in-one OS loader and bootable disk image creator."
HOMEPAGE="https://gitlab.com/bztsrc/simpleboot"
LICENSE="MIT"
> téged pedig megneveztelek contributor-nak!
ezt kihagyhattad volna :) nem tartok rá igényt (ezért pontoztam ki).
> Köszönöm!
Szívesen!
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
Az EFI stub bootot én is szeretem, amikor a kernelbináris (vminuz-linux) közvetlenül bootol el UEFI-ból. Kár, hogy csak Gentoo-n tudom használni, Arch/Artix-on az initramfs bezavar neki, és nem tudtam működésre bírni soha, így systemd-bootot használok, aminek persze semmi köze nincs a systemd-hez, igazából a Gummiboot projekt átnevezve. A Void Linux sajnos rákényszeríti a bloat GRUB-ot a felhasználóra, ahogy sok mainstream disztró, feleslegesen. Bár néha nem felesleges a GRUB, ha valami egzotikus fájlrendszerről kell bootolni, vagy RAID-ről, de átlag desktop usernél ez rikta.
Viszont azt elismerem, hogy az EFI stub boot nem játszik, ha a felhasználónak szüksége van extrákra, kernel parancssor szerkesztése, btrfs snapshotok bebootolása, stb..
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Én is próbáltam EFI stub-bal bootolni, de amikor így indítottam a rendszert, akkor semmilyen usb-s eszközt nem ismert fel a rendszer így visszatértem a GRUB-hoz. :/
(dual boot windows 10 22h2-vel + kernel boot paraméterek)
- A hozzászóláshoz be kell jelentkezni
Látom, hogy RPi3 (4)-hez is jelentek meg módosítások. Ugye tudod, hogy egy ideje a málna tud UEFI környezetet is használni? ( lásd https://github.com/pftf/RPi4 - vagy RPi3 ) Pl. ha valaki játszani (használni) szeretne VMware ESXi -t málnán, akkor ahhoz UEFI bootot kell beállítani.
Értelemszerűen akkor a szabvány elnevezésű boot loader: EFi / BOOT / BOOTAA64.EFI
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Sajnálattal hallom, de azért eléggé logikus lépés. (De kezdem érteni, hogy miért van boot, zfsboot, gptboot és gptzfsboot és ezen kívül loader és loader.efi FreeBSD-n - és ez csak az i386 és az Amd64 platform. Hol van még az Arm, az Arm64 (khmm Aarch64), meg a RiscV, meg a többi architektúra.)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
No tesztelem az Acer netbook-on a második készletet.
disk_009.img - még jó a képernyő
disk_010.img - villódzik a képernyő
disk_011.img - villódzik a képernyő
disk_012.img - villódzik a képernyő és morzézik (tá-tá-tá-ti-ti) - ellenben ezt (fütyülés) nem tudom stabilan reprodukálni - de mivel nem is ez a lényeg, csak érdekességképpen írtam
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
De tudja, ott van az AMD Features sor legvégén az LM (ez a natív 64-bites FreeBSD bootüzenet elején látszik.)
CPU: AMD C-60 APU with Radeon(tm) HD Graphics (997.53-MHz K8-class CPU)
Origin="AuthenticAMD" Id=0x500f20 Family=0x14 Model=0x2 Stepping=0
Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
Features2=0x802209<SSE3,MON,SSSE3,CX16,POPCNT>
AMD Features=0x2e500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM>
AMD Features2=0x35ff<LAHF,CMP,SVM,ExtAPIC,CR8,ABM,SSE4A,MAS,Prefetch,IBS,SKINIT,WDT>
SVM: NP,NRIP,NAsids=8
TSC: P-state invariant, performance statistics
(Ezt az MSR-t nem tudom hogy tudnám kinyerni, bár korábban valami kapcsán rémlik, hogy láttam.)
- A hozzászóláshoz be kell jelentkezni
lehet hogy unrelated, de hackintosh (macos on pc) kapcsan eleg gyakran elojon az a problema, hogy sok alaplap (foleg laptopoknal) biosa letiltja az msr regisztereket, a macos meg elegge hianyolja :) van bios ahol ez allithato, de a legtobbnel biost kell patchelni.
- A hozzászóláshoz be kell jelentkezni
No megtaláltam, ha be van töltve a cpuctl nevű kernel modul, akkor egyrészt a csomagból telepíthető, általános
# x86info -m
másrészt a FreeBSD sepcifikus
# cpucontrol -m 0xXY /dev/cpuctl0
paranccsal lehet kérdezgetni MSR-t. Csak épp azt nem tudom, hogy hanyas számú az, ami neked kell.
root@acer:~ # cpucontrol -m 0x0 /dev/cpuctl0
MSR 0x0: 0x00000000 0x00000000
root@acer:~ # cpucontrol -m 0x01 /dev/cpuctl0
MSR 0x1: 0x00000000 0x00000000
root@acer:~ # cpucontrol -m 0x10 /dev/cpuctl0
MSR 0x10: 0x000001d7 0x338f5161
0x12-ig próbáltam, a többi hibát adott.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Nem teljesen felhőtlen a mosolyom. Semmi épkézláb ötletem nincs, hogy mi eredményezi, de kb 40:60 arányban nem villog / villog. Mindegy a 3 portjából melyikbe van bedugva, mindegy, hogy hosszabb vagy rövidebb kikapcs után bootol, nem számít, hogy a boot manageréből helyből indítom, vagy előbb legalább át- (és vissza)lépek erre az eszközre - nem találom a rendszert benne.
Szóval ez a fent levő disk.img -ről bootol, de kissé változékony az eredménye.
De legalább lekérdeztem a gépen az msr-t:
# cpucontrol -m 0xC0000080 /dev/cpuctl0
MSR 0xc0000080: 0x00000000 0x00000d01
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Sajnos ez is villog.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ne törd magad, ezek a netbookok, illetve általánosságban mondható, hogy az alja asus, acer, msi gépek előszeretettel csinálják meg a világ legegyedibb és egyben legbugosabb bios/firmware verzióját, hogy ezzel is szopassák aki véletlen megveszi.
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
Messziről figyelem a témát, és remélem kiforrja magát, a grub2 nekem se a szívem csücske. :) Viszont ezzel az ACER-es "mizériával" kapcsolatban eszembe jutott valami. Én is használok időnként egy netbúkot, és bootnál, amikor a (nem szeretem) grub2-ben kiválasztom, mi töltődjön, egy darabig kikapcsol a képernyő, valamilyen inicializálásig nincs is kép. Nem lehet, hogy itt valami olyan hibát kergetsz, ami nem is a te kódodban van? :) Értem ez alatt azt, hogy az adott üzemmód váltásnál, amit meg kell csinálnod, az után (bugos UEFI/BIOS, bugos hardver, bugos bármi miatt) amúgy is szétesik a megjelenítés? És kellene valami inicializációt, bármi hívni / csinálni, hogy helyre jöjjön? A gyártó ezt belehekkelte abba az egyetlen OS-be, amit ismert, "minden más meg le van ejtve" címszóval.
- A hozzászóláshoz be kell jelentkezni
Fel tudnál tölteni valahová egy képernyőfotót?
Btw: a 32 és 64-bites verzió egyformán villog?
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Látom halad a RPi támogatás, az ebuildba beletehetnéd így:
KEYWORDS="~arm64 ~amd64 ~x86"
Ha esetleg régebbi 32 bites ARM-re is jó, akkor az ~arm is mehet bele.
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
dupla
„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”
dzsolt
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
> fullos verzió kapcsán megpályáztam az FSF-nél. Ha elnyerem
van mar eredmeny?
- A hozzászóláshoz be kell jelentkezni
Ha van időd és kedved, nincs kedved egy szopásmentes UPS daemont is írni? :D
Az apcupsd csak apc-t tud. A nut-hoz meg ahányszor hozzá kell nyúlnom, annyiszor hullik ki a hajam...
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
> nincs kedved egy szopásmentes UPS daemont is írni
kar hogy nem korabban kerdezted, en lehet bevallaltam volna egy fsf palyazat formajaban...
> apcupsd csak apc-t tud
ez nem teljesen igaz, hasznaltam mar mashoz is
- A hozzászóláshoz be kell jelentkezni
Igen, ami esetleg véletlen kompatibilis vele. Régebben (5+ éve) vettünk sok powercom-ot, az ment vele meg viszonylag jó is volt. De az utolsó darabok már nem mentek vele. Aztán megszűnt, mást meg még nem találtam. Próbáltunk sok mindent, egyik másik orbitálisan kegyetlen pusztulatos szar volt, aztán azt mondtam, hogy jó, innentől akkor csak APC-t veszünk, nem érdekel mennyibe kerül, nem akarok szopni. Ettől függetlenül beesik egy pár más, főleg amit nem mi vettünk.
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
Én most szerettem volna kipróbálni, használni, de félóra "homokórázás" után "kontroll C" nyomtam
wt@Z500:~$ simpleboot / /dev/sdb1/ubuntu.img
^C
Valószinű, hogy nem jól értelmeztem az egyszerűnek mondott dolgokat.
1 - letöltöttem, telepitettem a home könyvtárból futtattam / paraméterrel mint input könyvtárral.
2 - kimenetnek pedig a /dev/sdb1/ eszközt adtam meg az ubuntu.img fájlnévvel.
Mit csesztem el ? Mit csináljak másként ?
üdv: virtualm
- A hozzászóláshoz be kell jelentkezni
Nem hiszem, hogy meg tudná ezt nyitni írásra:
$ touch /dev/sdb1/ubuntu.img
touch: cannot touch ‘/dev/sdb1/ubuntu.img’: Not a directory
- A hozzászóláshoz be kell jelentkezni
A /dev/sdb1 az egy file, nem directory.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Mi a helyes parancs ?
Azt megköszönöm, mert ez tényleg nem ok, azért irtam ide.
üdv: virtualm
- A hozzászóláshoz be kell jelentkezni
Ahogy írták, felcsatolod az sdb1-et valahova, s akkor abba a filerendszerbe tudsz írni.
mkdir /mnt/valami
mount /dev/sdb1 /mnt/valami
cd /mnt/valami
Mindent root joggal.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Mit csesztem el ?
Úgy tűnik, hogy ezt:
kimenetnek pedig a /dev/sdb1/ eszközt adtam meg az ubuntu.img fájlnévvel.
Ha jól értelmezem a dokumentációt, akkor kimenetnek megadhatod pl. a /dev/sdb eszközt, vagy egy fájlt a teljes elérési útvonalával. Az esetedben először csatolnod kellene a /dev/sdb1-et a fájlrendszerhez, pl. a /mnt/akarmi-be, majd utána ilyesminek kellene lennie a parancsnak:
simpleboot / /mnt/akarmi/ubuntu.img
Ha az ubuntu.img már előzőleg létezett ott, és helyette egy újat akarsz létrehozni, akkor kell még egy -c a parancshoz:
simpleboot -c / /mnt/akarmi/ubuntu.img
Amennyiben egy bootolható pendrive-ot szeretnél készíteni, akkor talán ez a jó parancs:
simpleboot / /dev/sdb
- A hozzászóláshoz be kell jelentkezni
futtattam / paraméterrel mint input könyvtárral.És ezt mégis hogyan gondoltad? A könyvtárnak azokat a fájlokat kell tartalmaznia, amik a létrehozandó lemezkép boot partíciójára kerülnek. Minek akarod a teljes fájlrendszeredet egy szerencsétlen FAT partícióra szuszakolni (aminek a maximális mérete 4G)? Arról nem is beszélve, hogy a cél lemezkép is ugyanezen a fájlrendszeren található (/mnt a / alatt van, ugyebár), szóval...
kimenetnek pedig a /dev/sdb1/ eszközt adtam meg az ubuntu.img fájlnévvel.Ismételten, mégis hogyan gondoltad? Ennek semmi értelme. Célnak vagy egy lemezképet adsz meg (pl. /home/virtualm/ubuntu.img vagy /mnt/ubuntu.img), vagy pedig egy teljes device fájlt (pl. /dev/sdb), de semmiképpen sem egy partíciót (mint ami a /dev/sdb1), arról nem is beszélve, hogy a /dev/sdb1/ubuntu.img-nek meg végképp se füle se farka. Persze technikailag megadható a /dev/sdb1, és a partíción belül lehetséges egy újabb GPT-t létrehozni, csak épp értelme nincs sok. Szóval nem egészen világos, hogy mit szeretnél. De az biztos, hogy a könyvtárnak a boot partíció fájljait kell tartalmaznia, tehát a gyökér / mindenképp hülyeség, legjobb esetben is /boot (feltéve, ha oda van felcsatolva a mostani ESP partíciód). Célnak meg vagy egy lemezkép, vagy egy teljes device. Remélem segít, bár tényleg nem értem, mi lett volna a célod ezzel a paranccsal. Szerk: Nézd meg ezt. Ez magyarul van, igaz az Easyboot doksija, de a két parancs majdnem 100%-ig azonos (a Simpleboot-nak megadható a -k és -i kapcsolóval a betöltendő kernel és initrd neve, ha nem lenne konfig fájlod, ilyen az Easyboot-nál nincs, mert az több boot opciót is kezel, emiatt mindenképp kell a konfig fájl. Van viszont -r, amivel root partíciót adhatsz hozzá, neked az biztos nem kell. A konfig parancsai is hasonlóak, bár ott már jelentős különbségek vannak, de ettől függetlenül maga a parancs hívás doksija jó ahhoz is.)
- A hozzászóláshoz be kell jelentkezni
Mit csesztem el ?Először is szerintem azt, hogy ez nem egy oprendszer telepítő, hanem egy rendszerbetöltőtelepítő (mint a grub-install, az sem telepíti fel a rendszert, csak a betöltőt). Szóval tegyük fel, hogy a /dev/sdb-re felraktál egy ubuntu-t, és le akarod cserélni az ott lévő grub-ot simpleboot-ra. Ekkor kell egy könyvtár, legyen a neve "konfig", ebben mindössze egyetlen "simpleboot.cfg" fájlra van szükséged, majd
simpleboot konfig /dev/sdb
Ennek hatására a simpleboot parancs megnézi a /dev/sdb-n a már meglévő GPT partíciókat, az ESP-re felmásolja a simpleboot.cfg fájlodat és a betöltő programot (mást nem kell, hiszen a többi fájlt már odarakta az ubuntu telepítő). Partíciót és fájlrendszert nem fog létrehozni, és az ESP-n (amit /boot-ra mountol az ubuntu) kívül más partíciót egyáltalán nem is fog piszkálni. Az ESP az egy olyan partíció, aminek speciális a típuskódja, és FAT32-re van formázva (ezt az ubuntu telepítő már megcsinálta neked, oda rakta ugyanis a grub-ot, a kerneled meg az initrd-éd).
Ez így érthetőbb?- A hozzászóláshoz be kell jelentkezni
Igen, az /dev/sdb (SSD drive) van egy Ubuntu. Az eredeti belső hdd-n van a régi ubuntu, amit egy darabig megtartanék, főleg a /home alatti cuccokat. Tehát ha úgytetszik, bootmanaggerként használnám a simpleboot tudományát. ( ha jól értelmeztem a dolgokat )
A probléma az, hogy nincs simpleboot.cfg file. Hol keressem, hogyan legyen simpleboot.cfg ?
üdv: virtualm
- A hozzászóláshoz be kell jelentkezni
Bzt, szép munka és gratulálok, hogy ezt létrehoztad.
Alternatíva, 10000 Ft körüli összegbe kerülő program: BootIt Bare Metal és persze van UEFI verziója is. Jó a teljes körű, parancssoros és grafikus boot manager feladatokon túl még biztonsági mentésre, klónozásra, file rendszer átméretezésre, javításra, mindenre, amire szükség lehet. Generál boot pendriveot vagy cédét, mindent megold. Számomra az a meglepő, hogy az egész pár száz kbyte méretű, ami kezel mindenféle operiációs rendszert, file rendszert, imaging, meg minden. Nagyon sok mindent tud, és megbízhatóan megy évek óta, soha nem okozott problémát, inkább segített megoldani.
Ne értsd félre, nem azt mondom, hogy felesleges amit létrehoztál, mert egyrészt te sokat fejlődtél tőle, másrészt biztos van akinek hasznos. Csak azért mutatom, hogy ennek a funkcionalitását megvalósítani talán több év folyamatos munkája lenne. Ez csak egy lehetőség, amit jobban megismertem, van még sok más, itt 23 lehetőséget szedtek össze, javasolnám a te programodat is ide tenni, hogy még könnyebben más is megtalálja. A BootItre meg 18 hasonlót szedtek össze. Szóval jó sok lehetőség van.
- A hozzászóláshoz be kell jelentkezni
Bzt, szép munka és gratulálok, hogy ezt létrehoztad.Kösz!
Alternatíva, 10000 Ft körüli összegbe kerülő programFizetős és zárt forráskódú, szó sem lehet róla, nekem semmiképp sem alternatíva.
Jó a teljes körű, parancssoros és grafikus boot manager feladatokon túlEz nem egy boot manager, hanem egy boot loader. Azaz egyetlen kernel-t tud csak betölteni, ugyanúgy, mint például a LILO vagy a syslinux. Ha boot managerre van szükséged, akkor arra ott van az Easyboot aminek van interaktív bootmenüje, amivel több opció közül választhatsz, valamint vannak beépülői is, amivel számos kernelt és boot protokollt támogat (a Simpleboot csak Linux-ot és Multiboot2-t tud, ezzel szemben az Easyboot tud Windows-t, FreeBSD-t, OpenBSD-t, Haiku-t, ReactOS-t, MenuetOS-t, KolibriOS-t, SerenityOS-t stb. is betölteni és képes emulálni a grub bootot minden bugjával egyetemben). Akárcsak a Simpleboot, az Easyboot is ingyenes és nyílt forráskódú.
Ne értsd félre, nem azt mondom, hogy felesleges amit létrehoztál, mert egyrészt te sokat fejlődtél tőle, másrészt biztos van akinek hasznosSemmit sem fejlődtem tőle, ez nekem mellékprojekt volt, mert tele lett a tököm azzal, mennyire szar a syslinux, amit eredetileg a MEG4 bootolására használtam. Azért írtam a Simpleboot-ot, hogy egyszerűen tudjak bootolható MEG4 lemezképet készíteni, semmi másért. Szóval nekem máris hasznos, így mindenképp megérte, ha másnak is jól jön, az már csak a ráadás.
Csak azért mutatom, hogy ennek a funkcionalitását megvalósítani talán több év folyamatos munkája lenne.Hát, nekem az Easyboot-ot megírni pár hónap volt, és ha jól látom, mindazt tudja, amit a BootIt (csak épp ingyenes és nyílt).
javasolnám a te programodat is ide tenniKösz, de inkább a nagytesó Easyboot-ot tolnám. Ha valaki, akinek van alternative.to accountja feltenné a listára az Easyboot-ot, azt megköszönném!
- A hozzászóláshoz be kell jelentkezni
Kerdes az easyboothoz:
"Támogatott fájlrendszerek: FAT12/16/32, NTFS (v3, v3.1), ext2/3/4, mfs (Minix3), FS/Z, BeFS, AXFS"
XFS van?
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
marcsak azert, mert a redhat es tarsai majdnemhogy default-kent kezelik.....
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
CD/DVD ISO hasznalhato virtualis env-eken, makes sense (ha erre vonatkozott a kerdesed)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
...marmint USB boot-ra gondolsz, hogy az mukodik....
persze vannak regebbi fizikai szerverek (is, amik nem tudnak usb bootot, ott jol johet, de a virtualis enveken neha csak a CD boot-ot engedik, emiatt is jol johet)
- A hozzászóláshoz be kell jelentkezni
...marmint USB boot-ra gondolsz, hogy az mukodik....Ööö, nem. A lemezformátum meghajtóagnosztikus (kivéve a CD-t, az külön állatfaj). Paraszti módon megfogalmazva a mostani lemezkép használható még pl. qemu-n "-fda", "-hda", "-drive format=raw" és "-drive if=sd" kapcsolókkal is, azaz nemcsak USBs tárhellyel (röviden bármivel elmegy, kivéve "-cdrom"). Az USB pendrive csak a legtipikusabb eszköz, amivel mostanában oprendszert telepít az ember, de nem az egyetlen lehetőség. Na mind1, beraktam egy "-e" kapcsolót, ennek hatására a kigenerált lemezkép hibrid lemez és CD kép lesz, azaz CD-re egyaránt kiírható, és EFI CDROM-ként is bebootolható. BIOS CDROM boot támogatás túl nagy szívás, az nem lesz (szervereken úgyis EFI van). Nézem ezt az XFS-t, de ez egy kihalt állatfaj. Akárhogy keresek a speckójára, csupa 404-be futok bele, a Linux kernelben meg nincs ledokumentálva (csak a Linux-os interfésze). Végül is ezt találtam a princetoni egyetem szerverén: xfs_filesystem_structure.pdf, most ez alapján dolgozok. A detektálás megvan, a szuperblokkot, allokációs csoportokat és az inode fejlécet már felparszolom, most jön egy adott inode betöltése a B+-treeből (kicsit szopó csak), a fájl offszetek leképezése blokkokra (ezt nem látom még, hogy megy) és a könyvtárbejegyzések végignyálazása (ez sima ügy). Szóval hamarosan érkezik az XFS támogatás, hacsak valami vis major közbe nem jön.
- A hozzászóláshoz be kell jelentkezni
hat az biztos hogy az XFS nem mai darab, emlexem mar 1996-ban SGI gepeken is azt hasznaltunk... kb mint a JFS, az is akkori.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
ah, OK, szoval minden lemezkep agnosztikus, kiveve a CD-t. Ezt nem tudtam. De kosz hogy elmondtad.
Az XFS-sel kapcsolatban. Rengetegen hasznaljak meg mindig ezt, bizonyos esetekben a sebessegi viszonyai jobbak a tobbinel.
Regi, de jol mukodik, az lehet, aluldokumentalt.
- A hozzászóláshoz be kell jelentkezni
(Csak erre a félmondatra válasz.)
Nézem ezt az XFS-t, de ez egy kihalt állatfaj.
Hát nagyon nem. Az igaz, hogy ősöreg, de azért vedd figyelembe, hogy a (tetszik-nem-tetszik) egyik meghatározó disztró gyártója/szállítója, azaz a RedHat (tudom, IBM) a gyakorlatilag erősen hozzá köthető Ext[234] vonalat egy laza mozdulattal kukázta, és egyik napról a másikra ezt az XFS-t javasolja az Ext4 helyett alapértelmezetten. (Valamint pl. a magyarországi süsü-mérnökök körében hangzott el az, hogy ugyan gyárilag az Ext4 a preferált, de ha rajtuk múlik, ők XFS-t konfigurálnak.)
Persze örömmel olvasom, hogy a ledínózás ellenére most ezen ügyködsz.
- A hozzászóláshoz be kell jelentkezni
en sose ertettem ezt a hype-ot az xfs korul. regen se volt jo (max az ext2-hoz kepest, de pl. reiserfs joval gyorsabb volt + journaling) most meg plane elavult minden tekintetben.
- A hozzászóláshoz be kell jelentkezni
Az az XFS szerintem rengeteget változott 96 óta....
Mint ahogy az NTFS is a windows-ok alatt.
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
Az az XFS szerintem rengeteget változott 96 óta....
Hát még 2010 óta is rengeteget kellett neki változnia, mert az ext4 akkoriban porba alázta...
- A hozzászóláshoz be kell jelentkezni
https://www.partitionwizard.com/partitionmanager/xfs-vs-ext4.html
(Usain Bolt biztosan gyorsabban fut nálam, de pingpongban még akár meg is verhetném, abban talán nem ő a jobb.)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
> opcionálisan használ B+fát, az ext4 meg sehogy, helyette nyakatekert módon tárolt hashel szopik
mondjuk annyi elonye van, hogy a sima listazas is gyors marad, ez nem mondhato el pl. a btree-s reiserfs vagy btrfs-rol (nyilvan ez akkor erdekes, ha sok millio file van egy konyvtarban)
> hogy közben bitkompatíbilis maradt az ext2-vel
amit az extentek miatt el is veszit gondolom (en vagy 10 eve implementaltam ext2/3/4 parsert, de ugy remlik annyira azert az ext4 nem volt visszafele kompatibilis, csak az ext3 nagyjabol, az talan csak ext2+journaling)
- A hozzászóláshoz be kell jelentkezni
mondjuk annyi elonye van, hogy a sima listazas is gyors maradEz igaz, viszont az megmaradt volna akkor is, ha a hasht nem szuszakolja be a bejegyzések közé, hanem egy külön data streambe rakja. A kompatibilitást sem befolyásolta volna, és a hash tábla beolvasás hatékonysága sem lenne a béka segge alatt.
ez nem mondhato el pl. a btree-s reiserfs vagy btrfs-rolEzzel nagyon nagyon egyet értek. Szerintem is azért hülyeség a B+tree használata fájlrendszerekben, mert lehet, hogy egy elem keresése gyors vele, viszont minden más művelet (hozzáadás, törlés, listázás) meg nehézkes, körülményes és/vagy lassú. Ha csak a forrás olvashatóságát és minőségét nézem (a Linux kernelmodulokét), akkor ezt a B+tree-t legszebben a BeFS oldja meg, de még arra is érvényes mindez (pedig ott még beraktak egy overflow pointert is a node-okba, hogy a listázást gyorsítsák, mégis a hozzáadás és a törlés továbbra is lassú és körülményes). Szerény véleményem szerint a Linux kernelmodulok közül az XFS B+tree implementációja a legcsúnyább, túltolták benne az absztrakciós szinteket, irdatlan mennyiségű függvényt használ feleslegesen. Ezek aztán alkalmasint beiktatnak egy indirekt függvényhívást, így szerencsétlen fordítónak esélye sincs, hogy fordításkor kioptimalizálja inline-ba ezeket, emiatt pedig megmarad a szükségtelenül hosszú függvényhívási lánc futási időben is. Függvénypointerek helyett szerencsésebb lett volna egy switch arra a pár esetre, ami előfordulhat (két-három lehetőségről beszélünk csak), akkor legalább a fordító ki tudná optimalizálni ezt a zagyva kódot. Arról nem is beszélve, hogy minden második függvény saját cache-t tart fenn, csak azt nem tudom, minek, mikor a Linux kernel önmagában megoldja a blokkok cache-elését. Nem baj, legalább rengeteg kernel memóriát elpazarol vele, és használhatatlanná válik tőle a kernel LRU...
- A hozzászóláshoz be kell jelentkezni
> túltolták benne az absztrakciós szinteket, irdatlan mennyiségű függvényt használ feleslegesen
jajj hany ilyet lattam mar mashol is... anno ~25 eve egy java-ban irt iranyitasi rendszert, ahol 1 gomb lenyomasa utan ugy 20 fv hivason ment at mire a vegen atirt egy valtozot. vicc volt, az egesz progi 11 perc alatt indult el! (ennyi kellett hogy a jre betoltse es osszelinkelje a csillio classt)
legutobb meg a libloc geoip-alternativaban, raadasul bitenkent rekurzioval! en meg ujrairtam c-ben az egeszet 200 sorban.
> csak azt nem tudom, minek
eros a gyanum hogy ezt portoltak valahonnan, nem direkt a linuxhoz irtak... vagy amikor irtak meg nem volt cache masik retegben, csak azota se nyult hozza senki.
- A hozzászóláshoz be kell jelentkezni
Az összehasonlítást azért tettem be, hogy látható legyen, nem ugyanaz volt a két esetben a fejlesztők célja, vannak mindkét oldalon előnyök és hátrányok, ezek alapján eldöntheti, aki akarja, hogy mire melyiket használja. Akinek nincsenek speciális igényei, annak amúgy bármelyik jó, és általában egy disztribúció kiválasztásakor már el is dől, hogy milyen típusú lesz a fájlrendszer, mert a többség azt használja, ami alapértelmezésben települ.
- A hozzászóláshoz be kell jelentkezni
aa, dehogy
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Jah, lehet nyihogni hogy valami mennyire fasza, de ha nincs doksija vagy van de szar az valojaban nem letezik. Tetszik nem tetszik :D
- A hozzászóláshoz be kell jelentkezni
Akkor már el is készítetted az Easybootot, gratulálok hozzá, nem találkoztam vele sajnos, pedig évekkel korábban pont ilyet kerestem. Jól olvasom, hogy megy uefi nélkül régebbi gépeken és uefivel is, van mbr és gpt támogatás is?
Amire nem találtam első körben, hogy tud particiót, operációs rendszer elrejteni, hogy bármennyi elsődleges partició lehessen? Ha van mondjuk mbr esetén azonos ssdn több windows, megoldható, hogy ne lássák egymást, de particiót sem? A bootit ng nagy előnye, hogy ezt jól kezeli, így legyet egy ssdn akár több windows 10/11, retro windows xp, akár dos is, és nem látják egymást. Ha ilyenre nincs igény, akkor ennek a funkciónak nincs haszna talán.
- A hozzászóláshoz be kell jelentkezni
Szerintem azt meg lehet csinálni, hogy ténylegesen sok filerendszer van a háttértáron, s a partíciós táblát kedvünkre cserélgetjük úgy, hogy pl. az első négy, a második négy vagy a harmadik négy filerendszer határai vannak az épp kiírt MBR-ben. Azt ugyan nem értem, hogy ebben mi a nagyszerűség, miért ne lehetne pl. egy GPT-be felvenni 12 partíciót, vagy MBR esetén három primary után egy extendedbe láncolt listaként még kilencet EBR-ben.
Mi abban a nagyon jó, hogy aktuálisan egy MBR nem tartalmaz olyan tartományokat, ahol valójában vannak filerendszerek, de most éppen nem tudjuk, ezek mettől meddig tartanak?
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A boot manager tudja, és a boot esetén kiválaszott menüpont alapján az a tábla jön létre, amit beállítottál ott. El lehet rejteni, sorrendet beállítani ott, bármit. Az egyik rendszer csak magát látja, a másik lát még másik hármat, a negyedik lát egy megosztottat, amit a többi is lát. Ilyesmikre jó. Például retro játékokhoz. Vagy teszteléshez. Így lehet minden gépet használónak nem külön felhasználója, hanem külön operációs rendszere. Ami nem hat ki a többire, normál felhasználás esetén.
- A hozzászóláshoz be kell jelentkezni
Attól, hogy van valahol, tudott helyen egy filerendszer, még nem muszáj felcsatolni, mintha nem lenne holnap.
De mondom, amiről beszélsz, azt is meg lehet csinálni technikailag.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
hatalmasra nőtt a projekt, az x86-os egy szem futtatható fájl, amiből áll, immáron 55K
Hajbi mit szól ehhez? ;^)))
Egyébként ez országos, nagy hírverést érdemelne. Gratulálok!
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ez így mindig kevés. Nincs átírva Rust-ba, nincsenek benne reklámok, AI, keylogger az NSA-nak. Nem Mac-en fejlesztetted a Starbuckban, nem támogattad a fejlesztés közben a LGBTQ+ közösséget, stb.. Sok kell még, hogy felzárkózz babzsákfejlesztői szintre, hogy hajbi lemérnökemberezzen téged is.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Nem minden mérnök buzi.
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
hu jo ezt olvansi... 90-es evekben en is csinaltam ilyeneket, 256 byte introk, 1 szektorba bepreselni mindent is stb. meg pl dos-os ms word-hoz irni y2k patchet ami a datumot forditgatta ide-oda, elterelve a megszakitast, vagy io.sys-be valami szoveg helyere irni pici boot menut es hasonlok. de sajnos mar kioregedtem ezekbol es/vagy elkenyelmesedtem nemtom, de mar a pythonhoz is lusta vagyok neha :)
- A hozzászóláshoz be kell jelentkezni
Lehet itt lenne az ideje hogy irj valami videolejatszot mert a mostaniak nem olyan jok :D
- A hozzászóláshoz be kell jelentkezni
az mpv nem rossz... ja azt is (reszben) en irtam :)
- A hozzászóláshoz be kell jelentkezni
Az mpv az elsődleges video lejátszóm. :)
tr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
vicces, hogy meg a 1999-ben SGI IRIX-en fejlesztett levelezoprogramom billentyuzetkezelese is benne van, meg az Astral 3D engine timer kodja :)
- A hozzászóláshoz be kell jelentkezni
Vazzeg most nézem, hogy te vagy az mplayer-s figura!
Bármikor, ha az utamba kerülsz, akkor jó vagy nálam annyi sörre amennyit megiszol! Az mplayer az első linux pozitív élményeim egyike!
- A hozzászóláshoz be kell jelentkezni
Használom is intenzíven, már elég sok éve. mplayert is valami 2005-2006 környékétől használok, valami szaki ajánlotta a hwsw fórumán, mert megsajnált, hogy szutyok codecpakkokkal szenvedek, akkor még olyan normi voltam, rossz nyelvek szerint most se vagyok jobb :D
Közben megjártam én is mindent, mplayer, mplayer2, sokáig SMPlayer GUI frontenddel használtam, de aztán ahogy minimalizáltam a rendszert, rájöttem, hogy felesleges a middle man közbeiktatása. Így egymagában használtam a mplayer backendet, majd mikor jött az mpv, akkor arra váltottam. Tetszik, hogy egyszerű, nem GUI-s, minden codec-ek visz, és ez a legerőforrás-takarékosabb lejátszó, szutyokabb gépeken még Windows alatt is életet mentett többször. A VLC-t sose szerettem, bloat, túl van tömve túl sok feature-rel, sokszor bugos, instabil is.
Nem csak videólejátszónak, de zenelejátszónak is használom. Lenyűgöző, hogy a mai napig támogat olyan régi szutykokat, mint a QuickTime mov, Realplayer audio/video, mod. A midi nem megy, azt előre generálom fluidsynth-tel PCM-be, és azt játssza le az mpv. A másik, ami bámulatba ejtő, hogy akár tty-ban is működik framebuffer vagy caca kimenetben. Illetve ami még rohadt nagy előnye, hogy sérült fájlokat is sokszor megeszik, max. csak át kell pörgetni a sérült részt, míg ugyanezektől a fájloktól más lejátszók, összefossák magukat, vagy akár már meg se nyitják.
További előnye, hogy az mpv bővíthető Lua scriptekkel. Ezt se tudja akármilyen lejátszó. Egy nagy negatívumát fedeztem eddig fel, hogy a .cue fájlokat nem kezeli, az pedig nekem kéne, jó pár albumom van FLAC + cue kombóban tárolva.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
> rohadt nagy előnye, hogy sérült fájlokat is sokszor megeszik
hat anno pont azert szuletett meg az mplayer, mert voltak mar mas lejatszok de mind beledoglott a serult fileokba...
a legelso verziom meg azt csinalta, hogy forkolt egy kulon processzt az mpeg decodernek, es amikor az elszallt (segfault) akkor ujrainditotta, igy a kep villant egyet de ment tovabb a film. brutal ganyolas volt, de a celnak megfelelt :)
> Egy nagy negatívumát fedeztem eddig fel, hogy a .cue fájlokat nem kezeli
pedig elvileg de, bar en sose probaltam:
- A hozzászóláshoz be kell jelentkezni
Nem is gondoltam volna, hogy ez volt a motiváció. Kipróbáltam most, és a .cue fájlokat valóban megeszi. Amit nem értek, hogy ez egy 4 éves kódrészlet, de nem egészen 2-3 héttel ezelőtt próbáltam, és akkor nem vitte, most meg valóban rendesen kezeli. Fene se érti ez.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Off: azért néha borzongva gondolok vissza, micsoda szopás volt itt a BIOS idején: a BIOS betöltött egy (FDD) vagy két (HDD) szektort, ráadta a vezérlést a betöltött kódra, és mosta kezeit... Csodálom, hogy valahogy el tudtunk igazodni ebben a káoszban.
- A hozzászóláshoz be kell jelentkezni
micsoda szopás volt itt a BIOS idejénErhhhmmmm. És most? Egy konkrét példa: hogyan kapcsoljuk ki a számítógépet programból? - BIOS: meghívod a jól dokumentált APM BIOS megszakítását oszt csókolom. Ennyi. Tényleg ennyi. Egyetlen INT utasítás, paraméterbeállítással együtt kb. 10 bájtnyi kód. - UEFI: na most kösd fel a gatyád... 1. fogod az EFI System Table-t, abból veszed a Configuration Table-t 2. végigiterálsz a tábla elemein, közben 16 bájtos UUID-kat keresel (többfélével kell egyezést nézned, lehet SMBIOS, ACPI1, ACPI2 is, O(n*m) alaphangon is) 3. megvan az ACPI2 root pointer, akkor végigiterálsz a tábláin, FACP azonosítót keresve (ez már csak O(n) szerencsére, ráadásul egy művelettel összehaszonlítható) 4. megnézed a tábla méretét, ez alapján két lehetséges pozíción is tárolódhat a DSDT tábla címe 5. oké, megvan a DSDT tábla, ez azonban AML bájtkód, tehát kell egy KIBASZOTT VIRTUÁLIS GÉPet implementálnod, ami lefutattja, hogy aztán kiköpje az erőforrás címeket (nem, nem viccelek, tényleg kell egy VIRTUÁLIS GÉPet futtatnod hozzá, mert az UEFI csak az interpretálandó bájtkódot adja; ráadásul a gyári VM implementáció, az ACPICA meg ugyancsak egy bloated bughalmaz, és biztonság szempontjából lukas, mint a szita, most is van egy Linuxos CVE épp, de a Windows felhasználóknak sem ismeretlen az ACPI.sys BSOD...) 6. végre megvan az erőforrás címe, ez lehet MMIO vagy IOport. Maga a kikapcsolás végül is csak egyetlen egy OUT/MOV uatsítás, hogy kiírsz egy speciális értéket ebbe a hardverregiszterbe. Na de mire kitalálod, hogy mit és hova... Na melyik is a káosz és téboly? Csak még pár dolog a teljesség igénye nélkül: API - BIOS: pofonegyszerű, sima interrupthívás - UEFI: háddebaz, pointertáblák, veremigazításos csakis Microsoft patented ABI, UUID-al interfész meg instance keresgélés stb. Agyfasz a köbön. Szolgáltatások - BIOS: mindvégig elérhető, nem zavar be, ha nem akarod, nem használod, ha akarod, ott van - UEFI: a legtöbb használhatatlanná válik az ExitBootServices hívás után, ha akarnád se tudnád mondjuk a képernyőfelbontást váltani vele soha többé, hiába van ott a meghajtóprogram szabványos API-val a géped ROM-jában Tárolás - BIOS: első szektor olvassa be, bármilyen partíciós táblával és bármilyen fájlrendszerrel tökéletesen működik, faék - UEFI: kötelező a partíciós tábla, abból is csak a Microsoft patented lehetséges (BSD disklabel? Solaris slice? felejtsd el!), kötelező EFI System Partition, csakis Microsoft patented fájlrendszerrel (a legszarabb FAT ráadásul), csakis Microsoft patented formában lehet a futtatható kód (mivel azt lopták és lényegében COFF, csak elérakták a PE szottyukat, ez utóbbi a legkevésbé gáz) Meghajtók - BIOS: transzparens, valamelyik ROMkód ráül a megfelelő megszakításra és kész, a hívónak nem kell tudni, visszafele mindig kompatíbilis - UEFI: már harmadszor dolgozzák át a teljes UEFI Driver modellt, folyton változó UUID-k meg folyton törő interfészek (próbálj csak meg manapság UGA-t lekérni GOP helyett) Méret: - BIOS: pár kilobájt - UEFI: sok sok sok sok sok sok megabájtnyi Futási idő - BIOS: baszott gyors (kevesebb, mint 1 mp) - UEFI: tetves lassú (fél perc alaphangon, de konfigurációtól függősen simán több) Biztoság: - BIOS: abszolút biztonságos, csak akkor tud bármi BIOS kód futni, ha a kernel hagyja (és aktívan támogatja), nem tudja megborítani a gépet - UEFI: á, hagyjuk. Annyi rootkit meg támadás van rá, hogy csak na. Alapvetően az a baj, hogy a RuntimeServices-t muszáj a kernelnek belapolva tartania és a legmagasabb supervisor felügyeleti szinten hagynia futni, a kernel mindenféle felügyelete nélkül. Modularitás: - BIOS: simán, futási időben lehet a kölönböző ROM-okat összepakolni és inicializálni (pl. hálókártya ROM-ja netről képes bootolni, ehhez semmi más nem kell, csak berakni a kártyát a gépbe). - UEFI: ehhh, inkább nézd meg ezt és szörnyülködj ...stb. Nyilván nem volt tökéletes, na de a mostani meg egy kalap hígfos. De legalább hamarosan raknak bele AI-t, ami majd eldönti helyetted, hogy milyen oprendszert indíthatsz a saját gépeden.
- A hozzászóláshoz be kell jelentkezni
Szerintem szarkazmus volt ;)
- A hozzászóláshoz be kell jelentkezni
(Bocsi, elfelejtettem kitenni a #szarkazmus tagot.)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni