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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-09-22 14:50:05

  life - Użytkownik

life
Użytkownik
Zarejestrowany: 2009-10-30

Kompilacja źródeł

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:

Kod:

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:

Kod:

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:

Kod:

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

 

#2  2011-09-26 15:37:54

  life - Użytkownik

life
Użytkownik
Zarejestrowany: 2009-10-30

Re: Kompilacja źródeł

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

 

#3  2011-09-26 17:02:16

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Kompilacja źródeł

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.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2011-09-26 17:42:13

  life - Użytkownik

life
Użytkownik
Zarejestrowany: 2009-10-30

Re: Kompilacja źródeł

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

 

#5  2011-09-26 18:54:25

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Kompilacja źródeł

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2011-09-26 19:59:00

  ArnVaker - Kapelusznik

ArnVaker
Kapelusznik
Skąd: Midgard
Zarejestrowany: 2009-05-06

Re: Kompilacja źródeł

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

 

#7  2011-09-26 20:09:55

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Kompilacja źródeł

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#8  2011-09-26 20:12:01

  ArnVaker - Kapelusznik

ArnVaker
Kapelusznik
Skąd: Midgard
Zarejestrowany: 2009-05-06

Re: Kompilacja źródeł

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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)