Compare commits
30 Commits
Author | SHA1 | Date | |
---|---|---|---|
c24367f987 | |||
0ccfdbfc21 | |||
c30cd6999b | |||
e5b37014d0 | |||
96ae6855ac | |||
22014421b1 | |||
ccebe7ecf3 | |||
7557a84a7d | |||
712774d585 | |||
ef98a333ca | |||
![]() |
7727ce662e | ||
![]() |
b841184cb2 | ||
![]() |
528b3091c6 | ||
![]() |
ffb4f4ba98 | ||
![]() |
64fe174eba | ||
![]() |
dc955770b3 | ||
![]() |
004760e16a | ||
bb1f0fbdc0 | |||
![]() |
f879bf8965 | ||
![]() |
7e93c77b9a | ||
8832d21deb | |||
189ceeb7e7 | |||
9c6b20fea3 | |||
9a514cc3ca | |||
![]() |
4f3899f6c6 | ||
![]() |
0efd3bdfa9 | ||
![]() |
f5d07a597f | ||
![]() |
c48893ded2 | ||
![]() |
781f6de35a | ||
![]() |
6131156806 |
103
Makefile
103
Makefile
@@ -1,7 +1,23 @@
|
|||||||
Version=0.1
|
VERSION = 0.7
|
||||||
|
|
||||||
|
PKG = live-services
|
||||||
|
TOOLS = artools
|
||||||
|
|
||||||
PREFIX = /usr/local
|
|
||||||
SYSCONFDIR = /etc
|
SYSCONFDIR = /etc
|
||||||
|
ifdef PREFIX
|
||||||
|
PREFIX = /usr/local
|
||||||
|
endif
|
||||||
|
BINDIR = $(PREFIX)/bin
|
||||||
|
LIBDIR = $(PREFIX)/lib
|
||||||
|
DATADIR = $(PREFIX)/share
|
||||||
|
|
||||||
|
FMODE = -m0644
|
||||||
|
DMODE = -dm0755
|
||||||
|
BMODE = -m0755
|
||||||
|
RM = rm -f
|
||||||
|
M4 = m4 -P
|
||||||
|
CHAW = chmod a-w
|
||||||
|
CHX = chmod +x
|
||||||
|
|
||||||
BIN = \
|
BIN = \
|
||||||
bin/artix-live
|
bin/artix-live
|
||||||
@@ -17,67 +33,76 @@ RC = \
|
|||||||
data/rc/pacman-init \
|
data/rc/pacman-init \
|
||||||
data/rc/artix-live
|
data/rc/artix-live
|
||||||
|
|
||||||
|
RUNIT_SVD = \
|
||||||
|
data/runit/live
|
||||||
|
|
||||||
|
RUNIT_SV = \
|
||||||
|
data/runit/pacman-init.run
|
||||||
|
|
||||||
GRUB_DEFAULT = \
|
GRUB_DEFAULT = \
|
||||||
data/grub2-portable-efi
|
data/grub2-portable-efi
|
||||||
|
|
||||||
GRUB_D = \
|
GRUB_D = \
|
||||||
data/99_zzz-portable-efi
|
data/99_zzz-portable-efi
|
||||||
|
|
||||||
all: $(BIN) $(RC) $(XBIN) ${GRUB_D}
|
XDG = $(wildcard data/*.desktop)
|
||||||
|
|
||||||
edit = sed -e "s|@datadir[@]|$(DESTDIR)$(PREFIX)/share/artools|g" \
|
XBIN = bin/desktop-items
|
||||||
-e "s|@sysconfdir[@]|$(DESTDIR)$(SYSCONFDIR)/artools|g" \
|
|
||||||
-e "s|@libdir[@]|$(DESTDIR)$(PREFIX)/lib/artools|g"
|
all: $(BIN) $(RC) $(RUNIT_SV) $(XBIN) $(GRUB_D)
|
||||||
|
|
||||||
|
EDIT = sed -e "s|@datadir[@]|$(DATADIR)/$(TOOLS)|g" \
|
||||||
|
-e "s|@sysconfdir[@]|$(SYSCONFDIR)/$(TOOLS)|g" \
|
||||||
|
-e "s|@libdir[@]|$(LIBDIR)/$(TOOLS)|g"
|
||||||
|
|
||||||
%: %.in Makefile
|
%: %.in Makefile
|
||||||
@echo "GEN $@"
|
@echo "GEN $@"
|
||||||
@$(RM) "$@"
|
@$(RM) "$@"
|
||||||
@m4 -P $@.in | $(edit) >$@
|
@$(M4) $@.in | $(EDIT) >$@
|
||||||
@chmod a-w "$@"
|
@$(CHAW) "$@"
|
||||||
@chmod +x "$@"
|
@$(CHX) "$@"
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(BIN) $(RC) ${GRUB_D}
|
$(RM) $(BIN) $(RC) $(GRUB_D)
|
||||||
|
|
||||||
install_base:
|
install_base:
|
||||||
install -dm0755 $(DESTDIR)$(PREFIX)/bin
|
install $(DMODE) $(DESTDIR)$(BINDIR)
|
||||||
install -m0755 ${BIN} $(DESTDIR)$(PREFIX)/bin
|
install $(BMODE) $(BIN) $(DESTDIR)$(BINDIR)
|
||||||
|
|
||||||
install -dm0755 $(DESTDIR)$(PREFIX)/lib/artools
|
install $(DMODE) $(DESTDIR)$(LIBDIR)/$(TOOLS)
|
||||||
install -m0644 ${LIBS} $(DESTDIR)$(PREFIX)/lib/artools
|
install $(FMODE) $(LIBS) $(DESTDIR)$(LIBDIR)/$(TOOLS)
|
||||||
|
|
||||||
install -dm0755 $(DESTDIR)$(PREFIX)/share/artools
|
install $(DMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)
|
||||||
install -m0644 ${SHARED} $(DESTDIR)$(PREFIX)/share/artools
|
install $(FMODE) $(SHARED) $(DESTDIR)$(DATADIR)/$(TOOLS)
|
||||||
|
|
||||||
install_rc:
|
install_rc:
|
||||||
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/init.d
|
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/init.d
|
||||||
install -m0755 ${RC} $(DESTDIR)$(SYSCONFDIR)/init.d
|
install $(BMODE) $(RC) $(DESTDIR)$(SYSCONFDIR)/init.d
|
||||||
|
|
||||||
|
install_runit:
|
||||||
|
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/rc/sysinit
|
||||||
|
install $(DMODE) $(DESTDIR)$(LIBDIR)/rc/sv.d
|
||||||
|
|
||||||
|
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/runit/sv/pacman-init
|
||||||
|
install $(BMODE) $(RUNIT_SVD) $(DESTDIR)$(LIBDIR)/rc/sv.d
|
||||||
|
ln -sf $(LIBDIR)/rc/sv.d/live $(DESTDIR)$(SYSCONFDIR)/rc/sysinit/98-live
|
||||||
|
|
||||||
|
install $(BMODE) $(RUNIT_SV) $(DESTDIR)$(SYSCONFDIR)/runit/sv/pacman-init/run
|
||||||
|
|
||||||
install_portable_efi:
|
install_portable_efi:
|
||||||
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/default
|
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/default
|
||||||
install -m0755 $(GRUB_DEFAULT) $(DESTDIR)$(SYSCONFDIR)/default
|
install $(BMODE) $(GRUB_DEFAULT) $(DESTDIR)$(SYSCONFDIR)/default
|
||||||
|
|
||||||
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/grub.d
|
install $(DMODE) $(DESTDIR)$(SYSCONFDIR)/grub.d
|
||||||
install -m0755 $(GRUB_D) $(DESTDIR)$(SYSCONFDIR)/grub.d
|
install $(BMODE) $(GRUB_D) $(DESTDIR)$(SYSCONFDIR)/grub.d
|
||||||
|
|
||||||
uninstall_base:
|
install_xdg:
|
||||||
for f in ${BIN}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done
|
install -dm0755 $(DESTDIR)$(PREFIX)/bin
|
||||||
for f in ${SHARED}; do rm -f $(DESTDIR)$(PREFIX)/share/artools/$$f; done
|
install -m0755 ${XBIN} $(DESTDIR)$(PREFIX)/bin
|
||||||
for f in ${LIBS}; do rm -f $(DESTDIR)$(PREFIX)/lib/artools/$$f; done
|
|
||||||
|
|
||||||
uninstall_portable_efi:
|
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/skel/.config/autostart
|
||||||
for f in ${GRUB_DEFAULT}; do rm -f $(DESTDIR)$(SYSCONFDIR)/default/$$f; done
|
install -m0755 ${XDG} $(DESTDIR)$(SYSCONFDIR)/skel/.config/autostart
|
||||||
for f in ${GRUB_D}; do rm -f $(DESTDIR)$(SYSCONFDIR)/grub.d/$$f; done
|
|
||||||
|
|
||||||
uninstall_rc:
|
install: install_base install_rc install_portable_efi install_xdg
|
||||||
for f in ${RC}; do rm -f $(DESTDIR)$(SYSCONFDIR)/init.d/$$f; done
|
|
||||||
|
|
||||||
install: install_base install_rc install_portable_efi
|
|
||||||
|
|
||||||
uninstall: uninstall_base uninstall_rc uninstall_portable_efi
|
|
||||||
|
|
||||||
dist:
|
|
||||||
git archive --format=tar --prefix=live-services-$(Version)/ $(Version) | gzip -9 > live-services-$(Version).tar.gz
|
|
||||||
gpg --detach-sign --use-agent live-services-$(Version).tar.gz
|
|
||||||
|
|
||||||
.PHONY: all clean install uninstall dist
|
.PHONY: all clean install uninstall dist
|
||||||
|
@@ -16,7 +16,7 @@ load_live_config "${SYSCONFDIR}/live.conf" || load_live_config "${DATADIR}/live.
|
|||||||
|
|
||||||
livetimer=$(get_timer_ms)
|
livetimer=$(get_timer_ms)
|
||||||
detect_desktop_env
|
detect_desktop_env
|
||||||
echo "Detected ${default_desktop_executable} ${default_desktop_file}: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
echo "Detected ${DEFAULT_DESKTOP_EXECUTABLE} ${DEFAULT_DESKTOP_FILE}: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
||||||
|
|
||||||
livetimer=$(get_timer_ms)
|
livetimer=$(get_timer_ms)
|
||||||
CONSOLEFONT="$(kernel_cmdline vconsole.font)"
|
CONSOLEFONT="$(kernel_cmdline vconsole.font)"
|
||||||
@@ -35,18 +35,10 @@ echo "Finished localization: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
|||||||
|
|
||||||
livetimer=$(get_timer_ms)
|
livetimer=$(get_timer_ms)
|
||||||
configure_user
|
configure_user
|
||||||
echo "Created user ${username} with password ${password}: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
echo "Created user ${USER_NAME} with password ${PASSWORD}: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
||||||
|
|
||||||
livetimer=$(get_timer_ms)
|
livetimer=$(get_timer_ms)
|
||||||
configure_sudoers_d
|
configure_accountsservice "${USER_NAME}"
|
||||||
echo "Configured sudoers: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
|
||||||
|
|
||||||
# livetimer=$(get_timer_ms)
|
|
||||||
# configure_machine_id
|
|
||||||
# echo "Configured machine-id: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
|
||||||
|
|
||||||
livetimer=$(get_timer_ms)
|
|
||||||
configure_accountsservice "${username}"
|
|
||||||
echo "Configured accountsservice: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
echo "Configured accountsservice: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
||||||
|
|
||||||
livetimer=$(get_timer_ms)
|
livetimer=$(get_timer_ms)
|
||||||
|
28
bin/desktop-items.in
Normal file
28
bin/desktop-items.in
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
xdg=$(xdg-user-dir DESKTOP)
|
||||||
|
src=/usr/share/applications
|
||||||
|
|
||||||
|
if [[ -f $src/org.kde.konversation.desktop ]]; then
|
||||||
|
install -m644 $src/org.kde.konversation.desktop \
|
||||||
|
$xdg/org.kde.konversation.desktop
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if [[ -f /usr/bin/calamares ]]; then
|
||||||
|
# cp $src/calamares.desktop \
|
||||||
|
# $xdg/calamares.desktop
|
||||||
|
# fi
|
||||||
|
|
||||||
|
docs=/usr/share/doc/artix
|
||||||
|
|
||||||
|
for f in {Configuration,Troubleshooting}.pdf;do
|
||||||
|
ln -s $docs/$f $xdg/$f
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -d /run/openrc ]];then
|
||||||
|
ln -s $docs/OpenRC.pdf $xdg/OpenRC.pdf
|
||||||
|
else
|
||||||
|
ln -s $docs/Runit.pdf $xdg/Runit.pdf
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "live session details: /var/log/artix-live.log" > $xdg/README.txt
|
@@ -1,20 +1,20 @@
|
|||||||
# live session configuration
|
# live session configuration
|
||||||
|
|
||||||
# autologin
|
# autologin
|
||||||
autologin=true
|
AUTOLOGIN=true
|
||||||
|
|
||||||
# live username
|
# live username
|
||||||
username=artix
|
USER_NAME=artix
|
||||||
|
|
||||||
# live password
|
# live password
|
||||||
password=artix
|
PASSWORD=artix
|
||||||
|
|
||||||
# live group membership
|
# live group membership
|
||||||
addgroups='video,power,disk,storage,optical,network,lp,scanner,wheel'
|
ADDGROUPS='video,power,disk,storage,optical,network,lp,scanner,wheel'
|
||||||
|
|
||||||
# default_desktop_file
|
# default desktop file
|
||||||
default_desktop_file=lxqt
|
DEFAULT_DESKTOP_FILE=lxqt
|
||||||
|
|
||||||
# default_desktop_executable
|
# default desktop executable
|
||||||
default_desktop_executable=lxqt-session
|
DEFAULT_DESKTOP_EXECUTABLE=lxqt-session
|
||||||
|
|
||||||
|
15
data/runit/live
Normal file
15
data/runit/live
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
. /usr/lib/rc/functions
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
stat_busy "Initializing artix live system"
|
||||||
|
artix-live #|| stat_die
|
||||||
|
add_daemon live
|
||||||
|
stat_done
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "usage: $0 {start}"
|
||||||
|
;;
|
||||||
|
esac
|
5
data/runit/pacman-init.run
Normal file
5
data/runit/pacman-init.run
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
mount -t tmpfs -o size=10M,mode=0755 tmpfs /etc/pacman.d/gnupg
|
||||||
|
pacman-key --init 1>&2
|
||||||
|
pacman-key --populate archlinux artix 1>&2
|
||||||
|
exec chpst -b pacman-init pause
|
324
lib/util-live.sh
324
lib/util-live.sh
@@ -10,114 +10,116 @@
|
|||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
kernel_cmdline(){
|
kernel_cmdline(){
|
||||||
for param in $(cat /proc/cmdline); do
|
for param in $(cat /proc/cmdline); do
|
||||||
case "${param}" in
|
case "${param}" in
|
||||||
$1=*) echo "${param##*=}"; return 0 ;;
|
$1=*) echo "${param##*=}"; return 0 ;;
|
||||||
$1) return 0 ;;
|
$1) return 0 ;;
|
||||||
*) continue ;;
|
*) continue ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
[ -n "${2}" ] && echo "${2}"
|
[ -n "${2}" ] && echo "${2}"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
get_lang(){
|
get_lang(){
|
||||||
echo $(kernel_cmdline lang)
|
echo $(kernel_cmdline lang)
|
||||||
}
|
}
|
||||||
|
|
||||||
get_keytable(){
|
get_keytable(){
|
||||||
echo $(kernel_cmdline keytable)
|
echo $(kernel_cmdline keytable)
|
||||||
}
|
}
|
||||||
|
|
||||||
get_tz(){
|
get_tz(){
|
||||||
echo $(kernel_cmdline tz)
|
echo $(kernel_cmdline tz)
|
||||||
|
}
|
||||||
|
|
||||||
|
get_cal_mode(){
|
||||||
|
echo $(kernel_cmdline netinstall)
|
||||||
}
|
}
|
||||||
|
|
||||||
get_timer_ms(){
|
get_timer_ms(){
|
||||||
echo $(date +%s%3N)
|
echo $(date +%s%3N)
|
||||||
}
|
}
|
||||||
|
|
||||||
# $1: start timer
|
# $1: start timer
|
||||||
elapsed_time_ms(){
|
elapsed_time_ms(){
|
||||||
echo $(echo $1 $(get_timer_ms) | awk '{ printf "%0.3f",($2-$1)/1000 }')
|
echo $(echo $1 $(get_timer_ms) | awk '{ printf "%0.3f",($2-$1)/1000 }')
|
||||||
}
|
}
|
||||||
|
|
||||||
load_live_config(){
|
load_live_config(){
|
||||||
|
|
||||||
[[ -f $1 ]] || return 1
|
[[ -f $1 ]] || return 1
|
||||||
|
|
||||||
live_conf="$1"
|
local live_conf="$1"
|
||||||
|
|
||||||
[[ -r ${live_conf} ]] && source ${live_conf}
|
[[ -r ${live_conf} ]] && source ${live_conf}
|
||||||
|
|
||||||
[[ -z ${autologin} ]] && autologin=true
|
[[ -z ${AUTOLOGIN} ]] && AUTOLOGIN=true
|
||||||
|
|
||||||
[[ -z ${username} ]] && username="cromnix"
|
[[ -z ${USER_NAME} ]] && USER_NAME="artix"
|
||||||
|
|
||||||
[[ -z ${password} ]] && password="cromnix"
|
[[ -z ${PASSWORD} ]] && PASSWORD="artix"
|
||||||
|
|
||||||
[[ -z ${addgroups} ]] && addgroups=""
|
[[ -z ${ADDGROUPS} ]] && ADDGROUPS="video,power,storage,optical,network,lp,scanner,wheel,users,audio"
|
||||||
|
|
||||||
echo "Loaded ${live_conf}: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
echo "Loaded ${live_conf}: $(elapsed_time_ms ${livetimer})ms" >> "${LOGFILE}"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
is_valid_de(){
|
is_valid_de(){
|
||||||
if [[ ${default_desktop_executable} != "none" ]] && \
|
if [[ ${DEFAULT_DESKTOP_EXECUTABLE} != "none" ]] && \
|
||||||
[[ ${default_desktop_file} != "none" ]]; then
|
[[ ${DEFAULT_DESKTOP_FILE} != "none" ]]; then
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
load_desktop_map(){
|
load_desktop_map(){
|
||||||
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g" \
|
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g" \
|
||||||
file=${DATADIR}/desktop.map
|
file=${DATADIR}/desktop.map
|
||||||
local desktop_map=$(sed "$_com_rm" "$file" \
|
local desktop_map=$(sed "$_com_rm" "$file" | sed "$_space" | sed "$_clean")
|
||||||
| sed "$_space" \
|
|
||||||
| sed "$_clean")
|
|
||||||
echo ${desktop_map}
|
echo ${desktop_map}
|
||||||
}
|
}
|
||||||
|
|
||||||
detect_desktop_env(){
|
detect_desktop_env(){
|
||||||
local xs=/usr/share/xsessions ex=/usr/bin key val map=( $(load_desktop_map) )
|
local xs=/usr/share/xsessions ex=/usr/bin key val map=( $(load_desktop_map) )
|
||||||
default_desktop_file="none"
|
DEFAULT_DESKTOP_FILE="none"
|
||||||
default_desktop_executable="none"
|
DEFAULT_DESKTOP_EXECUTABLE="none"
|
||||||
for item in "${map[@]}";do
|
for item in "${map[@]}";do
|
||||||
key=${item%:*}
|
key=${item%:*}
|
||||||
val=${item#*:}
|
val=${item#*:}
|
||||||
if [[ -f $xs/$key.desktop ]] && [[ -f $ex/$val ]];then
|
if [[ -f $xs/$key.desktop ]] && [[ -f $ex/$val ]];then
|
||||||
default_desktop_file="$key"
|
DEFAULT_DESKTOP_FILE="$key"
|
||||||
default_desktop_executable="$val"
|
DEFAULT_DESKTOP_EXECUTABLE="$val"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_accountsservice(){
|
configure_accountsservice(){
|
||||||
local path=/var/lib/AccountsService/users
|
local path=/var/lib/AccountsService/users
|
||||||
if [ -d "${path}" ] ; then
|
if [ -d "${path}" ] ; then
|
||||||
echo "[User]" > ${path}/$1
|
echo "[User]" > ${path}/$1
|
||||||
echo "XSession=${default_desktop_file}" >> ${path}/$1
|
echo "XSession=${DEFAULT_DESKTOP_FILE}" >> ${path}/$1
|
||||||
if [[ -f "/var/lib/AccountsService/icons/$1.png" ]];then
|
if [[ -f "/var/lib/AccountsService/icons/$1.png" ]];then
|
||||||
echo "Icon=/var/lib/AccountsService/icons/$1.png" >> ${path}/$1
|
echo "Icon=/var/lib/AccountsService/icons/$1.png" >> ${path}/$1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
set_lightdm_greeter(){
|
set_lightdm_greeter(){
|
||||||
local greeters=$(ls /usr/share/xgreeters/*greeter.desktop) name
|
local greeters=$(ls /usr/share/xgreeters/*greeter.desktop) name
|
||||||
for g in ${greeters[@]};do
|
for g in ${greeters[@]};do
|
||||||
name=${g##*/}
|
name=${g##*/}
|
||||||
name=${name%%.*}
|
name=${name%%.*}
|
||||||
case ${name} in
|
case ${name} in
|
||||||
lightdm-gtk-greeter) break ;;
|
lightdm-gtk-greeter) break ;;
|
||||||
lightdm-*-greeter)
|
lightdm-*-greeter)
|
||||||
sed -i -e "s/^.*greeter-session=.*/greeter-session=${name}/" /etc/lightdm/lightdm.conf
|
sed -i -e "s/^.*greeter-session=.*/greeter-session=${name}/" /etc/lightdm/lightdm.conf
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
set_lightdm_vt(){
|
set_lightdm_vt(){
|
||||||
@@ -125,123 +127,120 @@ configure_accountsservice(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
configure_displaymanager(){
|
configure_displaymanager(){
|
||||||
# Try to detect desktop environment
|
# Try to detect desktop environment
|
||||||
# Configure display manager
|
# Configure display manager
|
||||||
if [[ -f /usr/bin/lightdm ]];then
|
if [[ -f /usr/bin/lightdm ]];then
|
||||||
groupadd -r autologin
|
groupadd -r autologin
|
||||||
set_lightdm_vt
|
set_lightdm_vt
|
||||||
set_lightdm_greeter
|
set_lightdm_greeter
|
||||||
if $(is_valid_de); then
|
if $(is_valid_de); then
|
||||||
sed -i -e "s/^.*user-session=.*/user-session=$default_desktop_file/" /etc/lightdm/lightdm.conf
|
sed -i -e "s/^.*user-session=.*/user-session=$DEFAULT_DESKTOP_FILE/" /etc/lightdm/lightdm.conf
|
||||||
fi
|
fi
|
||||||
if ${autologin};then
|
if ${AUTOLOGIN};then
|
||||||
gpasswd -a ${username} autologin &> /dev/null
|
gpasswd -a ${USER_NAME} autologin &> /dev/null
|
||||||
sed -i -e "s/^.*autologin-user=.*/autologin-user=${username}/" /etc/lightdm/lightdm.conf
|
sed -i -e "s/^.*autologin-user=.*/autologin-user=${USER_NAME}/" /etc/lightdm/lightdm.conf
|
||||||
sed -i -e "s/^.*autologin-user-timeout=.*/autologin-user-timeout=0/" /etc/lightdm/lightdm.conf
|
sed -i -e "s/^.*autologin-user-timeout=.*/autologin-user-timeout=0/" /etc/lightdm/lightdm.conf
|
||||||
sed -i -e "s/^.*pam-autologin-service=.*/pam-autologin-service=lightdm-autologin/" /etc/lightdm/lightdm.conf
|
sed -i -e "s/^.*pam-autologin-service=.*/pam-autologin-service=lightdm-autologin/" /etc/lightdm/lightdm.conf
|
||||||
fi
|
fi
|
||||||
elif [[ -f /usr/bin/gdm ]];then
|
elif [[ -f /usr/bin/gdm ]];then
|
||||||
configure_accountsservice "gdm"
|
configure_accountsservice "gdm"
|
||||||
if ${autologin};then
|
if ${AUTOLOGIN};then
|
||||||
sed -i -e "s/\[daemon\]/\[daemon\]\nAutomaticLogin=${username}\nAutomaticLoginEnable=True/" /etc/gdm/custom.conf
|
sed -i -e "s/\[daemon\]/\[daemon\]\nAutomaticLogin=${USER_NAME}\nAutomaticLoginEnable=True/" /etc/gdm/custom.conf
|
||||||
fi
|
fi
|
||||||
elif [[ -f /usr/bin/mdm ]];then
|
elif [[ -f /usr/bin/sddm ]];then
|
||||||
if $(is_valid_de); then
|
if $(is_valid_de); then
|
||||||
sed -i "s|default.desktop|$default_desktop_file.desktop|g" /etc/mdm/custom.conf
|
sed -i -e "s|^Session=.*|Session=$DEFAULT_DESKTOP_FILE.desktop|" /etc/sddm.conf
|
||||||
fi
|
fi
|
||||||
elif [[ -f /usr/bin/sddm ]];then
|
if ${AUTOLOGIN};then
|
||||||
if $(is_valid_de); then
|
sed -i -e "s|^User=.*|User=${USER_NAME}|" /etc/sddm.conf
|
||||||
sed -i -e "s|^Session=.*|Session=$default_desktop_file.desktop|" /etc/sddm.conf
|
fi
|
||||||
fi
|
elif [[ -f /usr/bin/lxdm ]];then
|
||||||
if ${autologin};then
|
if $(is_valid_de); then
|
||||||
sed -i -e "s|^User=.*|User=${username}|" /etc/sddm.conf
|
sed -i -e "s|^.*session=.*|session=/usr/bin/${DEFAULT_DESKTOP_EXECUTABLE}|" /etc/lxdm/lxdm.conf
|
||||||
fi
|
fi
|
||||||
elif [[ -f /usr/bin/lxdm ]];then
|
if ${AUTOLOGIN};then
|
||||||
if $(is_valid_de); then
|
sed -i -e "s/^.*autologin=.*/autologin=${USER_NAME}/" /etc/lxdm/lxdm.conf
|
||||||
sed -i -e "s|^.*session=.*|session=/usr/bin/$default_desktop_executable|" /etc/lxdm/lxdm.conf
|
fi
|
||||||
fi
|
fi
|
||||||
if ${autologin};then
|
|
||||||
sed -i -e "s/^.*autologin=.*/autologin=${username}/" /etc/lxdm/lxdm.conf
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gen_pw(){
|
gen_pw(){
|
||||||
echo $(perl -e 'print crypt($ARGV[0], "password")' ${password})
|
echo $(perl -e 'print crypt($ARGV[0], "password")' ${PASSWORD})
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_user(){
|
configure_user(){
|
||||||
# set up user and password
|
# set up user and password
|
||||||
if [[ -n ${password} ]];then
|
if [[ -n ${PASSWORD} ]];then
|
||||||
useradd -m -G ${addgroups} -p $(gen_pw) -s /bin/bash ${username}
|
useradd -m -G ${ADDGROUPS} -p $(gen_pw) -s /bin/bash ${USER_NAME}
|
||||||
else
|
else
|
||||||
useradd -m -G ${addgroups} -s /bin/bash ${username}
|
useradd -m -G ${ADDGROUPS} -s /bin/bash ${USER_NAME}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
find_legacy_keymap(){
|
find_legacy_keymap(){
|
||||||
local file="${DATADIR}/kbd-model.map"
|
local file="${DATADIR}/kbd-model.map" kt="$1"
|
||||||
while read -r line || [[ -n $line ]]; do
|
while read -r line || [[ -n $line ]]; do
|
||||||
if [[ -z $line ]] || [[ $line == \#* ]]; then
|
if [[ -z $line ]] || [[ $line == \#* ]]; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mapping=( $line ); # parses columns
|
local mapping=( $line ); # parses columns
|
||||||
if [[ ${#mapping[@]} != 5 ]]; then
|
if [[ ${#mapping[@]} != 5 ]]; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${keytable}" != "${mapping[0]}" ]]; then
|
if [[ "$kt" != "${mapping[0]}" ]]; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${mapping[3]}" = "-" ]]; then
|
if [[ "${mapping[3]}" = "-" ]]; then
|
||||||
mapping[3]=""
|
mapping[3]=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
X11_LAYOUT=${mapping[1]}
|
X11_LAYOUT=${mapping[1]}
|
||||||
X11_MODEL=${mapping[2]}
|
X11_MODEL=${mapping[2]}
|
||||||
X11_VARIANT=${mapping[3]}
|
X11_VARIANT=${mapping[3]}
|
||||||
x11_OPTIONS=${mapping[4]}
|
x11_OPTIONS=${mapping[4]}
|
||||||
done < $file
|
done < $file
|
||||||
}
|
}
|
||||||
|
|
||||||
write_x11_config(){
|
write_x11_config(){
|
||||||
# find a x11 layout that matches the keymap
|
# find a x11 layout that matches the keymap
|
||||||
# in isolinux if you select a keyboard layout and a language that doesnt match this layout,
|
# in isolinux if you select a keyboard layout and a language that doesnt match this layout,
|
||||||
# it will provide the correct keymap, but not kblayout value
|
# it will provide the correct keymap, but not kblayout value
|
||||||
local X11_LAYOUT=
|
local X11_LAYOUT=
|
||||||
local X11_MODEL="pc105"
|
local X11_MODEL="pc105"
|
||||||
local X11_VARIANT=""
|
local X11_VARIANT=""
|
||||||
local X11_OPTIONS="terminate:ctrl_alt_bksp"
|
local X11_OPTIONS="terminate:ctrl_alt_bksp"
|
||||||
|
local kt="$1"
|
||||||
|
|
||||||
find_legacy_keymap
|
find_legacy_keymap "$kt"
|
||||||
|
|
||||||
# layout not found, use KBLAYOUT
|
# layout not found, use KBLAYOUT
|
||||||
if [[ -z "$X11_LAYOUT" ]]; then
|
if [[ -z "$X11_LAYOUT" ]]; then
|
||||||
X11_LAYOUT="${keytable}"
|
X11_LAYOUT="$kt"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# create X11 keyboard layout config
|
# create X11 keyboard layout config
|
||||||
mkdir -p "/etc/X11/xorg.conf.d"
|
mkdir -p "/etc/X11/xorg.conf.d"
|
||||||
|
|
||||||
local XORGKBLAYOUT="/etc/X11/xorg.conf.d/00-keyboard.conf"
|
local XORGKBLAYOUT="/etc/X11/xorg.conf.d/00-keyboard.conf"
|
||||||
|
|
||||||
echo "" >> "$XORGKBLAYOUT"
|
echo "" >> "$XORGKBLAYOUT"
|
||||||
echo "Section \"InputClass\"" > "$XORGKBLAYOUT"
|
echo "Section \"InputClass\"" > "$XORGKBLAYOUT"
|
||||||
echo " Identifier \"system-keyboard\"" >> "$XORGKBLAYOUT"
|
echo " Identifier \"system-keyboard\"" >> "$XORGKBLAYOUT"
|
||||||
echo " MatchIsKeyboard \"on\"" >> "$XORGKBLAYOUT"
|
echo " MatchIsKeyboard \"on\"" >> "$XORGKBLAYOUT"
|
||||||
echo " Option \"XkbLayout\" \"$X11_LAYOUT\"" >> "$XORGKBLAYOUT"
|
echo " Option \"XkbLayout\" \"$X11_LAYOUT\"" >> "$XORGKBLAYOUT"
|
||||||
echo " Option \"XkbModel\" \"$X11_MODEL\"" >> "$XORGKBLAYOUT"
|
echo " Option \"XkbModel\" \"$X11_MODEL\"" >> "$XORGKBLAYOUT"
|
||||||
echo " Option \"XkbVariant\" \"$X11_VARIANT\"" >> "$XORGKBLAYOUT"
|
echo " Option \"XkbVariant\" \"$X11_VARIANT\"" >> "$XORGKBLAYOUT"
|
||||||
echo " Option \"XkbOptions\" \"$X11_OPTIONS\"" >> "$XORGKBLAYOUT"
|
echo " Option \"XkbOptions\" \"$X11_OPTIONS\"" >> "$XORGKBLAYOUT"
|
||||||
echo "EndSection" >> "$XORGKBLAYOUT"
|
echo "EndSection" >> "$XORGKBLAYOUT"
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_language(){
|
configure_language(){
|
||||||
# hack to be able to set the locale on bootup
|
# hack to be able to set the locale on bootup
|
||||||
local lang=$(get_lang)
|
local lang=$(get_lang)
|
||||||
keytable=$(get_keytable)
|
local keytable=$(get_keytable)
|
||||||
local timezone=$(get_tz)
|
local timezone=$(get_tz)
|
||||||
# Fallback
|
# Fallback
|
||||||
# [[ -z "${lang}" ]] && lang="en_US"
|
# [[ -z "${lang}" ]] && lang="en_US"
|
||||||
@@ -259,7 +258,7 @@ configure_language(){
|
|||||||
echo "LANG=${lang}.UTF-8" > /etc/locale.conf
|
echo "LANG=${lang}.UTF-8" > /etc/locale.conf
|
||||||
ln -sf /usr/share/zoneinfo/${timezone} /etc/localtime
|
ln -sf /usr/share/zoneinfo/${timezone} /etc/localtime
|
||||||
|
|
||||||
write_x11_config
|
write_x11_config "${keytable}"
|
||||||
|
|
||||||
loadkeys "${keytable}"
|
loadkeys "${keytable}"
|
||||||
|
|
||||||
@@ -269,32 +268,15 @@ configure_language(){
|
|||||||
echo "Configured timezone: ${timezone}" >> "${LOGFILE}"
|
echo "Configured timezone: ${timezone}" >> "${LOGFILE}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# configure_machine_id(){
|
|
||||||
# if [ -e "/etc/machine-id" ] ; then
|
|
||||||
# # delete existing machine-id
|
|
||||||
# echo "Deleting existing machine-id ..." >> "${LOGFILE}"
|
|
||||||
# rm /etc/machine-id
|
|
||||||
# fi
|
|
||||||
# # set unique machine-id
|
|
||||||
# echo "Setting machine-id ..." >> "${LOGFILE}"
|
|
||||||
# dbus-uuidgen --ensure=/etc/machine-id
|
|
||||||
# ln -sf /etc/machine-id /var/lib/dbus/machine-id
|
|
||||||
# }
|
|
||||||
|
|
||||||
configure_sudoers_d(){
|
|
||||||
echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/g_wheel
|
|
||||||
echo "root ALL=(ALL) ALL" > /etc/sudoers.d/u_root
|
|
||||||
}
|
|
||||||
|
|
||||||
configure_swap(){
|
configure_swap(){
|
||||||
local swapdev="$(fdisk -l 2>/dev/null | grep swap | cut -d' ' -f1)"
|
local swapdev="$(fdisk -l 2>/dev/null | grep swap | cut -d' ' -f1)"
|
||||||
if [ -e "${swapdev}" ]; then
|
if [ -e "${swapdev}" ]; then
|
||||||
swapon ${swapdev}
|
swapon ${swapdev}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_user_root(){
|
configure_user_root(){
|
||||||
# set up root password
|
# set up root password
|
||||||
echo "root:${password}" | chroot $1 chpasswd
|
echo "root:${PASSWORD}" | chroot $1 chpasswd
|
||||||
cp /etc/skel/.{bash_profile,bashrc,bash_logout} /root/
|
cp /etc/skel/.{bash_profile,bashrc,bash_logout} /root/
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user