diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2026-08-18 18:56:21 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2026-08-19 07:04:43 +0800 |
| commit | f0de83242d511d6e6d79bd5fe1b19fbe0770c25e (patch) | |
| tree | fa58f2e38938b174f3b8a363440cd3dbd5b1cbbd | |
| parent | 2ab3377227359c46b835899de91d9526cf7d2044 (diff) | |
| download | lex-f0de83242d511d6e6d79bd5fe1b19fbe0770c25e.tar.gz | |
RC file, add create user and install rc to make.
| -rw-r--r-- | Makefile | 52 | ||||
| -rw-r--r-- | README.txt | 9 | ||||
| -rw-r--r-- | lexd.rc | 16 |
3 files changed, 64 insertions, 13 deletions
@@ -4,12 +4,6 @@ CFLAGS = -march=native -O2 -std=c11 -Wall -Wextra CXXFLAGS = -march=native -O2 -O2 -Wall -Wextra INCLUDES = -I. -Ideps/include -# Standard tools and target directory -BINDIR = /usr/local/bin -INSTALL = install -INSTALL_PROGRAM = $(INSTALL) -m 755 -MKDIR_P = mkdir -p - LLAMA_TAG = b10107 LLAMA_URL = https://github.com/ggml-org/llama.cpp/archive/refs/tags/$(LLAMA_TAG).tar.gz LLAMA_TAR = deps/llama-$(LLAMA_TAG).tar.gz @@ -27,6 +21,19 @@ TARGET = lexd SRC = llm.c main.c OBJS = $(SRC:.c=.o) +# Standard tools and target directory +BINDIR = /usr/local/bin +RCDIR = /etc/rc.d +VARDIR = /var/$(TARGET) +INSTALL = install +INSTALL_PROGRAM = $(INSTALL) -m 755 +INSTALL_SCRIPT = $(INSTALL) -m 555 +MKDIR_P = mkdir -p + +# Service user configuration +SERVICE_USER = _lexd +SERVICE_GROUP = _lexd + .PHONY: all clean distclean all: $(TARGET) @@ -85,12 +92,37 @@ deps/lib/libllama.a deps/lib/libggml.a deps/lib/libggml-cpu.a: @echo "===> Cleaning up build directory..." rm -rf $(LLAMA_SRC_DIR) -install: $(TARGET) - $(MKDIR_P) $(DESTDIR)$(BINDIR) - $(INSTALL_PROGRAM) $(TARGET) $(DESTDIR)$(BINDIR)/$(TARGET) +install-user: + @if ! id -u $(SERVICE_USER) >/dev/null 2>&1; then \ + echo "===> Creating service user..."; \ + groupadd $(SERVICE_GROUP) 2>/dev/null || true; \ + useradd -g $(SERVICE_GROUP) -s /sbin/nologin -d /var/empty -c "lexd daemon user" $(SERVICE_USER); \ + fi + +install: $(TARGET) install-user + @$(MKDIR_P) $(BINDIR) + @echo "===> Installing executable to $(BINDIR)/$(TARGET)..." + @$(INSTALL_PROGRAM) $(TARGET) $(BINDIR)/$(TARGET) + @echo "===> Installing RC script to $(DESTDIR)$(RCDIR)/$(TARGET)..." + @$(MKDIR_P) $(RCDIR) + @$(INSTALL_SCRIPT) $(TARGET).rc $(RCDIR)/$(TARGET) + @echo "===> Creating data directory $(VARDIR)..." + @$(MKDIR_P) $(VARDIR) + @chown $(SERVICE_USER):$(SERVICE_GROUP) $(VARDIR) + @chmod 750 $(VARDIR) + @echo "===> Installation complete." uninstall: - rm -f $(DESTDIR)$(BINDIR)/$(TARGET) + @echo "===> Stopping service..." + @-rcctl stop $(TARGET) 2>/dev/null || true + @rm -f $(BINDIR)/$(TARGET) + @rm -f $(RCDIR)/$(TARGET) + @echo "Uninstall complete." + @echo "Note: The data directory and service accounts were preserved." + @echo "To remove all remaining data, run:" + @echo " # rm -rf $(VARDIR)" + @echo " # userdel $(SERVICE_USER)" + @echo " # groupdel $(SERVICE_GROUP)" clean: rm -f $(TARGET) $(OBJS) @@ -1,5 +1,8 @@ USAGE -Install: make install -Start server: lexd -m <path to model> -Connect to socket and type prompt: $ nc -U /var/run/lexd/sock +1. Install: make install +2. Set datasize-cur/datasize-max to 3G/4G for daemon class. +3. Place model file in /var/lexd/model.gguf. +4. Start service: rcctl start lexd +5. Connect, type prompt, hit enter: nc -U /var/run/lexd/sock + @@ -0,0 +1,16 @@ +#!/bin/ksh + +daemon="/usr/local/bin/lexd" +daemon_flags="-m /var/lexd/model.gguf" +daemon_user="_lexd" + +. /etc/rc.d/rc.subr + +rc_bg=YES +rc_reload=NO + +rc_pre() { + /usr/bin/install -d -o _lexd -g _lexd -m 0755 /var/run/lexd +} + +rc_cmd $1 |
