Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Mam kilka pytań (jakoś nie odnalazłem wszystkiego w sieci, pewnie źle pytałem), ale do rzeczy.
Chcę skompilować źródła kilku paczek, więc je pobieram:
apt-get source openssh-server
OK mam rozpakowane źródła. Teraz jak chciałbym dodać flagi do kompilacji, ale na stałe żeby wszystkie źródła mi kompilowało z tymi flagami. Tak jak w Gentoo jest /etc/make.conf gdzie ustawiam flagi i kompilator je stosuje.
Czy w Debianie też tak jest? (nie spotkałem się z make.conf), czy muszę flagi ustawiać za każdym razem? lub przez export?
W opisie INSTALL dla wymienionego wyżej openssh-server widnieje informacje o przekazniu flag w sposób następujący:
CFLAGS="-O -m486" LDFLAGS="-s" LIBS="-lrubbish" LD="/usr/foo/ld" ./configure
Czyli jest "globalne" ustawienie flag czy trzeba to robić zawsze "ręcznie".
Sprawa kolejna to zależności.
Chcąc skompilować openssh-server muszę zainstalować uwaga ...
comerr-dev dbus debhelper defoma fontconfig hardening-includes hicolor-icon-theme html2text krb5-multidev
libatk1.0-0 libatk1.0-data libatk1.0-dev libavahi-client3 libavahi-common-data libavahi-common3 libbsd-dev
libcairo2 libcairo2-dev libcups2 libdatrie1 libdbus-1-3 libedit-dev libexpat1-dev libfont-freetype-perl
libfontconfig1-dev libfontenc1 libfreetype6-dev libglib2.0-dev libgtk2.0-0 libgtk2.0-bin libgtk2.0-common
libgtk2.0-dev libice-dev libjasper1 libkrb5-dev libpam0g-dev libpango1.0-0 libpango1.0-common libpango1.0-dev
libpixman-1-0 libpixman-1-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libselinux1-dev
libsepol1-dev libsm-dev libssl-dev libthai-data libthai0 libtiff4 libwrap0-dev libx11-dev libxau-dev
libxcb-render-util0 libxcb-render-util0-dev libxcb-render0 libxcb-render0-dev libxcb1-dev libxcomposite-dev
libxcomposite1 libxcursor-dev libxcursor1 libxdamage-dev libxdamage1 libxdmcp-dev libxext-dev libxfixes-dev
libxfixes3 libxfont1 libxft-dev libxi-dev libxi6 libxinerama-dev libxml2-utils libxrandr-dev libxrender-dev
pkg-config x-ttcidfont-conf x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev
x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev
x11proto-xinerama-dev xfonts-encodings xfonts-utils xtrans-dev zlib1g-dev
tonę paczek?!?@!#
Rozumiem że do kompilacji potrzebne są biblioteki jak np ssl, pam itp. ale kiego grzyba mi cała litania z "X-ami" czy też hicolor-icon-theme? skoro nawet nie mam środowiska graficznego?
Debian instalując tą całą masę zależności potem po kompilacji jak będę chciał je usunąć to nie wiem czy będzie już taki chętny i usunie wszystko czy zostawi masę śmieci.
No chyba, że ja coś źle robię lub niezgodnie ze sztuką więc proszę o wskazanie właściwej drogi :)
--- EDYTA ---
OK pogrzebałem, poczytałem ...
Zakładając że kompilujemy pobrane źródła poleceniem:
dpkg-buildpackage -rfakeroot -uc -b
aby flagi umieścić na stałe tworzymy plik /etc/dpkg/buildflags.conf (normalnie go nie miałem, nie wiem jak u innych).
Tam umieszczamy flagi np:
SET CFLAGS -march=prescott -O2 -pipe -fomit-frame-pointer SET CXXFLAGS -march=prescott -O2 -pipe -fomit-frame-pointer SET LDFLAGS -Wl, -O1 -Wl,--as-needed
Wówczas do kompilacji będą pobierane ustawione flagi.
Dla "paranoików" można zainstalować pakiet hardening-includes, wówczas w debian/rules dopisujemy:
include /usr/share/hardening-includes/hardening.make
CFLAGS += $(HARDENING_CFLAGS)
LDFLAGS += $(HARDENING_LDFLAGS)
CXXFLAGS += $(HARDENING_CFLAGS)
Co sprawia że kompilowane pakiety zostaną "utwardzone" :)
PS. wracając do zależności to chyba nie przeskoczę tego i po prostu po zainstalowaniu po kompilacji równie dokładnie wszystkie usuwam.
Ostatnio edytowany przez life (2011-09-22 17:31:50)
Offline
Dobra powracam jak bumerang :D
W Gentoo kompilując kernel jest on kompilowany z flagami zwiększającymi bezpieczeństwo (PIE, NX itp.)
W poście wyżej chciałem to osiągnąć dla kompilowanych źródeł i udało mi się. Ale teraz chciałbym cały kernel kompilować tym sposobem by od razu wszystkie demony (podstawowe) były odpowiednio kompilowane.
No i pojawia się problem, powyższy sposób (dopisanie kilku linijek do debian/rules) się nie sprawdza bo do kompilacji kernela nie używam dpkg-buildpackage tylko make-dpkg.
Więc pytanie czy ktoś zna sposób na przekazanie odpowiednich flag do kompilatora stosując make-dkg lub sposób na kompilację kernela prze dpkg-buildpackage? :)
Próbowałem z wstawieniem to do Makefile ale bez oczekiwanych rezultatów.
Dopisałem to też do pliku /usr/share/kernel-package/rules ale też się nie sprawdziło.
Offline
W Gentoo kompilując kernel jest on kompilowany z flagami zwiększającymi bezpieczeństwo (PIE, NX itp.)
To zależy od kompilatora.
Zarówno w kontekście kernela, jak i wszystkich programów kompilowanych do paczek binarnych przez ten kompilator.
Offline
Jak pisałem kompilując źródła do paczek bez problemu osiągam to co chcę, ale nie w przypadku kernela (kompilatory raczej te same).
Wydaje mi się, że jest to kwestia przekazania flag do kompilacji, tylko jak w przypadku jądra?
Offline
Częsć flag dotyczących bezpieczeństwa masz w konfigu kernela, tu masz opis:
https://wiki.ubuntu.com/Security/Features
A tu skrypt do pobierznego testu: http://jacekalex.sh.dug.net.pl/checksec2
Ostatnio edytowany przez Jacekalex (2011-09-26 18:55:52)
Offline
Kiedyś widziałem w samym konfigu kernela opcję właśnie do przekazywania własnych flag, ale coś nie mogę jej znaleźć w 3.0.4. Kojarzy ktoś? Hmm, może to w jakimś dodatkowym patchsecie było, a nie w vanilli…
Offline
W kernel_hacking trochę tego jest, w innych działach też jest np stackprotector, na wiki ubuntu nieźle je skatalogowali.
Ostatnio edytowany przez Jacekalex (2011-09-26 20:10:07)
Offline
Nie chodzi o różne opcje rozsiane po konfigu, a o jedną opcję służącą do przekazywania własnych flag.
EDIT: Chyba to to było: http://kerneltrap.org/mailarchive/linux-kernel/2008/2/17/880324.
Offline