Linuxun PC harici cihazlara kurulumu

Başlatan SerkanK, 26 Kasım 2012 - 19:36:19

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

cagriemer

Peki soyle ifade etmeye calisayim. Bir anligina gomulu sistemi, flash belleginizi unutun. Ubuntu kurulu sisteminizde kernel.org'a gidip cekirdegin son surumunun arsiv dosyasini cektiniz. Sisteminizi bu cektiginiz arsiv dosyasindaki cekirdek surumu ile acmak icin ne yapmaniz gerektigini biliyor musunuz? Bu ve bunun gibi adimlar forumda ayri ayri basliklar altinda var. Olmasa bile elimizden geldigince yardimci olmaya calisiriz. Fakat sorun su ki 2007'de yazilmis o belgeyi okuyup, gunumuze ve sizin durumunuza gore guncelleyip sifirdan bir belge yazilmasi ihtimali neredeyse yok. Yani temel meseleleri kavradiktan sonra o belgeyi kendi durumunuza ve zamana gore uyarlamak sizin isiniz. Isteginiz aslinda suna benzer; "Ben henuz Cessna ucuramiyorum ama A380'i ILS ile indirmek istiyorum.". Elbette birinin adim adim talimatlari ile belki ani kurtarabilirsiniz fakat uzun donemde size bir sey katmayacaktir bu. O yuzden adimlarinizi yavas yavas atin.

Umarim beni yanlis anlamazsiniz.

alierkanimrek

Öncelikle bir cihaza Linux kurmak için Kernel'in o cihazın işlemci mimarisine desteğinin olması lazım.
Ondan sonra o cihazın üzerindeki diğer çipler (g/ç aygıtları) için kernel modüllerinin bulunması lazım.
Sonra yapacağınız şey bir kuluçka sisteminde (Ubuntu vs.) kerneli ve modülleri bu hedef donanım için derlemek ve donanımda düzgün boot etmesini sağlamak.
Ondan sonra donanımda kullanacağınız uygulamalara uygun ortamı hazırlamak için gerekliyse bir init sistemi inşa etmelisiniz.
Ondan sonra uygulamaları derleyip çalıştırmak kalıyor.

Bunu i386 mimarisinde denemek için http://www.linuxfromscratch.org/lfs/ belgesini takip etmeniz gerekiyor. (Kendi tam teşekküllü kuluçka sistemini sağlıyor)
Eğer çok ağır gelirse Gentoo, o da ağır gelirse Arch kurulumu ile hızlıca bir şeyler öğrenmeye başlarsınız, ondan sonra LFS yaparsınız.

Ubuntu gibi dağıtımların amacı farklı olduğu için böyle şeyler için belgeleri olmuyor ve öğrenmek daha zor ve uzun sürer.




SerkanK

cagriemer yanlış anlanıcak bir durum yok. doğru soyluyorsunuz aslında..

bende sadece nerden başlıcamı , neyi ogrencegimi iyi bilmiyorum. asıl amacıl gömülü sistemi öğrenmek.
forumda sorarak bir şekilde aldıgım bilgilerden yola cıkarak ilerledim.
mesajın basından takip ederseniz nasıl basladıgımı anlarsınız. mesajın başında aslında nerdeyse hic birşey bilmiyordum konu hakkında
Cihazlara linux nasıl yukleniyor diye sormustum ve bazı linkler aldım okumam icin . Turkce olan linki takip ettim
oda eski bir belge ama yinede iş gorur dusuncesi ile. aslında kendim icin cok sey ogrendim o belgelerden..

neyse şimdi Soyle bir ozetleme yapalım ozaman.
amacım gömülü sistemi ogrenmek ve basit bir arayuzu olan bir sistem yapmak
hangi konulara hangi sırayla arastırıp ogrenmem lazım..
mesela ilk önce sizin demiş oldugunuz gibi 
Alıntı YapSisteminizi bu cektiginiz arsiv dosyasindaki cekirdek surumu ile acmak icin ne yapmaniz gerektigini biliyor musunuz? Bu ve bunun gibi adimlar forumda ayri ayri basliklar altinda var. Olmasa bile elimizden geldigince yardimci olmaya calisiriz

bu konuyumu ogrenmem gerekir yoksa ondan once ogrenmem gereken birşey varmıdır.
yada madde madde bana sırayla ogrenmem gereken bakmam gereken konuları yazarsanız iyi olur. varsa kaynak link falan iyilor .
Forumlarda birşeyler arayıp bulmak sonra herbirir ayrı parcalar halinde oldugundan aradaki eksik parca bulunmayıca ne yapacagını bilememek zor
ve tam olarak neye bakman gerektiginide bilmiyorrsan ozaman daha zor oluyor.

Aslında bilmiyorum olurmu sanki kendi amacım icinmiş gibi oluyor ama bu konuda bilgili arkadaslar bir ders hazırlasa cok iyi olur. :)


Ayrıca  şu ana kadar bana yardımcı olmaya calısan ve yanıt veren butun arkadaslarıma tekrar teşşekür ederim


cagriemer

Benim tavsiyem once kolay bir dagitimda baslayip kendinizi hazir hissettiginizde @alierkanimrek'in baglantisini vermis oldugu LFS projesine gitmeniz yonunde olacak. Bir ara @heartsmagic forumda[1] LFS anlatmaya baslamisti fakat o proje henuz bitmis degil.

[1] http://forum.ubuntu-tr.net/index.php?topic=33771.0

ct

#29
Şu dökümanı takip etmeye çalışıyorum:

http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Tutorial-A-simple-embedded-Linux-system/

En azından emulatöre yükleyebilirim diye tahmin ediyordum.

Şununla gerekli emulatörü ve busybox'ı kurdum:

sudo apt-get install busybox-static qemu

Ardından aşağıdaki kodlarla bir dizin açtım, içine bin, usr/bin ve usr/sbin dizinlerini de açtım ve busybox bağlantısını verdim:

mkdir simple
cd simple
mkdir -p bin usr/bin usr/sbin
cp /bin/busybox bin/busybox
ln -s busybox bin/sh


Aşağıdaki kodu INITSCRIPT adında bir dosya açarak (o simple diye açtığım dizinde) kaydettim:

#!/bin/sh

# Create all the busybox symbolic links
/bin/busybox --install -s

# Create base directories
[ -d /dev ] || mkdir -m 0755 /dev
[ -d /root ] || mkdir --mode=0700 /root
[ -d /sys ] || mkdir /sys
[ -d /proc ] || mkdir /proc
[ -d /tmp ] || mkdir /tmp
mkdir -p /var/lock

# Mount essential filesystems
mount -t sysfs none /sys -onodev,noexec,nosuid
mount -t proc none /proc -onodev,noexec,nosuid

# Create essential filesystem nodes
mknod /dev/zero c 1 5
mknod /dev/null c 1 3

mknod /dev/tty c 5 0
mknod /dev/console c 5 1
mknod /dev/ptmx c 5 2

mknod /dev/tty0 c 4 0
mknod /dev/tty1 c 4 1

echo "/sbin/mdev" > /proc/sys/kernel/hotplug

echo "Creating devices"
/sbin/mdev -s

exec /sbin/init


init dosyasıyla bağını verdim ve çalıştırılabilir hale getirdim:

cp INITSCRIPT init
chmod a+x init


Ardından kullanıcı dizinimin altına simple.gz adında bir dosya oluşturdum:

find . | cpio --quiet -o -H newc | gzip >../simple.gz

Kullanıcı dizinime geçtim çünkü simple.gz dosyasını orada oluşturduk:

cd ..

Haydi bre dedim qemu'da denemeye çalıştım hop hata aldım :)

qemu -kernel /boot/vmlinuz-2.6.26-1-686 -initrd simple.gz \ -append "root=/dev/ram" /dev/zero
No command 'qemu' found, did you mean:
Command 'qtemu' from package 'qtemu' (universe)
Command 'aqemu' from package 'aqemu' (universe)
qemu: command not found


Biraz araştırınca qemu'yu işletim sisteminin mimarisini belirterek kullanmak lazımmış:

qemu-system-i386 -kernel /boot/vmlinuz-2.6.26-1-686 -initrd simple.gz -append "root=/dev/ram" /dev/zero
qemu: could not load kernel '/boot/vmlinuz-2.6.26-1-686': No such file or directory


Bu hata kolaydı, /boot dizinine gidip vmlinuz ile başlayan dosyalara baktım ve en sonuncusunu denedim:

qemu-system-i386 -kernel /boot/vmlinuz-3.2.0-34-generic-pae -initrd simple.gz -append "root=/dev/ram" /dev/zero
qemu: could not load kernel '/boot/vmlinuz-3.2.0-34-generic-pae': Permission denied


Bu sefer sudo ile çalıştırmam gerektiğini öğrendim hatadan:

sudo qemu-system-i386 -kernel /boot/vmlinuz-3.2.0-34-generic-pae -initrd simple.gz -append "root=/dev/ram" /dev/zero

ve çalıştı qemu. Kurulum başlar gibi oldu ancak init dosyasında bir sorundan dolayı tam olarak çalışmadı. Hata kodu şuna benzer bir şey:

Kernel panic - not syncing: No init found. Try passing init= option to kernel. See Linux Documentation/init.txt for guidance

Çok temel bir şeyi yanlış yapmışım gibi geliyor.

if


ct

#31
Alıntı yapılan: if - 25 Aralık 2012 - 18:23:49
@ct, init parametresi bulunmuyor mu?

init parametresi çekirdeğin/vmlinuz dosyasının içinde anladığım kadarıyla. Şimdi sistemi bozmadan (oluşturduğu vmlinuz ile sistemin açılmaması gerekiyor) nasıl vmlinuz yaratırım onu öğrenmem gerekiyor sanırım bu oluşturma sırasında init parametresine müdahale edebileceğim herhalde? Çekirdek derlemesi yapmadım direkt ubuntunun pae uzantılı çekirdeğini kullandım deneme amaçlı. Doğal olarak çalışmadı.

Ekleme: Döküman olarak şunu buldum

http://www.faqs.org/docs/Linux-HOWTO/Kernel-HOWTO

Daha yeni sürümler için bu tarz nasıl belgesi var mıdır? Elimde kernel development 3th ed. kitabı var fakat bu konuları pek işlemiyor.

if

@ct, qemu-system-i386 komutu için verilmesi gerektiğini anlaım ben bu init parametresinin. init=systemd gibi.