View previous topic :: View next topic |
Author |
Message |
manwe_ l33t
Joined: 01 Feb 2006 Posts: 632 Location: Kraków/Cracow, Poland
|
Posted: Mon Oct 29, 2007 3:39 am Post subject: [HOWTO] Szyfrowany system + TrueCrypt + własny initramfs |
|
|
1. Wstęp
Wersja: 0.0.1
Ostatni update: 29.10.2007 05:29
Trochę z nudów, trochę z chęci podzielenia się doświadczeniem [ale głównie z nudów], postanowiłem spłodzić swoje drugie howto. Tym razem o mojej, póki co, największej zabawie z przeróbkami systemu – szyfrowaniu całości. Na gentoo-wiki można znaleźć howto jak to zrobić za pomocą DM-Crypt'a, moje po części będzie podobne. Co do różnic - po pierwsze ja stwierdziłem, że skorzystam z TrueCrypt'a, do którego już przez dłuższy okres używania [odległe lata M$okien] nabrałem zaufania. Po drugie chciałem mieć podwójny system dostępu, za pomocą pendrive'a, który w całości tego howto pełni rolę punktu wyjścia – zawiera niezaszyfrowane dane, klucze, a jego strata kładzie wszystko, oraz za pomocą haseł. I po trzecie, powód już nie dla mnie - osoby, które mają M$Win na dysku, mogą zaszyfrować partycję fat|ntfs z jakimiś danymi, będą one dalej dostępne spod okien.
2. Wymagania
Potrzebne są:
- wiedza, nie będę tutaj opisywał wszystkiego od podstaw, pewna znajomość systemu, skryptów bash'owych, kompilacji, busybox'a, etc. jest wymagana,
- pendrive, karta pamięci, lub cokolwiek "zewnętrznego" co wędruje zawsze z nami i nigdy nie jest zostawione razem z komputerem [w moim przypadku notebookiem] bez naszej uwagi,
- czysta partycja [lub kilka], która zostanie zakodowana TrueCrypt'em i gdzie zostanie przeniesiony cały system
- niezaszyfrowany /boot, gdzie wyląduje jajko, grub i własny initramfs - niestety na to łatwego obejścia chyba nie ma, sam bootloader nie odszyfruje partycji, musi to zrobić jajko, które skądś trzeba odczytać, na dobrą sprawę można je trzymać również na pendrive, ale nie ma też co kombinować, tego nie ma chyba potrzeby ukrywania
- truecrypt [ # emerge truecrypt ],
- device mapper i niektóre algorytmy szyfrujące w jajku [ale o to powinien zakrzyczeć sam truecrypt przy emerge], dobrze jest to wszystko mieć wkompilowane statycznie, będzie mniej problemów przy tworzeniu initramfs.
3. Tworzenie partycji i kluczy
Obsługa truecrypt'a jest prosta jak konstrukcja cepa. Tworzenie zaszyfrowane partycji sprowadza się do odpalenia: Code: | # truecrypt -c /dev/sda2 |
i odpowiedzenia na kilka pytań. Co do wyboru algorytmu, wszystko dobrze opisane jest na stronie TC, ja wybrałem Blowfish - ma mocny 448-bitowy klucz i jest cholernie szybki [chyba najszybszy z dostepnych]. Dla kompletnych maniaków bezpieczeństwa polecam kombinacje, np. Serpent-Twofish-AES W tej konfiguracji szyfrujemy za pomocą mocnego hasła, na razie bez klucza. To hasło jest naszą ostatnią deską ratunku, kiedy np. pendrive wypierze się w pralce ze spodniami. Następnie tworzymy kluczyk: Code: | # truecrypt --keyfile-create ~/true_key |
Teraz trochę wytłumaczenia "o co biega". W pierwszym kilobajcie danego urządzenia TC za pomocą naszego hasła|klucza szyfruje klucz właściwy, którym kodowane są wszystkie dane na dysku. Taka kombinacja pozwala nam dowolnie modyfikować nasze hasła|klucze, wystarczy, że TC odkoduje klucz główny i zapisze go zakodowanego na nowo w początkowych obszarach.
A po co to wszystko? Musimy mieć dwa takie nagłówki - pierwszy, który będzie na dysku przez większość czasu, z kluczem zakodowanym za pomocą podanego wcześniej hasła, i drugi za pomocą true_key. Mam nadzieję, że nie namieszałem, jakby co to krzyczeć
Do rzeczy. Najpierw robimy zrzut do pliku pierwszego nagłówka, gdzie klucz główny jest zaszyfrowany za pomocą hasła:
Code: | # truecrypt --type normal --backup-headers ~/header_pass /dev/sda2 |
Teraz generujemy nowy nagłówek, gdzie klucz główny zaszyfrowany zostanie za pomocą true_key [w kolejnych pytaniach podajemy puste hasło i ścieżkę true_key]:
Code: | # truecrypt -C /dev/sda2 |
Backup nowego nagłówka:
Code: | # truecrypt --type normal --backup-headers ~/header_key /dev/sda2 |
I na koniec przywracamy stary:
Code: | # truecrypt --type normal --restore-header ~/header_pass /dev/sda2 |
W ten sposób mamy zaszyfrowaną partycję oraz 3 pliki: true_key, header_key i header_pass - wszystkie znajdą swoje miejsce @pendrive.
4. Przenoszenie danych
Ten akapit pominę, ta umiejętność jest wymagana, wraz ze zdrowym rozsądkiem, od użytkownika Montujemy partycję TC, tworzymy na niej system plików i przenosimy [póki co, kopiujemy] wszystkie dane. Jeżeli system podzielony jest na kilka patrycji, wszystkie kroki z tworzeniem kluczy, żonglowaniem nagłówkami, etc. z punktu 3. powtarzamy dla każdej z nich.
5. fstab
Niewielka zmiana tutaj, zamiast /dev/sdaX wpisujemy /dev/mapper/truecryptX [licząc od zera, w kolejności odkodowywania partycji, czyli root będzie to truecrypt0].
6. uvesafb + splash
Żeby całość wyglądała ładnie, używam uvesafb [x86_64, nie mogłem poprzednika - vesafb_tng] oraz fbcondecor, który pozwala już pod koniec ładowania jajka ustawić tło. Działający uvesafb, lub inny sterownik fb, oraz skompilowanie splashutils i znalezienie wymarzonego theme wyrzucam poza ramy tego tekstu.
7. initramfs
Najwięcej zabawy i przekleństw czeka w tym punkcie. Nie będę tłumaczył tutaj co to jest initramfs, praktyczną wiedzę o nim dorwałem na gentoo-wiki, więć tam również odsyłam. Chciałem osiągnąć pełne zintegrowanie szyfrowania z init'em. Opiszę od końca, jak całość wygląda: komputer się włącza, pokazuje grub, uruchamia jajko [tryb quiet, nic nie widać], które b. szybko [~2 sek.] zmienia rozdzielczość z użyciem uvesafb oraz ustawia tło [fbcondecor]. Po chwili pokazuje się zmodyfikowane przeze mnie przywitanie Code: | Gentoo/Linux; Preloader by manwe; http://www.gentoo.org/
Copyright 1999-2007 Gentoo Foundation; Distributed under the GPLv2 |
Dalej skrypt czeka chwilę na pojawienie się pendrive'a, jeżeli go znajdzie - montuje, szuka na nim kluczy, odkodowuje partycję główną i dalej przekazuje działanie do oryginalnego init'a. Jeżeli pendrive się nie pojawi, prosi o hasło lub jego włożenie i klepnięcie enter'a - i tak do skutku, aż dostanie coś poprawnego. Całość jest ubrana jak skrypty Gentoo, krótkie komunikaty, z zieloną gwiazdką na początku, więc nie widać tak naprawdę gdzie kończy się initramfs, a gdzie zaczyna właściwy init Brzmi i wygląda ładnie, ale teraz trzeba do tego dojść. Pamiętam, że podczas pisania tego, w ciągu 2 dni [tyle łącznie zajęła mi cała zabawa z szyfrowaniem] restartowałem system chyba z 40 razy
Do rzeczy. Co potrzebujemy w initramfs:
- busybox - na czymś to musi działać
- truecrypt - chodzi o binarkę
- dmsetup, losetup - wymagane przez truecrypt'a
- setfont - o tym później
- kilka urządzeń w /dev
- moduł truecrypt.ko i modules.dep
- v86d [jeżeli używasz uvesafb] i fbcondecor_helper [ze splashutils]
- splash theme
- czcionkę, która jest w systemie [u mnie: lat2-14.psfu.gz]
Wszystkie binarki muszą być statyczne [gdyby zacząć dodawać wszystkie lib'y - archiwum rozrosło by się za bardzo], niektóre jak busybox, czy fbcondecor_helper już powinny być, o resztę musisz zadbać sam(a). Pełna struktura folderów i plików wygląda tak:
Code: |
./bin/
./bin/sh -> busybox - symlink
./bin/mount -> busybox - symlink
./bin/init-early.sh - skrypt, opisze później
./bin/dmsetup
./bin/setfont
./bin/losetup
./bin/truecrypt
./bin/pendrive - skrypt
./bin/busybox
./dev/
./dev/fb0 - to jak i pozostałe urządzenia blokowe, do zrobienia za pomocą mknod
./dev/mem
./dev/sr0
./dev/tty
./dev/null
./dev/ram0
./dev/tty1
./dev/zero
./dev/console
./dev/mapper/
./etc/
./etc/mtab
./etc/splash/
./etc/splash/default -> gentoo - symlink
./etc/splash/gentoo/
./etc/splash/gentoo/Vera.ttf
./etc/splash/gentoo/images/
./etc/splash/gentoo/images/verbose-1024x768.png
./etc/splash/gentoo/1024x768.cfg
./lib/
./lib/rcscripts/
./lib/rcscripts/console/
./lib/rcscripts/console/font
./lib/rcscripts/console/lat2-14.psfu.gz
./lib/modules/
./lib/modules/name/
./lib/modules/name/block/
./lib/modules/name/block/truecrypt.ko
./lib/modules/name/modules.dep
./lib/splash/
./lib/splash/sys/
./lib/splash/proc/
./proc/
./proc/self/
./proc/self/exe -> ../../bin/busybox - symlink
./sbin/
./sbin/v86d
./sbin/fbcondecor_helper
./init - skrypt
|
Sporo Tak jak napisałem, wszystko co w /bin i /sbin, a nie jest skryptem, trzeba uprzednio skopiować|skompilować, a urządzenia w /dev/ zrobić. Teraz poszczególne pliki:
/etc/mtab:
Code: | proc /proc proc 0 0 |
/lib/rcscripts/console/font:
W zasadzie poza skryptami jest to już wszystko. Niektóre foldery w powyższym spisie są puste. Dla przykładu bez /lib/splash/sys/ i /lib/splash/proc/ nie działa ustawianie tła, a bez /proc/mapper/ truecrypt nie był w stanie stworzyć urządzeń odkodowanych partycji. Skrypt, po kolei od najmniejszego.
/bin/init-early.sh - jest to kopia z init'a serwowanego przez Gentoo, ustawia czcionkę konsoli. Odpalamy go zanim cokolwiek się pojawi na ekranie, dzięki temu unikniemy brzydkiego wyczyszczenia konsoli w trakcie ładowania stage boot:
Code: | #!/bin/sh
# Try and set a font and as early as we can
termencoding="(K"
[ -e "${RC_LIBDIR}"/console/unicode ] && termencoding="%G"
printf "\033%s" "${termencoding}"
if [ -r "${RC_LIBDIR}"/console/font -a -x /bin/setfont ] ; then
font="$(cat "${RC_LIBDIR}"/console/font)"
CONSOLE="${CONSOLE:-/dev/console}"
[ -c "${CONSOLE}" ] && cons="-C ${CONSOLE}"
setfont ${cons} "${RC_LIBDIR}"/console/"${font}"
fi
|
Nic wymyślnego Dalej zaczyna się pod górkę, skrypt /bin/pendrive szuka urządzenia, stara się je zamontować i odkodować partycję /. Od razu powstał problem. W tak okrojonej wersji systemu jaką funduje nam jajko + busybox nie ma udev, czy innych wspomagaczy, które pozwoliły by wykryć obecność urządzenia i literę sdX, którą otrzymał - o bloki dla /dev/ tutaj trzeba zadbać samemu. Jedyny sposób jaki znalazłem, jak wydłubać informacje o tym czym pendrive faktycznie jest na miejscu i gdzie, to podanie w parametrach startowych jego nazwy i numeru partycji, za którą przegrzebywany jest dmesg. U mnie jest to: "pen_name=IntelligentStick pen_part=3". Aha, moje skrypty mogą być trochę nieudane, po pierwsze nie znam za dobrze awk|sed, po drugie nie starałem się ich pisać jakoś super ładnie.
/bin/pendrive:
Code: |
#!/bin/sh
X=`dmesg | grep -C 1 $1 | tail -n 1 | awk -F\[ '{ print $2 }' | awk -F\] '{ print $1 }'`
[ -z "$X" ] && exit 1
mount /dev/${X}${2} /pen 2> /dev/null
[ $? -ne 0 ] && exit 1
for A in /pen /pen/.keys /pen/.keys/true_key /pen/.keys/h_key /pen/.keys/h_pass; do
if [ ! -f $A -a ! -d $A ]; then
echo '^[[01;31m * ^[[0m'"Pen found, but missing ${A}!"
umount /pen
exit 1
fi
done
echo -n '^[[01;32m * ^[[0mPen found. Loading key header. '
X=`truecrypt --type normal --restore-header /pen/.keys/h_key /dev/sda2 2>&1`
[ $? -ne 0 ] && exit 1
echo "$X"
echo -n '^[[01;32m * ^[[0mMounting partition using key. '
X=`truecrypt -p '' -k /pen/.keys/true_key $3 2>&1`
[ $? -ne 0 ] && exit 1
echo "$X"
echo -n '^[[01;32m * ^[[0mRestoring password header. '
X=`truecrypt --type normal --restore-header /pen/.keys/h_pass /dev/sda2 2>&1`
[ $? -ne 0 ] && exit 1
echo "$X"
umount /pen
exit 0
|
Skrypt jest wywoływany z parametrami "IntelligentStick 3 /dev/sda2", czyli $1=IntelligentStick, $2=3, $3=/dev/sda2. Najpierw w dmesg'u wyszukiwana jest informacja o $1 i jakie sdX dostał [linijka poniżej nazwy], w nawiasach kwadratowych. Potem mount do /pen, dalej sprawdzenie czy pliki z kluczami i nagłówkami są na miejscu [moje nazwy plików są trochę inne, niż opisywałem na początku przy rozdziale o TC, ale chyba widać wyraźnie o co biega], przywrócenie nagłówka z kluczem głównym zakodowanym kluczem @pendrive, odszyfrowanie partycji, przywrócenie pierwotne nagłówka [hasłowego] i odmontowanie /pen - tutaj chwilowo jego rola się kończy. Mała uwaga od razu, ^[ to escape char, a nie ^ i [
No i ostatni, najdłuższy skrypt /init. On robi prawie wszystko, jest wywoływany przez jajko, musi pociągnąć całe przygotowanie i na koniec przekazać robotę do właściwego /sbin/init z Gentoo:
Code: | #!/bin/sh
#basic
/bin/busybox mount -t proc proc /proc 2> /dev/null
mkdir /new
mkdir /pen
mkdir /root
#get params
CMD=`cat /proc/cmdline | sed 's/silent/verbose/g'`
ROOT=`cat /proc/cmdline | tr ' ' '\n' | grep -E '^root=' | awk -F= '{ print $2 }'`
PEN=`cat /proc/cmdline | tr ' ' '\n' | grep -E '^pen_name=' | awk -F= '{ print $2 }'`
PART=`cat /proc/cmdline | tr ' ' '\n' | grep -E '^pen_part=' | awk -F= '{ print $2 }'`
[ -z "$ROOT" ] && echo '^[[01;31m ROOT is empty. I have to commit suicide.' && exit
#mknod
cd /dev
for N in 0 16 32 48; do
case $N in
0) X='a' ;;
16) X='b' ;;
32) X='c' ;;
48) X='d' ;;
esac
mknod sd${X} b 8 ${N} &> /dev/null
for M in 1 2 3 4 5 6 7 8 ; do
let Y=${N}+${M}
mknod sd${X}${M} b 8 ${Y} &> /dev/null
done
done
cd /
#modules
cd /lib/modules
mv name `uname -r`
cd /
modprobe truecrypt
#setfont
export RC_LIBDIR="/lib/rcscripts/"
/bin/init-early.sh
#shell hack
if [ "$ROOT" = "shell" ]; then
exec /bin/sh
fi
#banner
clear
echo; echo '^[[01;32m Gentoo/Linux; ^[[01;33mPreloader by manwe; ^[[01;34mhttp://www.gentoo.org/';
echo '^[[0m Copyright 1999-2007 Gentoo Foundation; Distributed under the GPLv2'; echo;
#try mount
mount $ROOT /new 2> /dev/null
#wait for usb
if [ ! -f /new/sbin/init ]; then
echo -n '^[[01;32m * ^[[0mWaiting for usb devices'
for X in 1 2 3 4 5 6; do
echo -n '.'
sleep 1
done
echo
#main loop
/bin/pendrive $PEN $PART $ROOT
if [ $? -ne 0 ]; then
while [ -z "$END" ]; do
echo '^[[01;32m * ^[[0mInsert pendrive or enter the password...'
S=`stty -g`; stty -echo
read P
stty $S
if [ "${P}" ]; then
echo -n '^[[01;32m * ^[[0mMounting partition using given password. '
T=`truecrypt -p "$P" -k '' $ROOT 2>&1`
[ $? -eq 0 ] && END="end"
echo "$T"
else
/bin/pendrive $PEN $PART $ROOT
[ $? -eq 0 ] && END="end"
fi
done
fi
fi
#end
#umount /proc 2> /dev/null
if [ -b /dev/mapper/truecrypt0 ]; then
mount /dev/mapper/truecrypt0 /new
exec /bin/busybox switch_root /new /sbin/init $CMD
else
if [ -f /new/sbin/init ]; then
exec /bin/busybox switch_root /new /sbin/init $CMD
else
echo '^[[01;31m * ^[[0m'"No /dev/mapper/truecrypt0 or /sbin/init! What the fuck? Well... I'll die now ;-)"
fi
fi
|
Ponieważ całość jest podzielona komentarzami na działy, tak to też opiszę.
#basic - brak komentarza
#ger params - tutaj zbierane są informacje przekazane jako parametry dla jajka, jak root=, pen_name=, czy pen_part
#mknod - tworzenie nodów które pokrywają większość zapotrzebowania na /dev/sdX [nie umieszczałem ich statycznie w /dev initramfs, zaśmiecały czytelność]
#modules - zmiana nazwy folder /lib/modules/name na nazwę jaką ma jajko, to również jak poprzedni punkt powstało z wygodny tworzenia initramfs, nie muszę zmieniać z nowym jajkiem nazwy folderu
#setfont - zmiana czcionki zanim cokolwiek wypiszemy na ekran [tak, jeszcze nic się nie pojawiło!]
#shell hack - taki mały myk który sobie zostawiłem, jeżeli w parametrach gruba jako root= zostanie wpisane shell, skrypt poprzestanie w tym miejscu i uruchomi sh, świetne miejsce na np. naprawę uszkodzonego systemu plików, żadna partycja dyskowa nie jest w tym momencie używana
#banner - wypisujemy zmodyfikowany banner
#try mount - całość starałem się napisać uniwersalnie, jeżeli jako root zostanie podana "zwykła" niezaszyfrowana partycja, mount tutaj się uda, warunek [ ! -f /new/sbin/init ] nawali i cała zabawa z TC zostanie pominięta
#wait for usb - skrypt czeka 6 sekund na pojawienie się pendrive [tyle zajmuje w moim jajku wykrycie] i jeżeli go znajdzie od razu przejdzie do /bin/pendrive, dzięki czemu jeżeli pen został wpakowany w port już wcześniej całość zotanie załatwiona bez interakcji z użyszkodnikiem, system wstanie zwyczajnie jak każdy inny [tylko kilka sekund dłużej mu to zajmie]
#main loop - nie wykryto pendrive, odczytanie hasła od użytkownika i próba odkodowania z jego użyciem [truecrypt -p "$P"] lub, przy klepnięciu enter, ponowne sprawdzenie /bin/pendrive - i tak w kółko, aż się uda
#end - jeżeli jest urządzenie /dev/mapper/truecrypt0 [odszyfrowane /dev/sda2], mount - switch_root, czyli przekazanie pałeczki do /sbin/init z Gentoo, w przeciwnym wypadku sprawdzenie czy jest już może /new/sbin/init [sytuacja montowania partycji bez TC] i znów switch_root, albo ... die - skrypt nie może znaleźć init'a
No to ufff To wszystko razem zebrane tworzy cały initramfs. Na koniec z tych wszystkich folderów trzeba stworzyć jeden plik:
Code: | cd ~/initramfs/ [czy tam inny folder gdzie pracowałeś]
find . -print | cpio -o -H newc | gzip -9 > ../initramfs
cp ../initramfs /boot/
|
8. Grub
Po ciężkim pkt. 7, chwila odpoczynku - niewielkie zmiany w grub.conf. Trzeba dodać parametry identyfikujące pendrive: pen_name=IntelligentStick pen_part=3 oraz polecenie initrd.
Code: | title Gentoo Linux kernel-2.6.23-kamikaze4-ev18
kernel (hd0,0)/kernel-2.6.23-kamikaze4-ev18 splash=verbose,theme:gentoo quiet video=uvesafb:1024x768-24,mtrr:3,ypan pen_name=IntelligentStick pen_part=3 root=/dev/sda2
initrd (hd0,0)/initramfs-2.6.23-kamikaze4-ev18
|
Tak to wygląda u mnie.
9. Dopieszczanie
To by było w zasadzie wszystko. Partycje zaszyfrowane, initramfs działa, system wstaje, jest jeszcze tylko kilka drobnych poprawek:
1. Ponieważ initramfs+pendrive zaopiekowały się tylko /, trzeba podmontować pozostałe partycje [o ile są]. U mnie odstawiają to dwa takie bloki kodu [w /etc/conf.d/local.start]:
Code: | if [ -f /mnt/flash/pqi3/.keys/h_key_home -a -f /mnt/flash/pqi3/.keys/true_key_home -a -f /mnt/flash/pqi3/.keys/h_pass_home ]; then
truecrypt --type normal --restore-header /mnt/flash/pqi3/.keys/h_key_home /dev/sda3 &> /dev/null
truecrypt -p '' -k /mnt/flash/pqi3/.keys/true_key_home /dev/sda3 /home
truecrypt --type normal --restore-header /mnt/flash/pqi3/.keys/h_pass_home /dev/sda3 &> /dev/null
fi
|
Robi to prawie to samo co /bin/pendrive powyżej, ale już w prostszej formie, pendrive został wykryty w trakcie startu systemu i podmontowany do /mnt/flash/pqi3 - nie musimy się martwić o jego obsługę.
2. Jajko nie słucha parametru quiet. A dokładniej obsługa scsi. Pomimo próby wyciszenia go tak, aby pierwszą linijką, która pokazuje się już na kolorowym tle, był baner Gentoo - dostawałem 3 linijki informacji "Assuming drive cache: write through". Jedyny sposób to po prosty je wykomentować w drivers/scsi/sd.c i przekompilować jajco.
3. Banner gentoo i "INIT 2.xx" - oryginalny banner Gentoo i informacja o wersji init'a pojawią się w momencie przekazania sterownia do /sbin/init przez initramfs. Tutaj również trzeba komentować, ja robię to patch'ami dodawanymi do ebuild'ów:
Code: |
$ cat init_silent.patch
--- src/init.old.c 2004-07-30 14:16:20.000000000 +0200
+++ src/init.c 2007-08-11 16:21:10.000000000 +0200
@@ -762,12 +762,12 @@
/*
* And log to the console.
- */
+
if (loglevel & L_CO) {
print("\rINIT: ");
print(buf);
print("\r\n");
- }
+ }*/
}
$ cat baselayout_silent.patch
--- src/rc.old.c 2007-10-12 16:59:31.693372287 +0200
+++ src/rc.c 2007-10-12 16:59:55.698710122 +0200
@@ -932,12 +932,12 @@
uname (&uts);
- printf ("\n");
+ /*printf ("\n");
printf (" %sGentoo/%s; %shttp://www.gentoo.org/%s"
"\n Copyright 1999-2007 Gentoo Foundation; "
"Distributed under the GPLv2\n\n",
ecolor (ECOLOR_GOOD), uts.sysname, ecolor (ECOLOR_BRACKET),
- ecolor (ECOLOR_NORMAL));
+ ecolor (ECOLOR_NORMAL));*/
if (rc_env_bool ("RC_INTERACTIVE"))
printf ("Press %sI%s to enter interactive boot mode\n\n",
|
10. Podsumowanie
To w zasadzie wszystko. W ten sposób otrzymujemy ładny system, ze zintegrowaną procedurą ładowania, obsługą zarówno kluczy @pendrive, jak i haseł. TC + Blowfish zapewniają szybkie działanie [pojedyńcze % zużycia CPU u mnie, nie wpłynęły w żaden sposób na wygodę pracy], a w razie skradzenia laptopa, lub zwinięcia go przez CBA, możemy spać spokojnie Dla dopełnienia ważności tego pendrive'a i przyjemności pracy z systemem, można tam wrzucić klucze pam_usb, ssh i inne wspomagacze [część z tego opisałem w swoim pierwszym HOWTO]. Sam trzymam na nim jeszcze backup najważniejszych danych, takich jak mail'e czy kody źródłowe - codziennie o 04:00 rsync robi swoje.
Pewnie nikt nie porwie się na odstawianie całości, którą ja z ciekawości popełniłem, ale może nauczy się czegoś nowego, jak np. obsługa initramfs i co można zrobić z systemem, jeszcze zanim ten rozpocznie procedurę ładowania. Podziękowania składam wolnemu czasowi, dzięki któremu miałem okazję to wszystko zrobić |
|
Back to top |
|
|
Poe Bodhisattva
Joined: 03 Apr 2004 Posts: 2155 Location: Mysłowice/Lublin, Poland
|
Posted: Mon Oct 29, 2007 2:57 pm Post subject: |
|
|
dla mnie genialne moze kiedys bede mial wiecej czasu i drugi dysk, albo cos, bo narazie mam w lapku dysk 80 i nie mam jak i gdzie utworzyc partycji TC jednoczesnie majac normalne partycje, chyba ze jakies inne rozwiązanie?
btw, dodaje do PolishFAQ. _________________ Hardware:HP Pavilion DV6875SE[C2DT5550@1.83GHz_3GB-DDR2_320GB-SATA_GF8400GS]
http://popularcoffee.blogspot.com - Popkulturowa Kawa
RLU#342333 |
|
Back to top |
|
|
SlashBeast Retired Dev
Joined: 23 May 2006 Posts: 2922
|
Posted: Mon Oct 29, 2007 4:08 pm Post subject: |
|
|
fajna sprawa, narazie mam szyfrowane tylko home i montuje z poziomu local.start ale moze i cały rootfs zaszyfruje. |
|
Back to top |
|
|
13Homer Guru
Joined: 12 Jul 2005 Posts: 461
|
Posted: Mon Oct 29, 2007 5:30 pm Post subject: |
|
|
Fajne HOWTO, ale trochę późno :) Jakieś dwa tygodnie temu siedziałem kilka dni, żeby testowo zaszyfrować z hasłem działający system. Udało się, na szczęście. Ale nie korzystałem z TrueCrypta, tylko Luksa.
Poza "zgodnością" z Windowsami ma TrueCrypt jakieś zalety w porównaniu z Luksem? _________________ Lenovo ThinkPad R61 / C2D@2.6.24 / nVidia Quatro NVS 140M / 2 GB RAM |
|
Back to top |
|
|
-BekaS- n00b
Joined: 21 Nov 2007 Posts: 3
|
Posted: Wed Nov 21, 2007 10:30 pm Post subject: |
|
|
Witam,
Bawię się z tym od jakiegoś czasu małymi krokami. Będzie w sumie już chyba drugi dzień, ale teraz stanąłem w miejscu. W jaki sposób mogę zbudować statyczną binarkę truecrypt ?? Niestety kompilowanie kodu ściągniętego ze strony projektu nic nie dało ( wykonałem polecenie ./build.sh). Takie samo pytanie dotyczy setfont. Jak to zrobić. Google jakoś średnio mi pomogło, a szukałem sporo.
pozdrawiam |
|
Back to top |
|
|
13Homer Guru
Joined: 12 Jul 2005 Posts: 461
|
Posted: Thu Nov 22, 2007 7:16 am Post subject: |
|
|
To może zbuduj dynamicznie wiązaną i dodatkowo skopiuj biblioteki? Nie ma obowiązku korzystania wyłącznie ze statycznych wersji. _________________ Lenovo ThinkPad R61 / C2D@2.6.24 / nVidia Quatro NVS 140M / 2 GB RAM |
|
Back to top |
|
|
SlashBeast Retired Dev
Joined: 23 May 2006 Posts: 2922
|
Posted: Thu Nov 22, 2007 7:22 am Post subject: |
|
|
przełącznik -static do gcc. |
|
Back to top |
|
|
-BekaS- n00b
Joined: 21 Nov 2007 Posts: 3
|
Posted: Thu Nov 22, 2007 6:01 pm Post subject: |
|
|
13Homer wrote: | To może zbuduj dynamicznie wiązaną i dodatkowo skopiuj biblioteki? Nie ma obowiązku korzystania wyłącznie ze statycznych wersji. |
Przyznam szczerze, że akurat w tej kwestii jestem trochę zielony. Cały problem polega na tym, że w tym całym kodzie źródłowym jest pliczek ./build.sh nie ma żadnego configure ani nic w ten deseń. A ja nie za bardzo wiem jak się za to zabrać. Może jakiś bardziej łopatologiczny pomysł. Próbowałem sprawdzić zależności wykorzystując:
Code: | qdepends -a truecrypt
* DEPEND
app-crypt/truecrypt-4.3a: virtual/linux-sources sys-fs/device-mapper virtual/linux-sources virtual/modutils sys-apps/sed
* RDEPEND
app-crypt/truecrypt-4.3a: sys-fs/device-mapper virtual/modutils
* PDEPEND
|
Odtworzyłem w initramfs strukturę katalogów taką, że pliki dmsetup i insmod (oczywiście wersje statyczne) są tam gdzie trzeba. Porobiłem symlinki do bin, już na wszelki wypadek, jednak dalej nic to nie pomogło. Przepisałem ten cały skrypt od nowa bo u mnie nie chciał zadziałać. Zbudowałem initramfs, a teraz stoję w tym jednym miejscu i kaplica. Po proszę o jakieś mini HOW-TO jak rozwalić ten problem. Myślę, że nie tylko mi się przyda Może jakaś wcześniejsza wersja truecrypt pozwala na skompilowanie paczki statycznie ??
================================================
SlashBeast wrote: | przełącznik -static do gcc. |
Niestety nie jestem biegły w temacie obsługi gcc. Co konkretnie skompilować, z jakimi parametrami ??
pozdrawiam
Arfrever: Połączono posty. |
|
Back to top |
|
|
manwe_ l33t
Joined: 01 Feb 2006 Posts: 632 Location: Kraków/Cracow, Poland
|
Posted: Thu Nov 22, 2007 7:10 pm Post subject: |
|
|
Nie pamiętam dokładnie, ale truecrypt w swojej paczce miał chyba folder gdzie robi się binarkę ["cli" czy jakoś tak], jest tam standardowy Makefile, odpalasz
Code: | make EXTRA_LFLAGS=-static |
i powinno być. |
|
Back to top |
|
|
13Homer Guru
Joined: 12 Jul 2005 Posts: 461
|
Posted: Thu Nov 22, 2007 9:59 pm Post subject: |
|
|
-BekaS- wrote: | Przyznam szczerze, że akurat w tej kwestii jestem trochę zielony. Cały problem polega na tym, że w tym całym kodzie źródłowym jest pliczek ./build.sh nie ma żadnego configure ani nic w ten deseń. A ja nie za bardzo wiem jak się za to zabrać. Może jakiś bardziej łopatologiczny pomysł. |
Nie wiesz jak sprawdzić zależności od dynamicznych bibliotek? Budujesz aplikację i na jej binarce wykonujesz ldd, np. tak:
co daje:
Code: | ~# ldd /bin/true
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/libc.so.6 (0xb7e4e000)
/lib/ld-linux.so.2 (0xb7f91000) |
Oznacza to, że w celu skorzystania z programu "true" musisz mieć także następujące biblioteki:
- ld-linux.so.2 w katalogu /lib
- libc.so.6 w katalogu /lib
i tyle. Kopiujesz program gdzie uważasz (najlepiej do bin oczywiście), do katalogu lib wrzucasz wymagane biblioteki i jedziesz. _________________ Lenovo ThinkPad R61 / C2D@2.6.24 / nVidia Quatro NVS 140M / 2 GB RAM |
|
Back to top |
|
|
-BekaS- n00b
Joined: 21 Nov 2007 Posts: 3
|
Posted: Thu Nov 22, 2007 10:05 pm Post subject: |
|
|
manwe_ wrote: | Nie pamiętam dokładnie, ale truecrypt w swojej paczce miał chyba folder gdzie robi się binarkę ["cli" czy jakoś tak], jest tam standardowy Makefile, odpalasz
Code: | make EXTRA_LFLAGS=-static |
i powinno być. |
I to był tip którego potrzebowałem. Z tą informacją wszystko poszło do przodu i już działa. Co prawda na swoje potrzeby zrobiłem to zupełnie inaczej ale bez tego HOW-TO nie dałbym rady. Wielkie dzięki.
pozdrawiam
================================================
13Homer wrote: | Nie wiesz jak sprawdzić zależności od dynamicznych bibliotek? Budujesz aplikację i na jej binarce wykonujesz ldd, np. tak:
co daje:
Code: | ~# ldd /bin/true
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/libc.so.6 (0xb7e4e000)
/lib/ld-linux.so.2 (0xb7f91000) |
|
Właśnie tego mi brakowało. Próbowałem to zrobić za pomocą:
Code: |
qdepends -a truecrypt |
Jednakże nie zdało się to na zbyt wiele. Teraz już będę wiedział na przyszłość. Dziękuję za porady i pozdrawiam.
-BekaS-
Arfrever: Połączono posty. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|