Dec. 17th, 2013

zepete: (Default)
Для экономии места на flash, короткие программы bash можно встраивать в сам Maekfile.
Тогда для запуска этого пакетного файла необходимо набрать opkg install <имя этого пакета>.
Как это делается напишу по предыдущему примеру с переносом /overlay на usb диск.

#************************************************************************
#* Скрипт автоматизирующий перенос /overlay (изменяемой части прошивки) *
#* на USB диск. Запускается командой "opkg install 0-extoverlayrun" с   *
#* установленным USB накопителем.                                       *
#* 17 декабря 2013 года zepete.livejournal.com                          *
#************************************************************************


include $(TOPDIR)/rules.mk

# имя пакета, я добавил в начале "0-" для удобства навигации в каталоге
# /package
# !!!ВНИМАНИЕ!!! имя пакета должно совпадать с именем директории
# иначе будет возникать ошибка *** No rule to make target
PKG_NAME:=0-extoverlayrun
# версия пакета
PKG_VERSION:=1
# версия Makefile
PKG_RELEASE:=1
#на каких устройствах может запускаться
#PKGARCH:=all

include $(INCLUDE_DIR)/package.mk

#описание пакета для "make menuconfig"
#слово после '/' должно совпадать с PKG_NAME
define Package/0-extoverlayrun
#зарезервировано
 SECTION:=1
#название меню, в котором будет находиться скрипт
 CATEGORY:=my scripts
# какие пакеты необходимо установить дополнительно
#  DEPENDS:=+
#краткое описание пакета, в конце необходимо добавить
# несколько пробелов для корректного отображения
# в make menuconfig
 TITLE:=create extenal overlay.      
#к кому обращаться за помощью
 MAINTAINER:=zepete
#адресс пакета в интернете
 URL:=zepete.livejournal.com
# опция make menuconfig по умолчанию
# n - не компилировать
# m - компилировать
# y - компилировать и внедрять
 DEFAULT:=m
endef

#подробное описание пакета
define Package/0-extoverlayrun/description
0-prepareflash delete all partition on /dev/sda,
make there swap partition size more 256K
and partition type ext2 on witch place /overlay.
For run need execute command line
"opkg install 0-extoverlayrun".
endef

#обязательный раздел
#без него будет возникать ошибка
# 'No targets specified and no makefile found'
#нужен для компиляции пакета из исходных кодов
define Build/Compile
endef

#обязательный и бесполезный раздел
# него будет возникать ошибка
# 'No targets specified and no makefile found'
define Build/Configure
endef

#скрипт bash без '#!/bin/sh' описывающий установку пакета,
# !!!ВНИМАНИЕ!!! первым символом в строке должен быть '<tab>'
# пробел вызовет ошибку при компиляции: '*** missing separator'
define Package/0-extoverlayrun/install
# $(INSTALL_DIR) $(1)/sbin
endef


#Программа bash без '#!/bin/sh', выполняемая до инсталяции пакета.
#запускается командой opkg install <имя пакета>
#в нее удобнее всего помещать настроечные пакетные файлы,
#которые нужны только один раз после перепрошивки,
# ибо при таком методе запуска их, они не прописываются в прошивку.
# !!!ВНИМАНИЕ!!! первым символом в строке должен быть '<tab>'
# пробел вызовет ошибку при компиляции: '*** missing separator'
#Для предотвращения установки должен возвращать false.
define Package/0-extoverlayrun/preinst
#check for usb drive
if ! [ -b /dev/sda ]; then
 echo Have not flash drive '(/dev/sda)'
 exit 1
fi

#delete partition
# parameters
#  d - delete partition
#  Partition number
(
fdisk /dev/sda <<EOF
d
1
d
2
d
3
d
4
w
EOF
#create partitions
# parametrs
#  n - create partition
#  p - primiry partition, e - extended
#  Partition number (1-4)
#  First cylinder, by default first free
#  Last cylinder or +size or +sizeM or +sizeK
fdisk /dev/sda <<EOF # create swap partition
n
p
1

+256K
w
EOF
fdisk /dev/sda <<EOF #create data partition
n
p
2


w
EOF
#set type of swap partition
# parametrs
#  t - set type of partition
#  partition number
#  Hex code type of partition
fdisk /dev/sda <<EOF
t
1
82
w
EOF
)>>/dev/null

#formating partition
mkswap /dev/sda1
mkfs.ext2 /dev/sda2

#setup /etc/config/fstab
/etc/init.d/fstab stop
uci set fstab.automount.anon_mount=0
uci delete fstab.@mount[0].device
uci set fstab.@mount[0].uuid=$(blkid -s UUID /dev/sda2 | cut -d\" -f2)
uci set fstab.@mount[0].fstype='ext2'
uci set fstab.@mount[0].enabled=1
uci set fstab.@mount[0].target='/overlay'
uci delete fstab.@swap[0].device
uci set fstab.@swap[0].uuid=$(blkid -s UUID /dev/sda1 | cut -d\" -f2)
uci set fstab.@swap[0].enabled=1
uci commit fstab


#copy /overlay to flash
mkdir /tmp/ExtRoot
mount -t ext2 /dev/sda2 /tmp/ExtRoot
tar -C /overlay -cvf - . | tar -C /tmp/ExtRoot -xf -
sync
umount /tmp/ExtRoot
rmdir /tmp/ExtRoot
reboot
exit 1
endef

#скрипт bash без '#!/bin/sh' выполняемый после установки пакета,
# !!!ВНИМАНИЕ!!! первым символом в строке должен быть '<tab>'
# пробел вызовет ошибку при компиляции: нет разделителя
define Package/0-extoverlayrun/postinst
endef

#скрипт bash без '#!/bin/sh' выполняемый перед удалением пакета,
# !!!ВНИМАНИЕ!!! первым символом в строке должен быть '<tab>'
# пробел вызовет ошибку при компиляции: нет разделителя
#Для предотвращения удаления должен возвращать false
define Package/0-extoverlayrun/prerm
endef

#скрипт bash без '#!/bin/sh' выполняемый перед удалением пакета,
# !!!ВНИМАНИЕ!!! первым символом в строке должен быть '<tab>'
# пробел вызовет ошибку при компиляции: нет разделителя
#Для предотвращения удаления должен возвращать false
define Package/0-extoverlayrun/postrm
endef

$(eval $(call BuildPackage,0-extoverlayrun))

Profile

zepete: (Default)
zepete

January 2026

S M T W T F S
    1 23
4 56 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 14th, 2026 02:03 pm
Powered by Dreamwidth Studios