Orange PiPC2

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Bormental
сержант
Сообщения: 267
Зарегистрирован: 2008-09-26 21:26:35
Откуда: подмордорье
Контактная информация:

Orange PiPC2

Непрочитанное сообщение Bormental » 2018-10-10 12:55:02

Привет
есть такой зверек Orange PiPC2. оч хочу bsd на него поставить. По мотивам поисков в интернете пишу скрипт сборки, застрял на fat разделе на который надо залить скомпиленный ubld, с нужным адресом загрузки, кусок U-Boot конфиг и еще что-то. А что и конечное количество этого чего-то везде по разному. По вырезкам из crochet ubldr не компилится, в сырцах 12й видимо что-то поменялось...

черновик скрипта

Код: Выделить всё

#!/bin/sh
#base dir
#setenv = export
export BASEDIR=/home/bormental/arm64/head_orange_pi_pc2
#kyda kladem skompilennoe
export MAKEOBJDIRPREFIX=$BASEDIR/obj
export TARGET=arm64
export TARGET_ARCH=aarch64
export UBLDR_LOADADDR=0x42000000
export KERNCONF=ORANGEPIPC2
export IMGFILENAME=OrangePiPC2.img
export SIZEIMGMB=8000
export __MAKE_CONF=/dev/null
export SRCCONF=/dev/null
#CPUTYPE=H5 dlya makeworld
#poluchim ishodniki freebsd
cd $BASEDIR
if [ "$1" = "" ];
then
    echo "usage: $0.sh [all|src|mk|img|boot]"
fi

if [ "$1" = "all" ] || [ "$1" = "src" ];
then
    git clone git://github.com/freebsd/freebsd.git src
    cd $BASEDIR/src
    git checkout master #est project/arm64
fi

if [ "$1" = "all" ] || [ "$1" = "mk" ];
then
    cd $BASEDIR/src

    if [-f $BASEDIR/src/sys/arm64/conf/$KERNCONF];
    then 
        echo 'kernel conf file exists..'
    else
        echo 'kernel conf file is not exists, coppy from GENERIC...'
        cp $BASEDIR/src/sys/arm64/conf/GENERIC $BASEDIR/src/sys/arm64/conf/$KERNCONF
    fi

    echo 'clear old obj..'
    rm -rf $BASEDIR/obj
    #nado for crosscompiles
    echo 'make tool chain..'
    make -j $(sysctl -n hw.ncpu) kernel-toolchain > $BASEDIR/maketoolchain.log #TARGET=arm64 TARGET_ARCH=aarch64
    #sobiraem mir UBLDR_LOADADDR = 0x42000000 dlya VSEH ALLWINER CPU
    echo 'build world...'
    make -j $(sysctl -n hw.ncpu) buildworld > $BASEDIR/buildworld.log #KERNCONF=MYGENERIC TARGET=arm64 TARGET_ARCH=aarch64 UBLDR_LOADADDR=0x42000000 #__MAKE_CONF=/dev/null
    #sobiraem yadro
    echo 'buld kernel..'
    make -j $(sysctl -n hw.ncpu) buildkernel > $BASEDIR/buildkernel.log #KERNCONF=NYGENERIC TARGET=arm64 TARGET_ARCH=aarch64 #__MAKE_CONF=/dev/null
fi

if [ "$1" = "all" ] || [ "$1" = "img" ];
then
    echo 'build image disk...'
    cd $BASEDIR
    dd if=/dev/zero of=$BASEDIR/$IMGFILENAME bs=1M count=$SIZEIMGMB
    if ! [ -e "/usr/local/share/u-boot/u-boot-orangepi-pc2/u-boot-sunxi-with-spl.bin" ];
    then 
    #pkg install u-boot-orangepi-pc2
    /usr/ports/sysutils/u-boot-orangepi-pc2
    make -DBATCH all install
    fi
    #dlya pi pc2 spl i u-boot v odnom file
    dd if=/usr/local/share/u-boot/u-boot-orangepi-pc2/u-boot-sunxi-with-spl.bin of=$BASEDIR/$IMGFILENAME bs=1K seek=8 conv=sync,notrunc count=$SIZEIMGMB

    MEMORYDISK=`mdconfig -a -t vnode -f $BASEDIR/$IMGFILENAME` #-x 63 -y 255`  #-x -y from crochet.sh smisl ih poka ne ponyaten
    echo $MEMORYDISK
    
    gpart create -s MBR $MEMORYDISK #GPT
    
    #start block 1024k for allwinner
    gpart add -a 63 -b 1m -s 32m -t '!12' $MEMORYDISK # !12 - w95 fat32 -a 63 = 63*512
    gpart set -a active -i 1 $MEMORYDISK # ne obyazatelno
    newfs_msdos -L boot -F 16 /dev/${MEMORYDISK}s1 # v 1i razdel dobafim fat16
    
    gpart add -t freebsd -a 512k ${MEMORYDISK}
    gpart create -s BSD ${MEMORYDISK}s2
    gpart add -t freebsd-ufs -a 64k  ${MEMORYDISK}s2
    newfs /dev/${MEMORYDISK}s2a
    tunefs -N enable /dev/${MEMORYDISK}s2a # upgrade ufs system for acl list
    tunefs -n enable /dev/${MEMORYDISK}s2a # soft updates
    tunefs -j enable -S 4194304 /dev/${MEMORYDISK}s2a # size journal min 4M
    
    mkdir /mnt/${MEMORYDISK}PiBoot 
    mount -t msdosfs /dev/${MEMORYDISK}s1 /mnt/${MEMORYDISK}PiBoot
    
    mkdir /mnt/${MEMORYDISK}PiRoot
    mount /dev/${MEMORYDISK}s2a /mnt/${MEMORYDISK}PiRoot
     
    cd $BASEDIR/src
#    mergemaster -Fp -D /mnt/${MEMORYDISCK}PiRoot
#    mergemaster -Ui -p -D /mnt/${MEMORYDISCK}PiRoot
    pw groupadd ntpd
    pw useradd -n ntpd -g ntpd -c "ntpd unprivileged user" -d /var/empty -s /usr/sbin/nologin
    echo 'installworld...'
    make DESTDIR=/mnt/${MEMORYDISK}PiRoot installworld > $BASEDIR/installworld.log
    echo 'distribution...'
    make DESTDIR=/mnt/${MEMORYDISK}PiRoot distribution > $BASEDIR/distribution.log
    echo 'installkernel...'
    make DESTDIR=/mnt/${MEMORYDISK}PiRoot installkernel > $BASEDIR/installkernel.log
    
    #delete md disk
    #umount /mnt/${MEMORYDISCK}PiBoot
    #umount /mnt/${MEMORYDISCK}PiRoot
    #mdconfig -d -u $MEMORYDISK`
fi

if [ "$1" = "all" ] || [ "$1" = "boot" ];
then
    cd ${BASEDIR}/src
    UBLDR_DIR=${BASEDIR}/ubldr
    UBLDR_MAKEFILES=${BASEDIIR}/src/share/mk
    #opcii sborki
    export SRCROOT=${BASEDIR}/src
    export MAKESYSPATH=${BASEDIR}/src/share/mk
    BUILDENV=`make -C ${SRCROOT} buildenvvars`
    echo $BUILDENV
#    BUILDENV=`make TARGET_ARCH=$TARGET_ARCH buildenvvars`
#    BUILDENV="$BUILDENV SRCCONF=${SRCCONF} __MAKE_CONF=${__MAKE_CONF}"

    eval ${BUILDENV} make -C ${SRCROOT}/sys/boot clean
    eval ${BUILDENV} make -C ${SRCROOT}/sys/boot obj
    eval ${BUILDENV} make -C ${SRCROOT}/sys/boot UBLDR_LOADADDR=${UBLDR_LOADADDR} all
    
    exit

    mkdir -p ${UBLDR_DIR}
    echo $BUILDENV make "$@" -m $UBLDR_MAKEFILES all > ${UBLDR_DIR}/ubldr.sh
    
    rm -rf $UBLDR_DIR/boot
    mkdir -p $UBLDR_DIR/boot/defaults
    
    cd stand
    eval ${BUILDENV} make "$@" -m ${UBLDR_MAKEFILES} clean >> $BASEDIR/UBLDRBuild.log #2>&1
    eval ${BUILDENV} make "$@" -m ${UBLDR_MAKEFILES} obj > $BASEDIR/UBLDRBuild.log #2>&1 #2>&1 duplicate error to stdout
    eval ${BUILDENV} make "$@" -m ${UBLDR_MAKEFILES} depend >> $BASEDIR/UBLDRBuild.log #2>&1
    
    exit
    
    if /bin/sh -e  ${UBLDR_DIR}/ubldr.sh >> $LOGFILE 2>&1
    then
        cd /arm/uboot
        eval $BUILDENV make "$@" DESTDIR=${UBLDR_DIR}/ BINDIR=boot MK_MAN=no -m $UBLDR_MAKEFILES install >> $LOGFILE || exit 1
    else
        echo "Filed build UBLDR log=$LOGFILE"
        exit 1
    fi
    
fi
буду признателен за помощь, скрипт по завершению отдам обществу)))
:evil:

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Bormental
сержант
Сообщения: 267
Зарегистрирован: 2008-09-26 21:26:35
Откуда: подмордорье
Контактная информация:

Orange PiPC2

Непрочитанное сообщение Bormental » 2018-10-10 12:56:13

собственно застрял на разделе boot if [ "$1" = "all" ] || [ "$1" = "boot" ];
:evil:

Аватара пользователя
Bormental
сержант
Сообщения: 267
Зарегистрирован: 2008-09-26 21:26:35
Откуда: подмордорье
Контактная информация:

Orange PiPC2

Непрочитанное сообщение Bormental » 2018-10-26 0:23:00

сам доделал, тут решение https://forums.freebsd.org/threads/orangepipc2.67865/
:evil: