SW 개발

yocto 에서 busybox hwclock 패키지 변경하기

. . . 2022. 9. 16. 12:03
반응형

-tags : #yocto

1 hwclock 패키지변경하기

busybox 의 hwclock 패키지를 linux-util 의 패키지로 변경한 작업내용을 기록한다.

2 증상

busybox 내에도 hwclock 이라는 명령어가 있다.

  • hwclock 명령어는 hw rtc 칩에 시간을 설정, 읽기등의 동작을 하게된다.
  • busybox 내의 해당명령어의 help 를 쳐보면 옵션이 거의 없다.
  • rtc 를 원하는 시간에 세팅하는 --set 옵션을 지원하지 않아 원래 리눅스의 패키지로 변경해야한다.
hwclock --help
BusyBox v1.27.2 (2021-06-02 02:49:02 UTC) multi-call binary.

Usage: hwclock [-r|--show] [-s|--hctosys] [-w|--systohc] [-t|--systz] [-l|--localtime] [-u|--utc] [-f|--rtc FILE]

3 util-linux 패키지

우리가 일반적으로 사용하는 명령어들은 거의다 util-linux 패키지들 이다.

  • /sources/poky/meta/recipes-core/util-linux 경로에 레시피가 있다.

3.1 각종 포함되어야할 패키지 명세

util-linux.inc 파일의 PACKAGES 에 포함될 패지가 명시 되어있다.

PACKAGES =+ "util-linux-agetty util-linux-fdisk util-linux-cfdisk util-linux-sfdisk \
             util-linux-swaponoff util-linux-losetup util-linux-umount \
             util-linux-mount util-linux-readprofile util-linux-uuidd \
             util-linux-uuidgen util-linux-lscpu util-linux-fsck.cramfs util-linux-fsck \
             util-linux-blkid util-linux-mkfs util-linux-mcookie util-linux-rfkill \
             util-linux-lsblk util-linux-mkfs.cramfs util-linux-fstrim \
             util-linux-partx util-linux-hwclock util-linux-mountpoint \
             util-linux-findfs util-linux-getopt util-linux-sulogin util-linux-prlimit \
             util-linux-ionice util-linux-switch-root"
  • 해당 부분에서 hwlock 을 포함 하겠다고 명시 한다.

하지만... 실제 hwclock 명령어는 busybox 의 것을 써야하므로 충돌이 일어난다. 때문에 do_install 에서 다음과 같이 패키지를 바꾸도록 명시해놓고있다.

ALTERNATIVE_util-linux-hwclock = "hwclock"
ALTERNATIVE_LINK_NAME[hwclock] = "${base_sbindir}/hwclock"

4 패키지 바꾸기

패키지를 바꾸는 ALTERNATIVE 변수를 다음과같이 조정한다.

FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"

ALTERNATIVE_util-linux-hwclock = ""
ALTERNATIVE_LINK_NAME[hwclock] = ""
  • 위와 설정하여 hwclock 를 util-linux 의 것을 그대로 사용하도록 설정

busybox 내의 hwclock 을 다음과같이 삭제

# hwclock : using util-linux
CONFIG_HWCLOCK=n
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"

# Prevent splitting busybox applets in two binaries (*.suid and *.nosuid)

SRC_URI += " \
    file://ksc-board.cfg \
"

# disable FTPD - as it's provided by inetutils

작업 성공

5 hwclock help 명령어

hwclock 명령어 테스트 결과

root@s32v234evb:~# hwclock --help

Usage:
 hwclock [function] [option...]

Time clocks utility.

Functions:
 -r, --show           display the RTC time
     --get            display drift corrected RTC time
     --set            set the RTC according to --date
 -s, --hctosys        set the system time from the RTC
 -w, --systohc        set the RTC from the system time
     --systz          send timescale configurations to the kernel
 -a, --adjust         adjust the RTC to account for systematic drift
     --predict        predict the drifted RTC time according to --date

Options:
 -u, --utc            the RTC timescale is UTC
 -l, --localtime      the RTC timescale is Local
 -f, --rtc <file>     use an alternate file to /dev/rtc0
     --directisa      use the ISA bus instead of /dev/rtc0 access
     --date <time>    date/time input for --set and --predict
     --update-drift   update the RTC drift factor
     --noadjfile      do not use /etc/adjtime
     --adjfile <file> use an alternate file to /etc/adjtime
     --test           dry run; implies --verbose
 -v, --verbose        display more details

 -h, --help           display this help
 -V, --version        display version

For more details see hwclock(8).

...

  • 본 포스팅은 obsidian 으로 작성하였으며, tistory-posting-cli 를 이용해 발행되었습니다.
반응형