Երբ զարգացումը նոր է սկսվում, հաճախ պարզ չէ, թե որ փաթեթները կուղղվեն թիրախային rootf-ներին:
Այլ կերպ ասած, դեռ վաղ է գրավել LFS-ը, buildroot-ը կամ yocto-ն (կամ այլ բան), բայց դուք արդեն պետք է սկսել: Հարուստների համար (ես ունեմ 4 ԳԲ eMMC փորձնական նմուշների վրա) կա ելք՝ ծրագրավորողներին բաժանելու բաշխում, որը թույլ կտա նրանց արագ մատուցել այն, ինչ ներկայումս բացակայում է, և այնուհետև մենք միշտ կարող ենք հավաքել փաթեթների ցուցակները և ստեղծել ցուցակ թիրախային արմատները:
Այս հոդվածը նոր չէ և պարզ copy-paste հրահանգ է։
Հոդվածի նպատակն է ստեղծել Ubuntu rootf-ներ ARM տախտակների համար (իմ դեպքում՝ հիմնված Colibri imx7d-ի վրա):
Պատկերի կառուցում
Մենք հավաքում ենք թիրախային rootf-ները կրկնօրինակման համար:
Ubuntu Base-ի բացում
Մենք ինքներս ենք ընտրում թողարկումը՝ ելնելով կարիքից և մեր նախասիրություններից: Ահա ես տվել եմ 20.
$ mkdir ubuntu20
$ cd ubuntu20
$ mkdir rootfs
$ wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04-base-armhf.tar.gz
$ tar xf ubuntu-base-20.04-base-armhf.tar.gz -C rootfs
Ստուգում է BINFMT-ի աջակցությունը միջուկում
Եթե ունեք ընդհանուր բաշխում, ապա կա աջակցություն BINFMT_MISC-ի համար, և ամեն ինչ կազմաձևված է, եթե ոչ, ապա վստահ եմ, որ դուք գիտեք, թե ինչպես միացնել BINFMT աջակցությունը միջուկում:
Միջուկի վերնագրի ֆայլերը և մոդուլները առանձին խնդիր են: Իհարկե, մենք Ubuntu-ի միջոցով չենք տեղադրի bootloader-ը, միջուկը, մոդուլները, սարքի ծառը։ Նրանք մեզ մոտ կգան դրսից, կամ մենք ինքներս կհավաքենք կամ կտրամադրվեն մեզ տախտակ արտադրողի կողմից, ամեն դեպքում սա դուրս է այս հրահանգի շրջանակներից։
Որոշ չափով տարբերակների տարբերությունը ընդունելի է, բայց ավելի լավ է դրանք վերցնել միջուկի կառուցումից։
# apt install --yes linux-headers-generic
Տեսնենք, թե ինչ եղավ և շատ բան ստացվեց.
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Մի մոռացեք գաղտնաբառ սահմանել:
Պատկերի փաթեթավորում
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
Բացի այդ, մենք կարող ենք տեղադրել etckeeper-ը autopush պարամետրով
Դե, ենթադրենք, մենք տարածեցինք մեր ժողովը, սկսվեց աշխատանքը, թե ինչպես լավագույնս հավաքել մեր համակարգի ավելի ուշ տարբեր տարբերակները:
Մենք, իհարկե, կարող ենք սարքի վրա նախապես մասնաճյուղեր ստեղծել (ասենք, որ մենք ստեղծում ենք սկրիպտ կամ ծառայություն, որը կաշխատի առաջին անգամ գործարկվելուց):