Bootable SD kortelės paruošimas

> Pradinis straipsnis

Kadangi jau paruošėme bootloaderį ir susikompiliavome kernelį, galime juos įrašyti į sd kortelę ir paleisti sistemą. Tačiau prieš tai dar reikia pasirūpinti pačia linux aplinka (programomis). Jūsų laimei kiekvienos komandos atskirai kompiliuoti nereikės, yra priruošta daug failų sistemos medžių (rootfs/filesystem tree), kuriais be problemų galėsite naudotis.

Keli pavyzdžiai:

Kurią sistemą pasirinksite nėra labai svarbu, tai tiesiog skonio reikalas. Kai jau išsirinkote, galite ir parsisiųsti:

1
wget -c http://my.favorite.distro/arch.tar.gz

SD kortelės paruošimas

Išvalome sd kortelę:

1
dd if=/dev/zero of=/dev/sdX bs=1M count=10

Sukuriame skirsnius (particijas). Pirmasis skirsnis turėtų būti atitrauktas nuo pradžios, nes pradžioje įrašysime bootloaderį.

Pavadinimas Formatas Pradžia Dydis
BOOT fat 1MB 100MB
RootFS ext4 100MB bent 4GB, priklauso nuo tavo pasirinktos distribucijos

Partition table kūrimui naudojau cfdisk:

Dabar suformatuojame skirsnius:

1
2
3
4
5
6
7
8
mkdosfs /dev/sdX1
mkfs.ext4 /dev/sdX2

#Primountiname sd kortelės skirsnius:
mkdir -p /mnt/boot/
mkdir -p /mnt/rootfs/
mount /dev/sdX1 /mnt/boot/
mount /dev/sdX2 /mnt/rootfs/

Išarchyvuojame rootfs:

1
2
3
4
tar xpvf <mano/distro>/arch.tar.gz -C /mnt/rootfs/

#Linaro savo failus papildomai sudeda į /binary/ aplanką. Mes to nenorime:
mv /mnt/rootfs/binary/* /mnt/rootfs/

Nukopijuojame kernelį, device-tree ir kernelio modulius:

1
2
3
cp <path to kernel>/deploy/zImage /mnt/boot/
cp <path to kernel>/deploy/*.dtb /mnt/boot/
cp -R <path to kernel>/deploy/lib/* /mnt/rootfs/lib/

Pakoreguojame fstabą. SD kortelės linuxuose enumeruojamos kaip /dev/mmcblk0pX, todėl jas dabar ir užregistruosime fstab’e:

/mnt/rootfs/etc/fstab
1
2
/dev/mmcblk0p2 / auto errors=remount-ro 0 1
/dev/mmcblk0p1 /boot auto errors=remount-ro 0 1

Jeigu reikia, galima paruošti ir tinklo konfigūraciją:

/mnt/rootfs/etc/network/interfaces
1
2
3
4
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

Įrašome bootloaderį. Atitraukiame nuo pradžios per 8 sektorius, kad tilptų ir partition table:

1
dd if=<path to u-boot>/u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8

Sukuriame bootloaderio config failą:

1
2
mkdir -p /mnt/boot/extlinux/
nano /mnt/boot/extlinux/extlinux.conf
/mnt/boot/extlinux/extlinux.conf
1
2
3
4
label Mano Linux
kernel ../zImage
append root=/dev/mmcblk0p2
fdtdir ../

Viskas baigta, tereikia išmuontinti sd kortelę:

1
2
umount /mnt/boot/
umount /mnt/rootfs/

Galite kišti sd kortelę į savo kompiuteriuką ir bootinti. Jeigu rašo, kad neranda tokio dtb, blogai pavadinote device-tree failą bekonfigūruodami u-boot ir dabar reikės arba perkompiliuoti u-boot arba pervadinti failą į tokį, kokio nori u-boot.

Username ir slaptažodis priklauso nuo distribucijos. Linaro distribucijose vartotojo vardas: “linaro”, be slaptažodžio. Arch’e - alarm/alarm.