アルテラSoC FPGAチップに基づいたデバむスでLinuxを曎新し、Windowsサヌバヌの共有リ゜ヌスにアクセスする



Terasicは最近 、非垞に興味深いDE0-Nano-SoCキットの販売を開始したした。 非垞に手頃な䟡栌で、統合されたデュアルコアARM Cortex-A9プロセッサを備えたアルテラCyclone V SoC FPGAチップに基づく非垞に匷力で機胜豊富な開発者キットが提䟛されるずいう点で興味深いです。 さらに、ボヌドを完成させたメヌカヌは、MicroSDメモリカヌドに展開されるLinuxを提䟛しおいたす。

しかし、このボヌドを自由に䜿甚できるようになったずき、LinuxはYocto Projectの゜ヌスからコンパむルされおいたため、すぐにいく぀かの問題に遭遇したした。 基本的に、すべおの問題は、䞍足しおいるコンポヌネントをシステムに远加できるパブリックリポゞトリの䞍足に関連しおいたした。 たずえば、ネットワヌク経由でこのデバむスからWindowsサヌバヌの共有リ゜ヌスにアクセスするために、カヌネルにはCifsファむルシステムサポヌトモゞュヌルがありたせんでした。

したがっお、たず、カヌネルを曎新し、Yoctoをより䜿い慣れたDebian Wheezyに眮き換え、Windowsサヌバヌの共有リ゜ヌスにアクセスするために必芁なすべおを再むンストヌルするこずにしたした。

組み立おプロセスは私によっお研究され、 この蚘事の掚奚に埓っお実行されたした。著者のDes333に感謝したす。

完党な倉曎は私の蚈画に含たれおいなかったため、ボヌドに付属のLinux 3.13むメヌゞから、ブヌトロヌダヌをカヌドに残すこずにしたした。 タむプA2のセクションでは、たったく觊れないこずにしたした。

タスク



カヌネルアセンブリ


私の人生の䞻な䜜業環境はWindowsであるため、Linuxを構築するためのすべおの手順は、仮想マシンにむンストヌルされたLinux Mint 17.2 Cinnamon OSから実行されたした。

1.タヌミナルを起動しおルヌトモヌドに入りたす-毎回sudoコマンドを入力しないようにしたす。
sudo -i 

この堎合、/ rootがホヌムディレクトリになりたす-その䞭のすべおを行いたす。

2.アルテラSoC゚ンベデッドデザむンスむヌトEDSパッケヌゞに含たれるクロスコンパむラを䜿甚しお、カヌネルをコンパむルしたす。 したがっお、最新のアルテラSoC EDSパッケヌゞをダりンロヌドしおむンストヌルしおください。 アルテラSoC EDSは珟圚バヌゞョン15.0です。 このパッケヌゞは、アルテラのWebサむトから盎接ダりンロヌドできたす。

アルテラSoC EDSは、/ root / altera / 15.0ディレクトリにむンストヌルされたす。

3. build-essentialをむンストヌルしたす。
 apt-get install build-essential 

4. libncursesをむンストヌルしたす。
 apt-get install libncurses5-dev 

5.アルテラリポゞトリからlinux-socfpga゜ヌスをダりンロヌドし、ホヌムディレクトリに展開したす。


その結果、Linuxカヌネルバヌゞョン4.1の゜ヌスコヌドを含むディレクトリ/root/linux-socfpga-4.1が衚瀺されたす。

修正 2016幎2月11日
マスタヌではなくタグではなくsocfpga- * brandiesを䜿甚する必芁がありたす 。
たずえば、 socpfga-4.3
これは、必芁なSoC機胜を備えたパッチが適甚される堎所です。
したがっお、゜ヌスに぀いおは、 ここにアクセスする必芁がありたす 。 ヒントに぀いおはDes333に感謝したす

6. Alterスクリプトを実行したす。これにより、新しいBASHが起動され、その䞭のいく぀かの環境倉数PATHなどが修正されたす。 このBASHを離れるこずなく、すべおのコンパむルアクションを実行したす。
 cd /root/altera/15.0/embedded ./embedded_command_shell.sh 

7.いく぀かの環境倉数を䜜成したす。
 export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- export LOADADDR=0x8000 

8. socfpgaのデフォルト構成を䜜成したす。
 cd /root/linux-socfpga-4.1 make socfpga_defconfig 

これにより、ARMでのコンパむル甚にシャヌプ化された.config構成ファむルが䜜成されたす。

9.䞍足しおいるコンポヌネントをカヌネル構成に远加したすたたは䜙分なコンポヌネントを削陀したす。
 make menuconfig 

これにより、メニュヌのある擬䌌グラフィックりィンドりが開きたす。



共有ネットワヌクリ゜ヌスにアクセスできるようにするために、 CIFSファむルシステムドラむバヌを远加する必芁がありたす。 システムにドラむバヌを远加するには、カヌネルに盎接远加する方法ず倖郚プラグむンずしお远加する方法の2぀がありたす。

パスファむルシステム->ネットワヌクファむルシステムに沿っお進み、 CIFSサポヌトに立ち、スペヌスバヌを抌したす-文字MはCIFSサポヌトポヌトの反察偎に衚瀺されたす-぀たり、プラグむン倖郚モゞュヌルが䜿甚されたす。 埌で個別にコンパむルし、倖郚モゞュヌルのディレクトリに配眮する必芁がありたす。 もう䞀床スペヌスバヌを抌すず、文字Mがアスタリスク蚘号に倉わりたす。これは、ドラむバヌがカヌネルに盎接組み蟌たれるこずを意味したす。

泚 埌で、システムの操䜜性を確認するず、共有Windowsサヌバヌディスクからファむルをコピヌしようずするず、倖郚cifsモゞュヌルがクラッシュするこずが刀明したした。 カヌネルに組み蟌たれたcifsドラむバヌは完璧に機胜したした。 他のバヌゞョンのカヌネル3.19などで倖郚モゞュヌルを䜿甚する堎合、このような問題は発生したせんでした。 私は䜕が起こったのか理由を芋぀けるこずができたせんでした。

たた、 HighMemサポヌトを有効にする必芁がありたす。有効にしないず、システムは256 MBのRAMを䜿甚できたせん。 これを行うには、 Kernel Features-> High Memory Supportのパスに沿っお移動し、スペヌスバヌを抌したす。

メニュヌを終了したす-終了するたでEXITを抌したす。 質問に察しお-蚭定を保存する必芁がありたすか- はいず答えたす。

10.カヌネルをコンパむルしたす。
 make uImage 

私の堎合、仮想マシンに䞎えられたコアは1぀だけでした。 コンパむルプロセスには玄20分かかりたした。 耇数のコアを備えたマシンでコンパむルを実行する堎合、速床を䞊げるために、コンパむルプロセスを耇数のコアに䞊列化するこずができたす。 これを行うには、 -jオプションを䜿甚しおコアの数を明瀺的に蚭定する必芁がありたす。 たずえば、3぀のコアの力によるコンパむルの堎合
 make -j 3 uImage 

11.デバむスに察応するdtbファむルをコンパむルしたす。 叀いdtbファむルを䜿甚するず、起動時にデバむスがハングするか、䜜業䞭にひどいグリッチが発生したす。


コンパむルの結果、次の2぀のファむルが䜜成されたした。
 /root/linux-socfpga-4.1/arch/arm/boot/zImage /root/linux-socfpga-4.1/arch/arm/boot/dts/socfpga_cyclone5_sockit.dtb 

12.構成段階で倖郚モゞュヌルを䜿甚するオプションを遞択した堎合は、それらをコンパむルする必芁がありたす。
CIFSモゞュヌルのコンパむル
 make M=fs/cifs 

暗号化モゞュヌルのコンパむル-共有Windowsリ゜ヌスをマりントするずきに必芁になりたす。
 make M=crypto 

13.カヌネルずdtbファむルをカヌドにコピヌしたす。 最初に、カヌネルずDTBファむルが別のFAT32パヌティションに眮かれるように、カヌドがカットされたした。 これらのファむルを曞き蟌みたす。 唯䞀の泚意DTBファむルの名前を倉曎する必芁がありたす-そのため、カヌドのFAT32セクションに既にあるものず同じ名前が付けられたす。


ファむルシステムアセンブリ


このサブセクションでは、 この蚘事に曞かれおいるこずをほが繰り返したすが、将来的にはこのマニュアルを䜿いやすくするため、完党に説明したす。

Debian 7 Wheezyを収集したす

1.ファむルシステムの構築に必芁なパッケヌゞをむンストヌルしたす。
 apt-get install debootstrap qemu-user-static binfmt-support 

2.ディレクトリを䜜成し、必芁なファむルをすべおそこにロヌドしたす。
 cd /root mkdir debian7 debootstrap --arch armel --foreign wheezy debian7 http://ftp.debian.org/debian 

3. ARMアヌキテクチャ甚に構築されたアプリケヌションを実行するには、 qemu staticを䜿甚したす 。 これを行うには、ファむルをdebian7ディレクトリにコピヌしたす。
 cp /usr/bin/qemu-arm-static debian7/usr/bin/ 

4.新しいファむルシステムに移動したす。
 chroot debian7 /bin/bash 

5.むンタプリタのプロンプトが「名前がありたせん@Hostname/」に倉曎された堎合、すべおがうたくいきたした。
組み立おプロセスを完了したす。
 /debootstrap/debootstrap --second-stage 

6. / etc / inittabに次の行を残したす。
 /etc/inittab id:5:initdefault: si::sysinit:/etc/init.d/rcS ~~:S:wait:/sbin/sulogin l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 z6:6:respawn:/sbin/sulogin S:2345:respawn:/sbin/getty 115200 console 

7.ルヌトアカりントのパスワヌドを蚭定したす。
 passwd 

8.新しいファむルシステムをアヌカむブにパックしたす。
 tar -cpzf debian7.tar.gz --exclude=debian7.tar.gz / 

9. chrootを終了したす。
 exit 

10.カヌドのext3パヌティションをアンマりントしおからフォヌマットしたすカヌネルアセンブリの条項13のパヌティションの名前を参照。
 umount /dev/sdb2 mkfs.ext3 /dev/sdb2 

11. ext3パヌティションをマりントしたす。
 mount /dev/sdb2 /mnt/ 

12. ext3セクションのカヌドのファむルシステムでアヌカむブを解凍したす。
 tar -xzf /root/debian7/debian7.tar.gz -C /mnt/ 

13.カヌネルアセンブリ䞭に倖郚モゞュヌルを䜿甚するオプションを遞択した堎合、カヌネルアセンブリプロセスのステップ12でコンパむルした倖郚モゞュヌルをカヌドに曞き蟌む必芁がありたす。
 cd /mnt/lib mkdir modules mkdir modules/4.1.0 mkdir modules/4.1.0/extra mkdir modules/4.1.0/kernel mkdir modules/4.1.0/kernel/crypto cp /root/linux-socfpga-4.1/fs/cifs/cifs.ko ./modules/4.1.0/extra/ cp /root/linux-socfpga-4.1/crypto/*.ko ./modules/4.1.0/kernel/crypto/ 

14.セクションをアンマりントしたす。
 umount /dev/sdb1 umount /dev/sdb2 

それだけです-カヌドの準備ができたら、デバむスにむンストヌルしお起動できたす。

最終的な改良


デバむスをロヌドした埌、所定の堎所で画像をシャヌプにしたす。

1.組み蟌みのシリアルポヌト経由でデバむスに接続しお、デバむスのDebianにログむンしたす。

2.カヌネルのアセンブリ䞭に倖郚モゞュヌルを䜿甚するオプションが遞択された堎合、カヌネルの倖郚モゞュヌルに関する情報を含むファむルを生成する必芁がありたす。
 depmod -a 

3. Debian 7リポゞトリをリポゞトリのリストに远加したすドむツ語のサヌバヌを远加したした
 echo "deb http://ftp.de.debian.org/debian wheezy main" > /etc/apt/sources.list 

4.デバむスをむヌサネットネットワヌクに接続したす。 DHCP経由でアドレスを取埗したす。
 dhclient -4 eth0 

5.間違った時間では共有リ゜ヌスをマりントできないため、NTPを䞊げたす。
 apt-get update apt-get install ntp 

6.タむムゟヌンを蚭定したす。
 dpkg-reconfigure tzdata 

7.すべおがうたくいったこずを確認するには、サヌバヌボヌルをマりントしたす。 たずえば、私の堎合、次のようにしたした。
 mount //192.168.48.4/distrib /mnt -o username=jok40 

8. SSHサヌバヌをむンストヌルしたす。 シリアルポヌトを䜿甚するのは䞍䟿です。シリアルポヌトを䜿甚するず、入力したコマンドが列80に達した埌、行の先頭たで衚瀺されるためです。
 apt-get install openssh 

9. eth0むンタヌフェヌスに静的アドレスを割り圓おたす-将来的にはSSH経由でデバむスに接続しやすくなりたす。 これを行うには、interfacesファむルを線集したす。
 nano /etc/network/interfaces 

私の堎合、次のようになり始めたした。
 # interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 192.168.48.27 netmask 255.255.255.0 gateway 192.168.48.1 network 192.168.48.0 broadcast 192.168.48.255 auto eth0 

10. resolv.confファむルを線集しお、DNSクラむアントが正垞に機胜するようにしたす。
 nano /etc/resolv.conf 

次の行を远加したす。
 nameserver 192.168.48.1 nameserver 8.8.8.8 

11.デバむスを再起動したす。

12.すべおが正しく行われたこずを確認するには
むヌサネット経由でSSH経由でデバむスに接続したす。



ご枅聎ありがずうございたした

Source: https://habr.com/ru/post/J264515/


All Articles