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/.
Strony: 1
Hej,
Przeczytałem masę artykułów. Wiem, że teoretycznie się nie da. Że trzeba chrootować. Komp dla którego chce zrobić kernel, jest strasznie wolny. Kompilacja trwa cały dzień. Wydaje mi się, że mimo wszystko można zrobić paczki i potem je tylko zainstalować. Za pierwszym razem mi się udało i komp wstał, ale późniejsze próby kończyły się klęską (panika kernela). Może opiszę co i jak robiłem.
Najpierw generuje config na 32 poleceniem:
make defconfig
później na 64 dodaje ten config to tych samych źródeł i:
make ARCH=i386 menuconfig
Zaznaczam co mi potrzeba i:
make-kpkg --cross-compile - --arch i386 kernel_image kernel_headers
No i wszystko gra. Problem w tym, że wynikowe paczki są dla amd64 (tego nie rozumiem dlaczego skoro podałem arch w poleceniu) (tu pytanie: Jak zrobić paczki dla i386?). No nic. Forsuje:
dpkg --force-architecture -i linux-image*amd64.deb
Podkreślę, że mimo forsowania raz czy dwa razy udało mi się postawić kernel tylko nie pamiętam co takiego zrobiłem, że działał...
Miałem też próby zmieniania Makefile'a. Zmieniałem linijkę:
CC = $(CROSS_COMPILE)gcc
na
CC = $(CROSS_COMPILE)gcc -m32
ale też lipa. Być może problem jest configu: http://wklej.dug.net.pl/4144
Odznaczam w nim tylko żeby nie robił initrd. ext3 i ata jest na sztywno (tu pytanie: Czy trzeba mieć na sztywno ext2 mimo że się z niego nie korzysta przy kernelu bez init'a?)
Z góry dziękuję za pomoc.
Pozdrawiam
Ostatnio edytowany przez P@blo (2012-06-07 23:05:26)
Offline
Ten opis wygląda nieźle: [url]http://sparlampe.wordpress.com/2011/01/07/cross-compiling-i386-kernel-on-amd64-machine-using-make-kpkg/[/url].
[b]EDIT:[/b] A tutaj z [tt]make deb-pkg[/tt], wygląda jeszcze łatwiej: [url]http://michael-prokop.at/blog/2011/07/12/creating-32bit-debian-packages-in-64bit-environments/[/url].
[quote=P@blo]Najpierw generuje config na 32 poleceniem:
make defconfig
[/quote]
Jesteś pewien, że to generuje konifig? Czasem nie kopiuje po prostu odpowiedniego dla danej architektury (w tym przypadku arch/x86/configs/i386_defconfig) jako .config? Nie żeby to miało jakieś większe znaczenie, ale jeśli tylko kopiuje to nie trzeba się bawić w przenoszenie z jednego kompa na drugi.
[quote=P@blo]Czy trzeba mieć na sztywno ext2 mimo że się z niego nie korzysta przy kernelu bez init'a?[/quote]
Ja nie mam i działa, zatem pewnie nie.
Offline
[quote=ArnVaker]Jesteś pewien, że to generuje konifig? Czasem nie kopiuje po prostu odpowiedniego dla danej architektury (w tym przypadku arch/x86/configs/i386_defconfig) jako .config? Nie żeby to miało jakieś większe znaczenie, ale jeśli tylko kopiuje to nie trzeba się bawić w przenoszenie z jednego kompa na drugi.[/quote]
Może i masz racje, ale popatrzyłem na różnice i są (niewielkie ale jednak). Więc może ścieżka którą podałeś jest bazą, ale jeszcze dopieszcza co nieco... ;)
Na razie już nie mam dostępu do kompa (na jakiś dłuższy czas) więc wątek niech zahibernuje. Dzięki za linki.
Offline
Miałem jeszcze przez chwile ten komp więc się pobawiłem. [tt]make deb-pkg[/tt] jest świetne. Robi to co chce (czyli paczki dla 32) tak więc gorąco polecam.
Mój problem jendak nie rozwiązał się do końca bo jest problem z konfigiem. Z initem działa, bez nie. Nie wiem czy w 32 jest tak samo jak w 64, stąd zwracam się do was o pomoc w znalezieniu błędu. Załączam ten sam konfig 'z' i 'bez' initrd.
[url=http://wklej.dug.net.pl/4173]Config z initem[/url] → działa
[url=http://wklej.dug.net.pl/4174]Config bez inita[/url] → nie działa
Oczywiście sterwonik ATA i ext3 jest na sztywno... Czy coś jeszcze powinno być o czym nie wiem?
Ostatnio edytowany przez P@blo (2012-06-07 15:47:06)
Offline
UUID-y wykluczyłeś? Tego posta jeszcze zobacz: [url]http://forum.dug.net.pl/viewtopic.php?pid=192167#p192167[/url].
Offline
Ale mówiąc o UUID-ach mówisz o fstab?
Offline
O wpisie w konfigu GRUB-a. Jeśli tam są UUID-y, to bez initrd będzie panikował.
Offline
A widzisz... Zaraz sprawdzę...
[b]EDIT:[/b]
Rzeczywiście to były UUID-y w grubie (w fstabie też zmieniłem). Działa wszystko jak należy :)
Dzięki bardzo.
Ostatnio edytowany przez P@blo (2012-06-07 23:04:59)
Offline
W fstabie mogą zostać jeśli tak Ci bardziej pasuje. Chodzi tylko o konfig bootloadera.
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00003 | SET NAMES latin2 |
0.00105 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.252.58' WHERE u.id=1 |
0.00069 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.252.58', 1733301342) |
0.00051 | SELECT * FROM punbb_online WHERE logged<1733301042 |
0.00077 | SELECT topic_id FROM punbb_posts WHERE id=203408 |
0.00180 | SELECT id FROM punbb_posts WHERE topic_id=21185 ORDER BY posted |
0.00058 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=21185 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00102 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=21185 ORDER BY p.id LIMIT 0,25 |
0.00080 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=21185 |
Total query time: 0.00739 s |