புதிதாக ஒரு ARM போர்டில் GNU/Linux ஐத் தொடங்குதல் (காளி மற்றும் iMX.6ஐ உதாரணமாகப் பயன்படுத்துதல்)

TL; டாக்டர்: நிரலில், ARM கணினிக்கான காளி லினக்ஸ் படத்தை உருவாக்குகிறேன் debootstrap, linux и u-boot.

புதிதாக ஒரு ARM போர்டில் GNU/Linux ஐத் தொடங்குதல் (காளி மற்றும் iMX.6ஐ உதாரணமாகப் பயன்படுத்துதல்)

நீங்கள் மிகவும் பிரபலமில்லாத சில சிங்கிள் போர்டு மென்பொருளை வாங்கினால், அதற்கான உங்களுக்குப் பிடித்தமான விநியோகத்தின் படத்தின் பற்றாக்குறையை நீங்கள் எதிர்கொள்ள நேரிடும். ஏறக்குறைய அதேதான் நடந்தது பிளிப்பர் ஒன் திட்டமிடப்பட்டது. IMX6 க்கு காளி லினக்ஸ் இல்லை (நான் தயார் செய்கிறேன்), அதனால் நானே அதை அசெம்பிள் செய்ய வேண்டும்.

பதிவிறக்க செயல்முறை மிகவும் எளிது:

  1. வன்பொருள் துவக்கப்பட்டது.
  2. சேமிப்பக சாதனத்தில் (SD கார்டு/eMMC/etc) சில பகுதியிலிருந்து துவக்க ஏற்றி வாசிக்கப்பட்டு செயல்படுத்தப்படுகிறது.
  3. துவக்க ஏற்றி இயக்க முறைமை கர்னலைத் தேடுகிறது மற்றும் அதை சில நினைவக பகுதியில் ஏற்றி அதை இயக்குகிறது.
  4. கர்னல் மீதமுள்ள OS ஐ ஏற்றுகிறது.

எனது பணிக்கு இந்த அளவிலான விவரம் போதுமானது, நீங்கள் விவரங்களைப் படிக்கலாம் மற்றொரு கட்டுரையில். மேலே குறிப்பிட்டுள்ள "சில" பகுதிகள் பலகையில் இருந்து பலகைக்கு வேறுபடுகின்றன, இது சில நிறுவல் சிரமங்களை உருவாக்குகிறது. ARM சர்வர் இயங்குதளங்களை ஏற்றுகிறது தரப்படுத்த முயற்சிக்கிறது UEFI ஐப் பயன்படுத்துகிறது, ஆனால் இது அனைவருக்கும் கிடைக்காது, நீங்கள் எல்லாவற்றையும் தனித்தனியாக இணைக்க வேண்டும்.

ரூட் கோப்பு முறைமையை உருவாக்குதல்

முதலில் நீங்கள் பிரிவுகளை தயார் செய்ய வேண்டும். Das U-Boot வெவ்வேறு கோப்பு முறைமைகளை ஆதரிக்கிறது, நான் FAT32 ஐ தேர்வு செய்தேன் /boot மற்றும் ரூட்டிற்கான ext3, இது ARM இல் காளிக்கான நிலையான பட தளவமைப்பு ஆகும். நான் GNU Parted ஐப் பயன்படுத்துவேன், ஆனால் நீங்கள் அதையே மிகவும் பழக்கமான முறையில் செய்யலாம் fdisk. உங்களுக்கும் தேவைப்படும் dosfstools и e2fsprogs ஒரு கோப்பு முறைமையை உருவாக்க: apt install parted dosfstools e2fsprogs.

SD கார்டை நாங்கள் குறிக்கிறோம்:

  1. MBR பகிர்வைப் பயன்படுத்தி SD கார்டைக் குறிக்கவும்: parted -s /dev/mmcblk0 mklabel msdos
  2. கீழ் ஒரு பகுதியை உருவாக்கவும் /boot 128 மெகாபைட்டுகளுக்கு: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB. தவறவிட்ட முதல் மெகாபைட் மார்க்அப்பிற்காகவும் துவக்க ஏற்றிக்காகவும் விடப்பட வேண்டும்.
  3. மீதமுள்ள முழு திறனுக்கும் ரூட் கோப்பு முறைமையை உருவாக்குகிறோம்: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. திடீரென்று உங்கள் பகிர்வு கோப்புகள் உருவாக்கப்படவில்லை அல்லது மாற்றப்படவில்லை என்றால், நீங்கள் `partprobe` ஐ இயக்க வேண்டும், பின்னர் பகிர்வு அட்டவணை மீண்டும் படிக்கப்படும்.
  5. லேபிளுடன் துவக்க பகிர்வுக்கான கோப்பு முறைமையை உருவாக்கவும் BOOT: mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. ஒரு லேபிளுடன் ஒரு ரூட் கோப்பு முறைமையை உருவாக்கவும் ROOTFS: mkfs.ext3 -L ROOTFS /dev/mmcblk0p2

நல்லது, இப்போது நீங்கள் அதை நிரப்பலாம். இதற்கு உங்களுக்கு கூடுதலாக தேவைப்படும் debootstrap, டெபியன் போன்ற இயக்க முறைமைகளுக்கான ரூட் கோப்பு முறைமைகளை உருவாக்குவதற்கான ஒரு பயன்பாடு: apt install debootstrap.

நாங்கள் FS சேகரிக்கிறோம்:

  1. பகிர்வை ஏற்றவும் /mnt/ (மிகவும் வசதியான மவுண்ட் பாயிண்ட்டைப் பயன்படுத்தவும்): mount /dev/mmcblk0p2 /mnt
  2. நாங்கள் உண்மையில் கோப்பு முறைமையை நிரப்புகிறோம்: debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali. அளவுரு --include சில தொகுப்புகளை கூடுதலாக நிறுவுவதைக் குறிக்கிறது, நான் நிலையான முறையில் கட்டமைக்கப்பட்ட QEMU முன்மாதிரியைக் குறிப்பிட்டேன். இது செயல்பட உங்களை அனுமதிக்கிறது chroot ARM சூழலில். மீதமுள்ள விருப்பங்களின் அர்த்தத்தைக் காணலாம் man debootstrap. ஒவ்வொரு ARM போர்டும் கட்டிடக்கலையை ஆதரிக்கவில்லை என்பதை மறந்துவிடாதீர்கள் armhf.
  3. கட்டிடக்கலை வித்தியாசம் காரணமாக debootstrap இரண்டு நிலைகளில் செய்யப்படுகிறது, இரண்டாவது பின்வருமாறு செய்யப்படுகிறது: chroot /mnt/ /debootstrap/debootstrap --second-stage
  4. இப்போது நீங்கள் அதை திருக வேண்டும்: chroot /mnt /bin/bash
  5. பூர்த்தி செய் /etc/hosts и /etc/hostname இலக்கு FS. உங்கள் உள்ளூர் கணினியில் உள்ள உள்ளடக்கத்தைப் போலவே நிரப்பவும், ஹோஸ்ட்பெயரை மாற்ற நினைவில் கொள்ளுங்கள்.
  6. நீங்கள் மற்ற அனைத்தையும் தனிப்பயனாக்கலாம். குறிப்பாக, நான் நிறுவுகிறேன் locales (தொகுப்பு விசைகள்), இடங்கள் மற்றும் நேர மண்டலத்தை மறுகட்டமைக்கவும் (dpkg-reconfigure locales tzdata) கட்டளையுடன் கடவுச்சொல்லை அமைக்க மறக்காதீர்கள் passwd.
  7. கடவுச்சொல்லை அமைக்கவும் root அணி passwd.
  8. எனக்கான படத்தின் தயாரிப்பு நிரப்புதலுடன் முடிகிறது /etc/fstab உள்ள /mnt/.

முன்பு உருவாக்கப்பட்ட குறிச்சொற்களுக்கு ஏற்ப நான் பதிவேற்றுவேன், எனவே உள்ளடக்கம் இப்படி இருக்கும்:

LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /boot தானியங்கு இயல்புநிலைகள் 0 0

இறுதியாக, நீங்கள் துவக்க பகிர்வை ஏற்றலாம், கர்னலுக்கு இது தேவைப்படும்: `mount /dev/mmcblk0p1 /mnt/boot/`

லினக்ஸ் உருவாக்கம்

டெபியன் டெஸ்டிங்கில் கர்னலை (பின்னர் துவக்க ஏற்றி) உருவாக்க, இலக்கு கட்டமைப்பிற்கான நிலையான GCC, GNU Make மற்றும் GNU C லைப்ரரி ஹெடர் கோப்புகளை நிறுவ வேண்டும் (எனக்கு armhf), அத்துடன் OpenSSL தலைப்புகள், கன்சோல் கால்குலேட்டர் bc, bison и flex: apt install crossbuild-essential-armhf bison flex libssl-dev bc. இயல்புநிலை ஏற்றி கோப்பைத் தேடுவதால் zImage துவக்க பகிர்வின் கோப்பு முறைமையில், ஃபிளாஷ் டிரைவைப் பிரிக்க வேண்டிய நேரம் இது.

  1. கர்னலை குளோன் செய்ய அதிக நேரம் எடுக்கும், எனவே நான் பதிவிறக்கம் செய்கிறேன்: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz. அவிழ்த்துவிட்டு மூல கோப்பகத்திற்குச் செல்வோம்: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. தொகுப்பதற்கு முன் கட்டமைக்கவும்: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig. கட்டமைப்பு கோப்பகத்தில் அமைந்துள்ளது arch/arm/configs/. எதுவும் இல்லை என்றால், நீங்கள் ஆயத்த ஒன்றைக் கண்டுபிடித்து பதிவிறக்கம் செய்து, இந்த கோப்பகத்தில் உள்ள கோப்பின் பெயரை அளவுருவுக்கு அனுப்பலாம். KBUILD_DEFCONFIG. கடைசி முயற்சியாக, உடனடியாக அடுத்த கட்டத்திற்கு செல்லுங்கள்.
  3. விருப்பமாக நீங்கள் அமைப்புகளை மாற்றலாம்: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. படத்தை குறுக்கு தொகுக்கவும்: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. இப்போது நீங்கள் கர்னல் கோப்பை நகலெடுக்கலாம்: cp arch/arm/boot/zImage /mnt/boot/
  6. DeviceTree இலிருந்து கோப்புகள் (போர்டில் உள்ள வன்பொருளின் விளக்கம்): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. தனி கோப்புகளின் வடிவத்தில் சேகரிக்கப்பட்ட தொகுதிகளை நிறுவவும்: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

கர்னல் தயாராக உள்ளது. நீங்கள் எல்லாவற்றையும் அகற்றலாம்: umount /mnt/boot/ /mnt/

தாஸ் யு-பூட்

துவக்க ஏற்றி ஊடாடக்கூடியதாக இருப்பதால், அதன் செயல்பாட்டை நீங்கள் சோதிக்க வேண்டியது பலகை, சேமிப்பக சாதனம் மற்றும் விருப்பமாக USB-to-UART சாதனம். அதாவது, நீங்கள் கர்னல் மற்றும் OS ஐ பின்னர் ஒத்திவைக்கலாம்.

பெரும்பாலான உற்பத்தியாளர்கள் ஆரம்ப துவக்கத்திற்கு Das U-Boot ஐப் பயன்படுத்த முன்வருகின்றனர். முழு ஆதரவு பொதுவாக அவர்களின் சொந்த ஃபோர்க்கில் வழங்கப்படுகிறது, ஆனால் அவர்கள் அப்ஸ்ட்ரீமில் பங்களிக்க மறக்க மாட்டார்கள். என் விஷயத்தில், போர்டு ஆதரிக்கப்படுகிறது பிரதான வரிஎனவே முள் கரண்டி நான் அதைப் புறக்கணித்தேன்.

பூட்லோடரையே இணைப்போம்:

  1. களஞ்சியத்தின் நிலையான கிளையை குளோன் செய்கிறோம்: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. கோப்பகத்திற்குச் செல்வோம்: cd u-boot
  3. உருவாக்க கட்டமைப்பை தயார் செய்தல்: make mx6ull_14x14_evk_defconfig. கட்டமைப்பு Das U-Boot இல் இருந்தால் மட்டுமே இது செயல்படும், இல்லையெனில் நீங்கள் உற்பத்தியாளரின் கட்டமைப்பைக் கண்டுபிடித்து அதை ஒரு கோப்பில் களஞ்சியத்தின் மூலத்தில் வைக்க வேண்டும். .config, அல்லது உற்பத்தியாளரால் பரிந்துரைக்கப்படும் வேறு எந்த முறையிலும் அசெம்பிள் செய்யவும்.
  4. கிராஸ்-கம்பைலரைப் பயன்படுத்தி பூட்லோடர் படத்தையே அசெம்பிள் செய்கிறோம் armhf: make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

இதன் விளைவாக, கோப்பைப் பெறுகிறோம் u-boot.imx, இது ஒரு ஃபிளாஷ் டிரைவில் எழுதக்கூடிய ஆயத்த படமாகும். முதல் 1024 பைட்டுகளைத் தவிர்த்து SD கார்டில் எழுதுகிறோம். நான் ஏன் இலக்கை தேர்வு செய்தேன் u-boot.imx? நான் ஏன் சரியாக 1024 பைட்டுகளை தவறவிட்டேன்? இதைத்தான் அவர்கள் செய்ய முன்மொழிகிறார்கள் ஆவணங்கள். மற்ற பலகைகளுக்கு, படத்தை உருவாக்குதல் மற்றும் பதிவு செய்யும் செயல்முறை சற்று வித்தியாசமாக இருக்கலாம்.

முடிந்தது, நீங்கள் துவக்கலாம். துவக்க ஏற்றி அதன் சொந்த பதிப்பு, போர்டைப் பற்றிய சில தகவல்களைப் புகாரளித்து, பகிர்வில் கர்னல் படத்தைக் கண்டறிய முயற்சிக்க வேண்டும். தோல்வியுற்றால், அது பிணையத்தில் துவக்க முயற்சிக்கும். பொதுவாக, வெளியீடு மிகவும் விரிவானது, சிக்கல் இருந்தால் பிழையைக் கண்டறியலாம்.

அதற்கு பதிலாக, ஒரு முடிவுக்கும்

டால்பினின் நெற்றி எலும்பு அல்ல என்பது உங்களுக்குத் தெரியுமா? இது உண்மையில் மூன்றாவது கண், எதிரொலி இருப்பிடத்திற்கான கொழுப்பு லென்ஸ்!

புதிதாக ஒரு ARM போர்டில் GNU/Linux ஐத் தொடங்குதல் (காளி மற்றும் iMX.6ஐ உதாரணமாகப் பயன்படுத்துதல்)

புதிதாக ஒரு ARM போர்டில் GNU/Linux ஐத் தொடங்குதல் (காளி மற்றும் iMX.6ஐ உதாரணமாகப் பயன்படுத்துதல்)

ஆதாரம்: www.habr.com