Jakieś opcje na zamianę jądra GNU w Linuksie?

20

Myślałem o zaprzestaniu używania GNU Coreutils na moich systemach Linux, ale szczerze mówiąc, w przeciwieństwie do wielu innych komponentów GNU, nie mogę wymyślić żadnych alternatyw (w systemie Linux) . Jakie są alternatywy dla rdzeni GNU? czy potrzebuję więcej niż jednej paczki? Odnośniki do projektu są koniecznością, dodatkowe punkty za nadawanie nazw pakietom dystrybucyjnym.

Nie sugeruj też żadnych rzeczy, chyba że wiesz, że działają one w systemie Linux i możesz zapoznać się z instrukcjami. Wątpię, czy wkrótce zmienię jądra i jestem zbyt leniwy, by cokolwiek wykraczać poza proste ./configure; make; make install. Na pewno nie zamierzam za to zhakować C.

ostrzeżenie: jeśli twoja dystrybucja używa coreutils, usunięcie ich może zakłócić funkcjonowanie twojej dystrybucji. Jednak nie posiadanie ich jako pierwszych $PATHnie powinno niszczyć, ponieważ większość skryptów powinna używać ścieżek bezwzględnych.

ksenoterracid
źródło
10
Co ciekawe, dlaczego szukasz alternatyw?
tshepang
2
@xeno „Bardziej wytrzymały”? Pamiętaj także, że twój system (w tym jądro) jest w dużej mierze zbudowany z GCC i zależy od GLibC :)
tshepang 20'11
3
@xeno Debian używa obecnie EGLIBC , który jest rodzajem rozwidlenia GLibC. Ale ściśle podąża za GLibC, więc różnica nie jest tak duża.
tshepang
2
Zarówno Clang, jak i tcc mogą (w każdym razie kiedyś) skompilować jądro Linuksa.
Shawn J. Goff,
2
Są ludzie pracujący nad obszarem użytkownika GNU na jądrze BSD , ale nie słyszałem o odwrotności. Naprawdę zmiana jądra byłaby łatwiejsza. Możesz spróbować najpierw na maszynie wirtualnej, jeśli jesteś nieśmiały.
Gilles „SO- przestań być zły”

Odpowiedzi:

15

busybox ulubieniec systemów Embedded Linux.

BusyBox łączy małe wersje wielu popularnych narzędzi UNIX w jeden mały plik wykonywalny. Zapewnia zamienniki większości narzędzi, które zwykle można znaleźć w plikach GNU, shellutils itp. Narzędzia w BusyBox mają na ogół mniej opcji niż ich w pełni funkcjonalni kuzyni GNU; jednak zawarte w nim opcje zapewniają oczekiwaną funkcjonalność i zachowują się bardzo podobnie do ich odpowiedników GNU. BusyBox zapewnia dość kompletne środowisko dla każdego małego lub wbudowanego systemu.
BusyBox został napisany z myślą o optymalizacji rozmiaru i ograniczonych zasobach. Jest również niezwykle modułowy, dzięki czemu można łatwo dołączać lub wykluczać polecenia (lub funkcje) w czasie kompilacji. Ułatwia to dostosowanie systemów wbudowanych. Aby stworzyć działający system, po prostu dodaj kilka węzłów urządzeń w / dev, kilka plików konfiguracyjnych w / etc i jądro Linuksa.

Dowolną nazwę coreutil można ustawić jako link do pliku binarnego busybox i będzie działać. możesz także uruchomić busybox <command>i to zadziała. Przykład: jeśli korzystasz z Gentoo i jeszcze go nie zainstalowałeś vi, możesz uruchomić busybox vi filenamei będziesz w vi. Jego

ksenoterracid
źródło
możesz to zmodyfikować za pomocą linków do Twojej dystrybucji
Xenoterracide
jest to również ulubiony element wbudowany, więc choć alternatywą prawdopodobnie nie będzie wystarczające, aby zastąpić GNU w moim środowisku pulpitu / serwera
xenoterracide
Jest to jedyne praktyczne rozwiązanie atm, jeśli nie chcesz hakować C. A wersje busyboksa powinny być dość standardowe.
maxschlepzig
5

Rozumiem, że to starszy temat. Jednak to rozwiązanie nigdy nie zostało wspomniane i jest stosunkowo wysoko w Google dla „Linux z bsd userland”.

Istnieje inne rozwiązanie: pamiątka. Wiem, że działa na Arch i jest spakowany w AUR (patrz na przykład gnu2sysv). Spowoduje to zastąpienie pakietu coreutils Archa i zapewni równowartość dziedzictwa. O całej rzeczy możesz przeczytać na wiki arch: https://wiki.archlinux.org/index.php/Base2heirloom

bbenne10
źródło
2

Sprawdź uutils .

Jest to wieloplatformowa implementacja jądra GNU napisana w Rust. Jest na licencji MIT. W chwili pisania tej odpowiedzi nie jest w 100% kompletna (brakuje niektórych kluczowych, takich jak lsi cp), ale wiele innych jest już zrobionych.

Russ
źródło
0

Podejrzewam, że trudno ci było pozbyć się GNU Coreutils, jednak zawsze istnieją równoważne narzędzia BSD, chociaż nie są one zastępczymi narzędziami GNU.

jsbillings
źródło
jak miałbym przejść do instalacji narzędzi BSD w dystrybucji Linux? skąd mam je wziąć?
Xenoterracide
Cały system FreeBSD jest dostępny poprzez CVS freebsd.org/cgi/cvsweb.cgi/src , jednak uzyskanie kompilacji użytkownika BSD pod jądro Linuksa byłoby raczej trudne. Obszar użytkownika GNU jest prawdopodobnie bardziej przenośny niż BSD, ponieważ obszar użytkownika GNU (przynajmniej na początku) został zbudowany tak, aby był przenośny między wieloma jądrami.
jsbillings
to brzmi jak PITA, na pewno jeśli jest to możliwe, że ktoś gdzieś spakował ją przynajmniej raz dla Linuksa.
Xenoterracide
Solaris (od 140-coś jest również dostępny) byłby również opcją. Jeśli używasz dystrybucji, jesteś szalony. Przestań. Jeśli używasz LFS , włącz się! Baw się dobrze! Jeśli robisz dystrybucję, oklaskuję twoją odwagę.
bahamat
Tak, nie jestem pewien, czy to w ogóle możliwe. Prawdopodobnie łatwiej byłoby po prostu zainstalować FreeBSD i włączyć kompatybilność z Linuksem. Możesz łatwo uzyskać podstawowe jądra GNU działające pod FreeBSD, ale nie odwrotnie.
jsbillings 20.01.11
0

Zwykle, gdy ktoś chce uciec od czegoś, co jest szeroko stosowane, dobrze przetestowane, zweryfikowane na wielu platformach, jest to zewnętrzny wyraz podstawowego problemu zwanego „zapachem kodu” i niekontrolowanego narastania „długu technicznego” lub „kodu” dług". Archiwum GNU narosło przez lata dość dużą liczbę długów kodu, a gdy baza kodów nie jest odpowiednio utrzymywana, może osiągnąć punkt krytyczny (starszy kod, a nawet chorobliwy starszy kod).

Zwykle w pewnych odstępach czasu przeprowadzano by proces przebudowy i refaktoryzacji, aby utrzymać to pod kontrolą. Tak więc, prawdziwe pytanie, które tu postawiono, dotyczy tego, czy opracowano przebudowaną wersję coreutils. Obejmuje to oczywiście możliwość bezpośredniej wymiany (w specjalnym przypadku) - podobnie jak Wayland jest przeznaczony dla X ... wielu jego programistów wychodzących prosto z obozu X.

Moją propozycją jest faktyczne wejście i refaktoryzacja coreutils. Ktoś musi to zrobić. I ktokolwiek podnosi kwestię zastąpienia Coreutils - Twój pomysł Twój projekt.

W tym celu wykorzystaj dostępną automatyzację: silniki refaktoryzujące, takie jak cscout, lub wszystko, co stosuje bardziej zaawansowane metody analizy / syntezy (np. Formalne sieci koncepcji). Ale dogłębna analiza jest wciąż stosunkowo nowym i otwartym obszarem aktywnych badań - i przenosi się na sztuczną inteligencję. (Inżynier oprogramowania robotów.)

Większość programów narzędziowych powinna już mieć zainstalowane zestawy testowe, więc sprawdzanie poprawności można przeprowadzić za pomocą stopniowej zmiany krokowej + etapów automatycznego testowania regresji; które mogą iść dość szybko (np. 10 lub więcej aktualizacji wersji dziennie). Komplikacja tego procesu występuje, jeśli gdziekolwiek w pakiecie oprogramowania występują zależności sprzętowe lub programowe niskiego poziomu; ponieważ wymaga to weryfikacji na wielu platformach. Niewiele wiem o tym w coreutils; powinno być w nim coś w rodzaju separacji od warstw sprzętowych lub oprogramowania niskiego poziomu (np. liczba miejsc, w których coreutils wie, jaki typsystemu plików, na którym jest włączony, powinien być minimalny, a najlepiej zerowy.) Emulatory i maszyny wirtualne, przeznaczone do testowania na wielu platformach, mają ograniczenia. Na przykład Mac OS X został specjalnie zaprojektowany w taki sposób, aby utrudniać emulację lub VM.

Rock Brentwood
źródło
-1

Solaris (od svn_140-coś) również byłby opcją.

Jeśli używasz dystrybucji, jesteś szalony. Przestań. Szukaj pomocy psychiatrycznej.

Jeśli używasz LFS , włącz się! Baw się dobrze!

Jeśli robisz dystrybucję, oklaskuję twoją odwagę.

bahamat
źródło
1
to nie jest pytanie o to, „której dystrybucji” mogę użyć, chodzi o zastąpienie coreutils w Linuksie. Chyba że chodzi o coreutils opensolaris? czy to też jest mniej PITA niż opcja FreeBSD?
Xenoterracide
1
Kod źródłowy OpenSolaris to po prostu Solaris. Kod źródłowy Solaris aż do svn_14x został wydany przez Sun / Oracle na CDDL. Zasadniczo istnieją trzy główne dziedzictwo dla użytkownika Unixa. „Genetic” Unix (Solaris, AIX, True64 itp.), Który pochodzi z kodu AT&T i jest w dużej mierze zamknięty, ale Solaris był otwarty przez pewien czas), BSD (który ostatecznie stał się samodzielny od 4.4-lite) i GNU. Myślę jednak, że odejście od GNU będzie równie trudne (lub łatwe), niezależnie od BSD lub Solaris. Albo możesz stać się naprawdę ambitny i zrobić ksenokore-utils ;-)
bahamat