malfs mekanizma guncelleme
This commit is contained in:
parent
10b6921175
commit
e6779db798
|
@ -0,0 +1,6 @@
|
|||
*.sfs
|
||||
*.iso
|
||||
iso_icerik/boot/kernel
|
||||
iso_icerik/boot/initrd
|
||||
iso_icerik/boot/initramfs
|
||||
iso_icerik/LiveOS/*.*
|
163
README.md
163
README.md
|
@ -1,2 +1,161 @@
|
|||
# malfs-milis
|
||||
milis versiyon 0.1
|
||||
# malfs
|
||||
Milis Automated Linux From Scratch
|
||||
|
||||
Konak Sistem için Yapılması Gerekenler (ubuntu)
|
||||
|
||||
apt-get remove mawk
|
||||
|
||||
apt-get install bsdtar binutils gcc g++ m4 make bison texinfo pkg-config squashfs-tools
|
||||
|
||||
rm /bin/sh
|
||||
|
||||
ln -s /bin/bash /bin/sh
|
||||
|
||||
KURULUM YÖNERGELERİ
|
||||
|
||||
Dikkat:
|
||||
1-Bu işlemleri root kullanıcısıyla yapınız.
|
||||
|
||||
-Mekanizmanın Kurulması
|
||||
|
||||
git clone https://github.com/milisarge/malfs.git malfs
|
||||
|
||||
cd malfs
|
||||
|
||||
ilk önce host sistemin gereksinimleri karşıladığının kontrol edilmesi
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -gk
|
||||
|
||||
yukarıdaki işlemin sonucuna göre gerekli gereksinimler yuklenir.
|
||||
|
||||
ayrıca http://www.linuxfromscratch.org/lfs/view/development/prologue/hostreqs.html sayfasından versiyon kontrolü yapınız.
|
||||
|
||||
gereksinimler tamamlandıktan sonra gerekli ortam değişkeni ayarı yapılır.
|
||||
|
||||
root@makine:/opt/malfs# mkdir -p /mnt/lfs
|
||||
|
||||
root@makine:/opt/malfs# export LFS=/mnt/lfs
|
||||
|
||||
gerekli kaynak kodların indirilmesi
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -ki
|
||||
|
||||
birinci ayarlar yapılır
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -ba
|
||||
|
||||
lfs kullanıcısıyla oturum acılmış olur.önsistem derlenmeye baslanır.
|
||||
|
||||
lfs@makine:~$ ./lfs-mekanizma -td onsistem
|
||||
|
||||
=======> '/home/lfs/talimatname/onsistem/0mps/0mps#0.1-x86_64.mps.lz' derleme basarili
|
||||
|
||||
yukarıdaki ifade goruldukten sonra exit komutu ile lfs kullanıcısından çıkılır.
|
||||
|
||||
lfs önsistemin sıkıstırılması(yedeklemek için)
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -os
|
||||
|
||||
üretici önsistemin yedeklenmesinden sonra üretici sisteme girmek için gerekli ayarlar yapılır.
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -ia
|
||||
|
||||
üretici sisteme girilir.
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -cg
|
||||
|
||||
root [ / ]# ekranına düşülür."command not found" şeklinde hatalar görülebilir,normaldir.bash yuklemesinden sonra düzelecek.
|
||||
|
||||
üretici sistem içersindeyken gerekli exportlar yapılır.
|
||||
|
||||
root [ / ]# export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin:/root/bin
|
||||
|
||||
root [ / ]# export FORCE_UNSAFE_CONFIGURE=1
|
||||
|
||||
root dizinine girilir.
|
||||
|
||||
root [ / ]# cd /root
|
||||
|
||||
root [ / ]# ./lfs-mekanizma -td temel
|
||||
|
||||
komutu verilip temel sistemin kurulumu sağlanır.
|
||||
|
||||
"bash chroot dışına çıkıp elle kurulmalıdır." mesajı görülünce
|
||||
|
||||
"exit" ile chroot dışına çıkılır
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -bk
|
||||
|
||||
komutu verilip bash kurulumu sağlanır.işlem aşağıdaki şekilde sonlanmalıdır.
|
||||
|
||||
bash 4.3.30-3
|
||||
|
||||
bash.tr 4.3.30-3
|
||||
|
||||
tekrar chroot içine girilir.ortam değişkenleri ayarlandıktan sonra,temel sistem derlenmeye devam edilir.
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -cg
|
||||
|
||||
root [ / ]# export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin:/root/bin
|
||||
|
||||
root [ / ]# export FORCE_UNSAFE_CONFIGURE=1
|
||||
|
||||
root [ / ]# cd /root
|
||||
|
||||
root [ / ]# ./lfs-mekanizma -td temel
|
||||
|
||||
en son aşağıdaki mesaj ile derleme bitmelidir.
|
||||
|
||||
=======> 'ca-certificates#20160110-x86_64.mps.xz' basarili sekilde kuruldu.
|
||||
|
||||
temel sistem paketlerin paket_depo altında toplanması-paketlerin arsivlenmesi
|
||||
|
||||
root [ / ]# paketleri_arsivle
|
||||
|
||||
chroottan cıkılıp,temel sistemin yedegi alınır.
|
||||
|
||||
root [ / ]# exit
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -ts
|
||||
|
||||
tekrar chroot içine girilir.ortam değişkenleri ayarlandıktan sonra,temel sistem için gerekli ek paketler derlenir.
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -cg
|
||||
|
||||
root [ / ]# export FORCE_UNSAFE_CONFIGURE=1
|
||||
|
||||
root [ / ]# cd /root
|
||||
|
||||
root [ / ]# ./lfs-mekanizma -td temel-ek
|
||||
|
||||
en son bu mesaj ile derleme bitmelidir.
|
||||
|
||||
=======> 'nano.tr#2.5.2-any.mps.xz' basarili sekilde kuruldu.
|
||||
|
||||
başlatıcı(initram-initrd) oluşturulması
|
||||
|
||||
root [ / ]# ./lfs-mekanizma -bo
|
||||
|
||||
temel-ek sistem paketlerin paket_depo altında toplanması-paketlerin arsivlenmesi
|
||||
|
||||
root [ / ]# paketleri_arsivle
|
||||
|
||||
chroottan cıkılıp,son sistemin yedegi alınır.
|
||||
|
||||
root [ / ]# exit
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -ss
|
||||
|
||||
son sistemin yedeği alındıktan sonra iso yapımı için sırasıyla
|
||||
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -so
|
||||
root@makine:/opt/malfs# ./lfs-mekanizma -io
|
||||
|
||||
komutları verilir.çalışma dizini altında malfs.iso oluşacaktır.
|
||||
|
||||
root@makine:/opt/malfs# qemu-system-x86_64 -m 512 malfs.iso
|
||||
|
||||
komutuyla iso test edilebilir.
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
|
|
@ -0,0 +1,8 @@
|
|||
set +h
|
||||
umask 022
|
||||
LFS=/mnt/lfs
|
||||
LC_ALL=POSIX
|
||||
LFS_TGT=`uname -m`-lfs-linux-gnu
|
||||
PATH=/home/lfs/bin:/tools/bin:/bin:/usr/bin
|
||||
export LFS LC_ALL LFS_TGT PATH
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
bin/
|
||||
lib/
|
||||
lib64/
|
||||
etc/
|
||||
etc/shells
|
||||
etc/profile
|
||||
etc/passwd
|
||||
etc/onmpsd.conf
|
||||
etc/inputrc
|
||||
etc/group
|
||||
etc/fstab
|
||||
etc/blfs-bootscripts
|
||||
etc/bashrc
|
||||
etc/rpc
|
||||
etc/nscd.conf
|
||||
etc/nsswitch.conf
|
||||
etc/ld.so.conf
|
||||
etc/mke2fs.conf
|
||||
etc/hosts
|
||||
etc/environment
|
||||
etc/login.defs.orig
|
||||
etc/login.defs
|
||||
etc/man_db.conf
|
||||
etc/wgetrc
|
||||
etc/rsyncd.conf
|
||||
etc/gpm-root.conf
|
||||
etc/mtab
|
||||
etc/mpsd.conf
|
||||
etc/dokunulmaz
|
||||
etc/resolv.conf
|
||||
etc/ld.so.cache
|
||||
etc/X11/
|
||||
etc/skel/
|
||||
etc/profile.d/
|
||||
etc/locale/
|
||||
etc/ld.so.conf.d/
|
||||
etc/iproute2/
|
||||
etc/security/
|
||||
etc/default/
|
||||
etc/udev/
|
||||
etc/lvm/
|
||||
etc/sysconfig/
|
||||
etc/rc.d/
|
||||
etc/init.d/
|
||||
etc/pam.d/
|
||||
home/
|
||||
usr/
|
||||
mnt/
|
||||
opt/
|
||||
root/
|
||||
run/
|
||||
tmp/
|
||||
usr/bin/
|
||||
usr/lib/
|
||||
usr/lib64/
|
||||
usr/sbin/
|
||||
usr/man/
|
||||
usr/include/
|
||||
usr/libexec/
|
||||
usr/local/
|
||||
usr/local/bin/
|
||||
usr/local/lib/
|
||||
usr/local/lib64/
|
||||
usr/local/etc/
|
||||
usr/local/share/
|
||||
usr/share/
|
||||
usr/share/doc/
|
||||
usr/share/locale/
|
||||
usr/share/locale/tr/
|
||||
usr/share/locale/tr/LC_MESSAGES/
|
||||
usr/share/man/
|
||||
usr/share/info/
|
||||
usr/share/man/man1/
|
||||
usr/share/man/man5/
|
||||
usr/share/man/tr/man1/
|
||||
usr/share/man/tr/man5/
|
|
@ -0,0 +1,11 @@
|
|||
# Begin /etc/ld.so.conf
|
||||
/lib
|
||||
/lib64
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
/usr/local/lib
|
||||
/usr/local/lib64
|
||||
|
||||
# Add an include directory
|
||||
include /etc/ld.so.conf.d/*.conf
|
||||
# End of /etc/ld.so.conf
|
|
@ -0,0 +1,31 @@
|
|||
export CFLAGS="-O2 -pipe"
|
||||
export CXXFLAGS="${CFLAGS}"
|
||||
|
||||
case "`uname -m`" in
|
||||
"x86_64"|"")
|
||||
export MAKEFLAGS="-j5"
|
||||
;;
|
||||
"i686")
|
||||
export MAKEFLAGS="-j2"
|
||||
export CFLAGS="${CFLAGS} -m32"
|
||||
export CXXFLAGS="${CXXFLAGS} -m32"
|
||||
export LDFLAGS="${LDFLAGS} -m32"
|
||||
;;
|
||||
*)
|
||||
echo "Unknown architecture selected! Exiting."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
PKGMK_WORK_DIR="/tmp/work"
|
||||
PKGMK_SOURCE_DIR="/sources"
|
||||
PKGMK_SYNC_FILES="no"
|
||||
PKGMK_COMPRESS_PACKAGE="yes"
|
||||
PKGMK_IGNORE_FOOTPRINT="yes"
|
||||
PKGMK_UPDATE_INDEX="yes"
|
||||
PKGMK_KEEP_SOURCES="yes"
|
||||
PKGMK_IGNORE_MD5SUM="yes"
|
||||
PKGMK_CLEAN="no"
|
||||
PKGMK_GROUPS=(devel service)
|
||||
PKGMK_LOCALES=(tr)
|
||||
PKGMK_IGNORE_COLLECTION="no"
|
||||
PKGMK_IGNORE_RELEASE="no"
|
|
@ -0,0 +1,32 @@
|
|||
export CFLAGS="-O2 -pipe"
|
||||
export CXXFLAGS="${CFLAGS}"
|
||||
|
||||
case "`uname -m`" in
|
||||
"x86_64"|"")
|
||||
export MAKEFLAGS="-j5"
|
||||
;;
|
||||
"i686")
|
||||
export MAKEFLAGS="-j2"
|
||||
export CFLAGS="${CFLAGS} -m32"
|
||||
export CXXFLAGS="${CXXFLAGS} -m32"
|
||||
export LDFLAGS="${LDFLAGS} -m32"
|
||||
;;
|
||||
*)
|
||||
echo "Unknown architecture selected! Exiting."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
PKGMK_WORK_DIR="/tmp/work"
|
||||
PKGMK_SOURCE_DIR="/sources"
|
||||
PKGMK_SYNC_FILES="no"
|
||||
PKGMK_COMPRESS_PACKAGE="yes"
|
||||
PKGMK_IGNORE_FOOTPRINT="yes"
|
||||
PKGMK_UPDATE_INDEX="yes"
|
||||
PKGMK_KEEP_SOURCES="yes"
|
||||
PKGMK_IGNORE_MD5SUM="yes"
|
||||
PKGMK_CLEAN="no"
|
||||
PKGMK_GROUPS=(devel service)
|
||||
PKGMK_LOCALES=(tr)
|
||||
PKGMK_IGNORE_COLLECTION="no"
|
||||
PKGMK_IGNORE_RELEASE="yes"
|
||||
PAKETSIZ_DERLEME="evet"
|
|
@ -0,0 +1,113 @@
|
|||
#!/bin/bash
|
||||
if [ -z "$LOG" ]; then
|
||||
PASS=`pwd`
|
||||
PASS=`basename $PASS`
|
||||
LOG=$HOME/logs/$PASS
|
||||
fi
|
||||
if [ ! -d $LOG ]; then
|
||||
mkdir -p $LOG
|
||||
fi
|
||||
|
||||
error() {
|
||||
echo "$i hata luştu"
|
||||
exit 1
|
||||
}
|
||||
|
||||
LIST="$HOME/base/base.list"
|
||||
|
||||
|
||||
for DIR in `cat $LIST`
|
||||
do
|
||||
NAME=`basename $DIR`
|
||||
BUILD="yes"
|
||||
PKGMK="pkgmk.passes"
|
||||
if [ -f ${LOG}/$NAME.log ]; then
|
||||
if ( grep "^=======>" ${LOG}/$NAME.log|grep "succeeded" > /dev/null);then
|
||||
BUILD="no"
|
||||
else
|
||||
BUILD="yes"
|
||||
fi
|
||||
|
||||
fi
|
||||
if [ "$BUILD" == "yes" ]; then
|
||||
cd $DIR
|
||||
case $PASS in
|
||||
chroot)
|
||||
PKGMK="pkgmk.passes"
|
||||
$PKGMK -cf ../../../bin/paketci.conf -kw 2>&1|tee ${LOG}/$NAME.log || exit 1;;
|
||||
base)
|
||||
PKGMK="mpsd"
|
||||
case $NAME in
|
||||
gcc)
|
||||
$PKGMK -cf /etc/mpsd.conf -kw 2>&1|tee ${LOG}/$NAME.log || exit 1
|
||||
rm -fv /usr/lib{,64}/libgcc_s.so{,.1}
|
||||
rm -fv /usr/lib{,64}/libstdc++.so{,.6}
|
||||
rm -fv /usr/lib{,64}/libstdc++.la
|
||||
$PKGMK -d -cf /etc/mpsd.conf -i || exit 1
|
||||
for i in *mps*
|
||||
do
|
||||
echo "=======> Installing '$i' succeeded." >> ${LOG}/$NAME.log
|
||||
done
|
||||
;;
|
||||
|
||||
bash)
|
||||
$PKGMK -cf /etc/mpsd.conf -kw 2>&1|tee ${LOG}/$NAME.log || exit 1
|
||||
rm /bin/bash
|
||||
rm /bin/sh
|
||||
echo "bash chroot dışına çıkıp elle kurulmalıdır."
|
||||
echo "=======> Installing '$NAME' succeeded." >> ${LOG}/$NAME.log
|
||||
exit 1
|
||||
$PKGMK -d -cf /etc/mpsd.conf -i
|
||||
;;
|
||||
|
||||
coreutils)
|
||||
$PKGMK -cf /etc/mpsd.conf -kw 2>&1|tee ${LOG}/$NAME.log || exit 1
|
||||
rm -f /usr/bin/env
|
||||
for i in cat echo pwd stty
|
||||
do
|
||||
rm -f /bin/$i
|
||||
done
|
||||
$PKGMK -d -cf /etc/mpsd.conf -i || exit 1
|
||||
for i in *mps*
|
||||
do
|
||||
echo "=======> Installing '$i' succeeded." >> ${LOG}/$NAME.log
|
||||
done
|
||||
;;
|
||||
|
||||
perl)
|
||||
$PKGMK -cf /etc/mpsd.conf -kw 2>&1|tee ${LOG}/$NAME.log || exit 1
|
||||
rm -f /usr/bin/perl
|
||||
$PKGMK -d -cf /etc/mpsd.conf -i || exit 1
|
||||
for i in *mps*
|
||||
do
|
||||
echo "=======> Installing '$i' succeeded." >> ${LOG}/$NAME.log
|
||||
done
|
||||
;;
|
||||
cards)
|
||||
$PKGMK -cf /etc/mpsd.conf -kw 2>&1|tee ${LOG}/$NAME.log || exit 1
|
||||
rm -f /etc/pkgadd.conf
|
||||
$PKGMK -d -cf /etc/mpsd.conf -i || exit 1
|
||||
for i in *mps*
|
||||
do
|
||||
echo "=======> Installing '$i' succeeded." >> ${LOG}/$NAME.log
|
||||
done
|
||||
;;
|
||||
kernel)
|
||||
$PKGMK -d -cf /etc/mpsd.conf -i -kw || exit 1
|
||||
echo "=======> Installing '$NAME' succeeded." >> ${LOG}/$NAME.log
|
||||
;;
|
||||
|
||||
*)
|
||||
$PKGMK -cf /etc/mpsd.conf -i -kw 2>&1|tee ${LOG}/$NAME.log || exit 1
|
||||
;;
|
||||
esac;;
|
||||
*)
|
||||
PKGMK="mpsd -d -i"
|
||||
$PKGMK 2>&1|tee ${LOG}/$NAME.log || exit 1;;
|
||||
esac
|
||||
if ( grep "^=======>" ${LOG}/$NAME.log| tail -1 |grep "ERROR" > /dev/null);then
|
||||
exit 1
|
||||
fi
|
||||
cd -
|
||||
fi
|
||||
done
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ -b /dev/mapper/live-rw ] && [ -d /run/initramfs/live/updates -o -d /updates ]; then
|
||||
info "Applying updates to live image..."
|
||||
mount -o bind /run $NEWROOT/run
|
||||
# avoid overwriting symlinks (e.g. /lib -> /usr/lib) with directories
|
||||
for d in /updates /run/initramfs/live/updates; do
|
||||
[ -d "$d" ] || continue
|
||||
(
|
||||
cd $d
|
||||
find . -depth -type d | while read dir; do
|
||||
mkdir -p "$NEWROOT/$dir"
|
||||
done
|
||||
find . -depth \! -type d | while read file; do
|
||||
cp -a "$file" "$NEWROOT/$file"
|
||||
done
|
||||
)
|
||||
done
|
||||
umount $NEWROOT/run
|
||||
fi
|
|
@ -0,0 +1,58 @@
|
|||
#!/bin/sh -x
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||
|
||||
masa="lxqt"
|
||||
|
||||
echo "pisilinux" > ${NEWROOT}/etc/hostname
|
||||
|
||||
USERNAME=$(getarg live.user)
|
||||
USERSHELL=$(getarg live.shell)
|
||||
|
||||
[ -z "$USERNAME" ] && USERNAME=pisix
|
||||
[ -x $NEWROOT/bin/bash -a -z "$USERSHELL" ] && USERSHELL=/bin/bash
|
||||
[ -z "$USERSHELL" ] && USERSHELL=/bin/sh
|
||||
|
||||
# Create /etc/default/live.conf to store USER.
|
||||
echo "USERNAME=$USERNAME" >> ${NEWROOT}/etc/default/live.conf
|
||||
chmod 644 ${NEWROOT}/etc/default/live.conf
|
||||
|
||||
if ! grep -q ${USERSHELL} ${NEWROOT}/etc/shells ; then
|
||||
echo ${USERSHELL} >> ${NEWROOT}/etc/shells
|
||||
fi
|
||||
|
||||
# Create new user and remove password. We'll use autologin by default.
|
||||
|
||||
#chroot ${NEWROOT} sh -c "groupadd -g 18 'messagebus' "
|
||||
#chroot ${NEWROOT} sh -c "useradd -m -d /var/run/dbus -r -s /bin/false -u 18 -g 18 'messagebus' -c 'D-Bus Message Daemon' "
|
||||
|
||||
chroot ${NEWROOT} sh -c 'useradd -m -c $USERNAME -G audio,video,wheel,utmp -s $USERSHELL $USERNAME'
|
||||
chroot ${NEWROOT} sh -c "groupadd -fg 84 avahi && useradd -c 'Avahi Daemon Owner' -d /var/run/avahi-daemon -u 84 -g avahi -s /bin/false avahi"
|
||||
chroot ${NEWROOT} sh -c "passwd -d $USERNAME >/dev/null 2>&1"
|
||||
|
||||
# Setup default root/user password (pisilinux).
|
||||
chroot ${NEWROOT} sh -c 'echo "root:toor" | chpasswd -c SHA512'
|
||||
chroot ${NEWROOT} sh -c 'echo $USERNAME:pisix | chpasswd -c SHA512'
|
||||
|
||||
#gerekli ayarlar
|
||||
#chroot ${NEWROOT} sh -c "chmod +x /usr/local/bin/tamir"
|
||||
#chroot ${NEWROOT} sh -c "mkdir -p /run/lock/files.ldb && touch /run/lock/files.ldb/LOCK"
|
||||
echo "tamir" >> ${NEWROOT}/root/.xinitrc
|
||||
echo "exec start"$masa >> ${NEWROOT}/root/.xinitrc
|
||||
echo "tamir" >> ${NEWROOT}/home/$USERNAME/.xinitrc
|
||||
echo "exec start"$masa >> ${NEWROOT}/home/$USERNAME/.xinitrc
|
||||
|
||||
|
||||
# Enable sudo permission by default.
|
||||
if [ -f ${NEWROOT}/etc/sudoers ]; then
|
||||
echo "${USERNAME} ALL=(ALL) NOPASSWD: ALL" >> ${NEWROOT}/etc/sudoers
|
||||
fi
|
||||
|
||||
cp /run/initramfs/live/boot/kernel $NEWROOT/boot/kernel
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
[Unit]
|
||||
Description=Media check on %f
|
||||
DefaultDependencies=no
|
||||
Before=shutdown.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=no
|
||||
ExecStart=/bin/checkisomd5 --verbose %f
|
||||
StandardInput=tty-force
|
||||
StandardOutput=inherit
|
||||
StandardError=inherit
|
||||
TimeoutSec=0
|
||||
SuccessExitStatus=2
|
|
@ -0,0 +1,75 @@
|
|||
#!/bin/sh
|
||||
|
||||
modprobe usb_storage
|
||||
modprobe dm_mod
|
||||
|
||||
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||
|
||||
[ -z "$root" ] && root=$(getarg root=)
|
||||
|
||||
# support legacy syntax of passing liveimg and then just the base root
|
||||
if getargbool 0 rd.live.image -d -y liveimg; then
|
||||
liveroot="live:$root"
|
||||
fi
|
||||
|
||||
if [ "${root%%:*}" = "live" ] ; then
|
||||
liveroot=$root
|
||||
fi
|
||||
|
||||
[ "${liveroot%%:*}" = "live" ] || exit 0
|
||||
|
||||
case "$liveroot" in
|
||||
live:LABEL=*|LABEL=*) \
|
||||
root="${root#live:}"
|
||||
root="$(echo $root | sed 's,/,\\x2f,g')"
|
||||
root="live:/dev/disk/by-label/${root#LABEL=}"
|
||||
rootok=1 ;;
|
||||
live:CDLABEL=*|CDLABEL=*) \
|
||||
root="${root#live:}"
|
||||
root="$(echo $root | sed 's,/,\\x2f,g')"
|
||||
root="live:/dev/disk/by-label/${root#CDLABEL=}"
|
||||
rootok=1 ;;
|
||||
live:UUID=*|UUID=*) \
|
||||
root="${root#live:}"
|
||||
root="live:/dev/disk/by-uuid/${root#UUID=}"
|
||||
rootok=1 ;;
|
||||
live:PARTUUID=*|PARTUUID=*) \
|
||||
root="${root#live:}"
|
||||
root="live:/dev/disk/by-partuuid/${root#PARTUUID=}"
|
||||
rootok=1 ;;
|
||||
live:PARTLABEL=*|PARTLABEL=*) \
|
||||
root="${root#live:}"
|
||||
root="live:/dev/disk/by-partlabel/${root#PARTLABEL=}"
|
||||
rootok=1 ;;
|
||||
live:/*.[Ii][Ss][Oo]|/*.[Ii][Ss][Oo])
|
||||
root="${root#live:}"
|
||||
root="liveiso:${root}"
|
||||
rootok=1 ;;
|
||||
live:/dev/*)
|
||||
rootok=1 ;;
|
||||
live:/*.[Ii][Mm][Gg]|/*.[Ii][Mm][Gg])
|
||||
[ -f "${root#live:}" ] && rootok=1 ;;
|
||||
esac
|
||||
|
||||
[ "$rootok" != "1" ] && exit 0
|
||||
|
||||
GENERATOR_DIR="$2"
|
||||
[ -z "$GENERATOR_DIR" ] && exit 1
|
||||
|
||||
[ -d "$GENERATOR_DIR" ] || mkdir "$GENERATOR_DIR"
|
||||
|
||||
ROOTFLAGS="$(getarg rootflags)"
|
||||
{
|
||||
echo "[Unit]"
|
||||
echo "Before=initrd-root-fs.target"
|
||||
echo "[Mount]"
|
||||
echo "Where=/sysroot"
|
||||
echo "What=/dev/mapper/live-rw"
|
||||
[ -n "$ROOTFLAGS" ] && echo "Options=${ROOTFLAGS}"
|
||||
} > "$GENERATOR_DIR"/sysroot.mount
|
||||
|
||||
mkdir -p "$GENERATOR_DIR/dev-mapper-live\x2drw.device.d"
|
||||
{
|
||||
echo "[Unit]"
|
||||
echo "JobTimeoutSec=3000"
|
||||
} > "$GENERATOR_DIR/dev-mapper-live\x2drw.device.d/timeout.conf"
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/sh
|
||||
|
||||
case "$root" in
|
||||
live:/dev/*)
|
||||
{
|
||||
printf 'KERNEL=="%s", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root %s"\n' \
|
||||
"${root#live:/dev/}" "${root#live:}"
|
||||
printf 'SYMLINK=="%s", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root %s"\n' \
|
||||
"${root#live:/dev/}" "${root#live:}"
|
||||
} >> /etc/udev/rules.d/99-live-squash.rules
|
||||
wait_for_dev -n "${root#live:}"
|
||||
;;
|
||||
live:*)
|
||||
if [ -f "${root#live:}" ]; then
|
||||
/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root "${root#live:}"
|
||||
fi
|
||||
;;
|
||||
esac
|
|
@ -0,0 +1,298 @@
|
|||
#!/bin/sh
|
||||
|
||||
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||
|
||||
command -v unpack_archive >/dev/null || . /lib/img-lib.sh
|
||||
|
||||
PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin
|
||||
|
||||
if getargbool 0 rd.live.debug -n -y rdlivedebug; then
|
||||
exec > /tmp/liveroot.$$.out
|
||||
exec 2>> /tmp/liveroot.$$.out
|
||||
set -x
|
||||
fi
|
||||
|
||||
[ -z "$1" ] && exit 1
|
||||
livedev="$1"
|
||||
|
||||
# parse various live image specific options that make sense to be
|
||||
# specified as their own things
|
||||
live_dir=$(getarg rd.live.dir -d live_dir)
|
||||
[ -z "$live_dir" ] && live_dir="LiveOS"
|
||||
squash_image=$(getarg rd.live.squashimg)
|
||||
[ -z "$squash_image" ] && squash_image="squashfs.img"
|
||||
|
||||
getargbool 0 rd.live.ram -d -y live_ram && live_ram="yes"
|
||||
getargbool 0 rd.live.overlay.reset -d -y reset_overlay && reset_overlay="yes"
|
||||
getargbool 0 rd.live.overlay.readonly -d -y readonly_overlay && readonly_overlay="--readonly" || readonly_overlay=""
|
||||
overlay=$(getarg rd.live.overlay -d overlay)
|
||||
getargbool 0 rd.writable.fsimg -d -y writable_fsimg && writable_fsimg="yes"
|
||||
overlay_size=$(getarg rd.live.overlay.size=)
|
||||
[ -z "$overlay_size" ] && overlay_size=512
|
||||
|
||||
getargbool 0 rd.live.overlay.thin && thin_snapshot="yes"
|
||||
|
||||
# CD/DVD media check
|
||||
[ -b $livedev ] && fs=$(blkid -s TYPE -o value $livedev)
|
||||
if [ "$fs" = "iso9660" -o "$fs" = "udf" ]; then
|
||||
check="yes"
|
||||
fi
|
||||
getarg rd.live.check -d check || check=""
|
||||
if [ -n "$check" ]; then
|
||||
type plymouth >/dev/null 2>&1 && plymouth --hide-splash
|
||||
if [ -n "$DRACUT_SYSTEMD" ]; then
|
||||
p=$(dev_unit_name "$livedev")
|
||||
systemctl start checkisomd5@${p}.service
|
||||
else
|
||||
checkisomd5 --verbose $livedev
|
||||
fi
|
||||
if [ $? -eq 1 ]; then
|
||||
die "CD check failed!"
|
||||
exit 1
|
||||
fi
|
||||
type plymouth >/dev/null 2>&1 && plymouth --show-splash
|
||||
fi
|
||||
|
||||
ln -s $livedev /run/initramfs/livedev
|
||||
|
||||
# determine filesystem type for a filesystem image
|
||||
det_img_fs() {
|
||||
udevadm settle
|
||||
blkid -s TYPE -u noraid -o value "$1"
|
||||
}
|
||||
|
||||
modprobe squashfs
|
||||
|
||||
CMDLINE=$(getcmdline)
|
||||
for arg in $CMDLINE; do case $arg in ro|rw) liverw=$arg ;; esac; done
|
||||
# mount the backing of the live image first
|
||||
mkdir -m 0755 -p /run/initramfs/live
|
||||
if [ -f $livedev ]; then
|
||||
# no mount needed - we've already got the LiveOS image in initramfs
|
||||
# check filesystem type and handle accordingly
|
||||
fstype=$(det_img_fs $livedev)
|
||||
case $fstype in
|
||||
squashfs) SQUASHED=$livedev;;
|
||||
auto) die "cannot mount live image (unknown filesystem type)" ;;
|
||||
*) FSIMG=$livedev ;;
|
||||
esac
|
||||
[ -e /sys/fs/$fstype ] || modprobe $fstype
|
||||
else
|
||||
mount -n -t $fstype -o ${liverw:-ro} $livedev /run/initramfs/live
|
||||
if [ "$?" != "0" ]; then
|
||||
die "Failed to mount block device of live image"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# overlay setup helper function
|
||||
do_live_overlay() {
|
||||
# create a sparse file for the overlay
|
||||
# overlay: if non-ram overlay searching is desired, do it,
|
||||
# otherwise, create traditional overlay in ram
|
||||
OVERLAY_LOOPDEV=$( losetup -f )
|
||||
|
||||
l=$(blkid -s LABEL -o value $livedev) || l=""
|
||||
u=$(blkid -s UUID -o value $livedev) || u=""
|
||||
|
||||
if [ -z "$overlay" ]; then
|
||||
pathspec="/${live_dir}/overlay-$l-$u"
|
||||
elif ( echo $overlay | grep -q ":" ); then
|
||||
# pathspec specified, extract
|
||||
pathspec=$( echo $overlay | sed -e 's/^.*://' )
|
||||
fi
|
||||
|
||||
if [ -z "$pathspec" -o "$pathspec" = "auto" ]; then
|
||||
pathspec="/${live_dir}/overlay-$l-$u"
|
||||
fi
|
||||
devspec=$( echo $overlay | sed -e 's/:.*$//' )
|
||||
|
||||
# need to know where to look for the overlay
|
||||
setup=""
|
||||
if [ -n "$devspec" -a -n "$pathspec" -a -n "$overlay" ]; then
|
||||
mkdir -m 0755 /run/initramfs/overlayfs
|
||||
mount -n -t auto $devspec /run/initramfs/overlayfs || :
|
||||
if [ -f /run/initramfs/overlayfs$pathspec -a -w /run/initramfs/overlayfs$pathspec ]; then
|
||||
losetup $OVERLAY_LOOPDEV /run/initramfs/overlayfs$pathspec
|
||||
if [ -n "$reset_overlay" ]; then
|
||||
dd if=/dev/zero of=$OVERLAY_LOOPDEV bs=64k count=1 conv=fsync 2>/dev/null
|
||||
fi
|
||||
setup="yes"
|
||||
fi
|
||||
umount -l /run/initramfs/overlayfs || :
|
||||
fi
|
||||
|
||||
if [ -z "$setup" -o -n "$readonly_overlay" ]; then
|
||||
if [ -n "$setup" ]; then
|
||||
warn "Using temporary overlay."
|
||||
elif [ -n "$devspec" -a -n "$pathspec" ]; then
|
||||
warn "Unable to find persistent overlay; using temporary"
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
dd if=/dev/null of=/overlay bs=1024 count=1 seek=$((overlay_size*1024)) 2> /dev/null
|
||||
if [ -n "$setup" -a -n "$readonly_overlay" ]; then
|
||||
RO_OVERLAY_LOOPDEV=$( losetup -f )
|
||||
losetup $RO_OVERLAY_LOOPDEV /overlay
|
||||
else
|
||||
losetup $OVERLAY_LOOPDEV /overlay
|
||||
fi
|
||||
fi
|
||||
|
||||
# set up the snapshot
|
||||
sz=$(blockdev --getsz $BASE_LOOPDEV)
|
||||
if [ -n "$readonly_overlay" ]; then
|
||||
echo 0 $sz snapshot $BASE_LOOPDEV $OVERLAY_LOOPDEV N 8 | dmsetup create --readonly live-ro
|
||||
base="/dev/mapper/live-ro"
|
||||
over=$RO_OVERLAY_LOOPDEV
|
||||
else
|
||||
base=$BASE_LOOPDEV
|
||||
over=$OVERLAY_LOOPDEV
|
||||
fi
|
||||
|
||||
if [ -n "$thin_snapshot" ]; then
|
||||
modprobe dm_thin_pool
|
||||
mkdir /run/initramfs/thin-overlay
|
||||
|
||||
# In block units (512b)
|
||||
thin_data_sz=$(( $overlay_size * 1024 * 1024 / 512 ))
|
||||
thin_meta_sz=$(( $thin_data_sz / 10 ))
|
||||
|
||||
# It is important to have the backing file on a tmpfs
|
||||
# this is needed to let the loopdevice support TRIM
|
||||
dd if=/dev/null of=/run/initramfs/thin-overlay/meta bs=1b count=1 seek=$((thin_meta_sz)) 2> /dev/null
|
||||
dd if=/dev/null of=/run/initramfs/thin-overlay/data bs=1b count=1 seek=$((thin_data_sz)) 2> /dev/null
|
||||
|
||||
THIN_META_LOOPDEV=$( losetup --show -f /run/initramfs/thin-overlay/meta )
|
||||
THIN_DATA_LOOPDEV=$( losetup --show -f /run/initramfs/thin-overlay/data )
|
||||
|
||||
echo 0 $thin_data_sz thin-pool $THIN_META_LOOPDEV $THIN_DATA_LOOPDEV 1024 1024 | dmsetup create live-overlay-pool
|
||||
dmsetup message /dev/mapper/live-overlay-pool 0 "create_thin 0"
|
||||
|
||||
# Create a snapshot of the base image
|
||||
echo 0 $sz thin /dev/mapper/live-overlay-pool 0 $base | dmsetup create live-rw
|
||||
else
|
||||
#emergency_shell
|
||||
loadkeys trq
|
||||
ln -s /usr/sbin/dmsetup /sbin/
|
||||
modprobe dm_mod
|
||||
modprobe dm_multipath
|
||||
echo "ornek:echo 0 7273437 snapshot /dev/loop1 /dev/loop2 PO 8"
|
||||
echo 0 $sz snapshot $base $over PO 8 | dmsetup create live-rw &
|
||||
|
||||
fi
|
||||
|
||||
# Create a device that always points to a ro base image
|
||||
echo 0 $sz linear $BASE_LOOPDEV 0 | dmsetup create --readonly live-base &
|
||||
ln -s /dev/dm-0 /dev/mapper/live-base
|
||||
ln -s /dev/dm-1 /dev/mapper/live-rw
|
||||
#emergency_shell
|
||||
}
|
||||
|
||||
# live cd helper function
|
||||
do_live_from_base_loop() {
|
||||
do_live_overlay
|
||||
}
|
||||
|
||||
# we might have a genMinInstDelta delta file for anaconda to take advantage of
|
||||
if [ -e /run/initramfs/live/${live_dir}/osmin.img ]; then
|
||||
OSMINSQFS=/run/initramfs/live/${live_dir}/osmin.img
|
||||
fi
|
||||
|
||||
if [ -n "$OSMINSQFS" ]; then
|
||||
# decompress the delta data
|
||||
dd if=$OSMINSQFS of=/run/initramfs/osmin.img 2> /dev/null
|
||||
OSMIN_SQUASHED_LOOPDEV=$( losetup -f )
|
||||
losetup -r $OSMIN_SQUASHED_LOOPDEV /run/initramfs/osmin.img
|
||||
mkdir -m 0755 -p /run/initramfs/squashfs.osmin
|
||||
mount -n -t squashfs -o ro $OSMIN_SQUASHED_LOOPDEV /run/initramfs/squashfs.osmin
|
||||
OSMIN_LOOPDEV=$( losetup -f )
|
||||
losetup -r $OSMIN_LOOPDEV /run/initramfs/squashfs.osmin/osmin
|
||||
umount -l /run/initramfs/squashfs.osmin
|
||||
fi
|
||||
|
||||
# we might have an embedded fs image on squashfs (compressed live)
|
||||
if [ -e /run/initramfs/live/${live_dir}/${squash_image} ]; then
|
||||
SQUASHED="/run/initramfs/live/${live_dir}/${squash_image}"
|
||||
if [ -n "$live_ram" ]; then
|
||||
echo "Copying live image to RAM..."
|
||||
echo "(this may take a few minutes)"
|
||||
dd if=$SQUASHED of=/run/initramfs/squashed.img bs=512 2> /dev/null
|
||||
echo "Done copying live image to RAM."
|
||||
SQUASHED="/run/initramfs/squashed.img"
|
||||
fi
|
||||
|
||||
SQUASHED_LOOPDEV=$( losetup -f )
|
||||
losetup -r $SQUASHED_LOOPDEV $SQUASHED
|
||||
mkdir -m 0755 -p /run/initramfs/squashfs
|
||||
mount -n -t squashfs -o ro $SQUASHED_LOOPDEV /run/initramfs/squashfs
|
||||
|
||||
if [ -f /run/initramfs/squashfs/LiveOS/ext3fs.img ]; then
|
||||
FSIMG="/run/initramfs/squashfs/LiveOS/ext3fs.img"
|
||||
elif [ -f /run/initramfs/squashfs/LiveOS/rootfs.img ]; then
|
||||
FSIMG="/run/initramfs/squashfs/LiveOS/rootfs.img"
|
||||
fi
|
||||
else
|
||||
# we might have an embedded fs image to use as rootfs (uncompressed live)
|
||||
if [ -e /run/initramfs/live/${live_dir}/ext3fs.img ]; then
|
||||
FSIMG="/run/initramfs/live/${live_dir}/ext3fs.img"
|
||||
elif [ -e /run/initramfs/live/${live_dir}/rootfs.img ]; then
|
||||
FSIMG="/run/initramfs/live/${live_dir}/rootfs.img"
|
||||
fi
|
||||
if [ -n "$live_ram" ]; then
|
||||
echo 'Copying live image to RAM...'
|
||||
echo '(this may take a few minutes)'
|
||||
dd if=$FSIMG of=/run/initramfs/rootfs.img bs=512 2> /dev/null
|
||||
echo 'Done copying live image to RAM.'
|
||||
FSIMG='/run/initramfs/rootfs.img'
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$FSIMG" ] ; then
|
||||
BASE_LOOPDEV=$( losetup -f )
|
||||
|
||||
if [ -n "$writable_fsimg" ] ; then
|
||||
# mount the provided filesystem read/write
|
||||
echo "Unpacking live filesystem (may take some time)"
|
||||
mkdir /run/initramfs/fsimg/
|
||||
if [ -n "$SQUASHED" ]; then
|
||||
cp -v $FSIMG /run/initramfs/fsimg/rootfs.img
|
||||
else
|
||||
unpack_archive $FSIMG /run/initramfs/fsimg/
|
||||
fi
|
||||
FSIMG=/run/initramfs/fsimg/rootfs.img
|
||||
fi
|
||||
if [ -n "$writable_fsimg" ] || [ -z "$SQUASHED" -a -n "$live_ram" ] ||
|
||||
[ "$overlay" = none -o "$overlay" = None -o "$overlay" = NONE ]; then
|
||||
losetup $BASE_LOOPDEV $FSIMG
|
||||
sz=$(blockdev --getsz $BASE_LOOPDEV)
|
||||
echo 0 $sz linear $BASE_LOOPDEV 0 | dmsetup create live-rw
|
||||
else
|
||||
# mount the filesystem read-only and add a dm snapshot for writes
|
||||
losetup -r $BASE_LOOPDEV $FSIMG
|
||||
do_live_from_base_loop
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -e "$SQUASHED" ] && umount -l /run/initramfs/squashfs
|
||||
|
||||
if [ -b "$OSMIN_LOOPDEV" ]; then
|
||||
# set up the devicemapper snapshot device, which will merge
|
||||
# the normal live fs image, and the delta, into a minimzied fs image
|
||||
echo "0 $( blockdev --getsz $BASE_LOOPDEV ) snapshot $BASE_LOOPDEV $OSMIN_LOOPDEV N 8" | dmsetup create --readonly live-osimg-min
|
||||
fi
|
||||
|
||||
ROOTFLAGS="$(getarg rootflags)"
|
||||
if [ -n "$ROOTFLAGS" ]; then
|
||||
ROOTFLAGS="-o $ROOTFLAGS"
|
||||
fi
|
||||
|
||||
ln -s /dev/mapper/live-rw /dev/root
|
||||
|
||||
if [ -z "$DRACUT_SYSTEMD" ]; then
|
||||
printf 'mount %s /dev/mapper/live-rw %s\n' "$ROOTFLAGS" "$NEWROOT" > $hookdir/mount/01-$$-live.sh
|
||||
fi
|
||||
|
||||
need_shutdown
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ "${root%%:*}" = "liveiso" ]; then
|
||||
{
|
||||
printf 'KERNEL=="loop-control", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root `/sbin/losetup -f --show %s`"\n' \
|
||||
${root#liveiso:}
|
||||
} >> /etc/udev/rules.d/99-liveiso-mount.rules
|
||||
fi
|
|
@ -0,0 +1,36 @@
|
|||
#!/bin/sh
|
||||
|
||||
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||
|
||||
PATH=/usr/sbin:/usr/bin:/sbin:/bin
|
||||
|
||||
isofile=$1
|
||||
|
||||
[ -z "$isofile" ] && exit 1
|
||||
|
||||
ismounted "/run/initramfs/isoscan" && exit 0
|
||||
|
||||
mkdir -p "/run/initramfs/isoscan"
|
||||
|
||||
do_iso_scan() {
|
||||
local _name
|
||||
local dev
|
||||
for dev in /dev/disk/by-uuid/*; do
|
||||
_name=$(dev_unit_name "$dev")
|
||||
[ -e /tmp/isoscan-${_name} ] && continue
|
||||
> /tmp/isoscan-${_name}
|
||||
mount -t auto -o ro "$dev" "/run/initramfs/isoscan" || continue
|
||||
if [ -f "/run/initramfs/isoscan/$isofile" ]; then
|
||||
losetup -f "/run/initramfs/isoscan/$isofile"
|
||||
rm -f -- "$job"
|
||||
exit 0
|
||||
else
|
||||
umount "/run/initramfs/isoscan"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
do_iso_scan
|
||||
|
||||
rmdir "/run/initramfs/isoscan"
|
||||
exit 1
|
|
@ -0,0 +1,40 @@
|
|||
#!/bin/bash
|
||||
|
||||
# called by dracut
|
||||
check() {
|
||||
# a live host-only image doesn't really make a lot of sense
|
||||
[[ $hostonly ]] && return 1
|
||||
return 255
|
||||
}
|
||||
|
||||
# called by dracut
|
||||
depends() {
|
||||
# if dmsetup is not installed, then we cannot support fedora/red hat
|
||||
# style live images
|
||||
echo dm rootfs-block img-lib
|
||||
return 0
|
||||
}
|
||||
|
||||
# called by dracut
|
||||
installkernel() {
|
||||
instmods squashfs loop iso9660
|
||||
}
|
||||
|
||||
# called by dracut
|
||||
install() {
|
||||
inst_multiple umount dmsetup blkid dd losetup grep blockdev find
|
||||
inst_multiple -o checkisomd5
|
||||
inst_hook cmdline 30 "$moddir/parse-dmsquash-live.sh"
|
||||
inst_hook cmdline 31 "$moddir/parse-iso-scan.sh"
|
||||
inst_hook pre-udev 30 "$moddir/dmsquash-live-genrules.sh"
|
||||
inst_hook pre-udev 30 "$moddir/dmsquash-liveiso-genrules.sh"
|
||||
inst_hook pre-pivot 20 "$moddir/apply-live-updates.sh"
|
||||
inst_script "$moddir/dmsquash-live-root.sh" "/sbin/dmsquash-live-root"
|
||||
inst_script "$moddir/iso-scan.sh" "/sbin/iso-scan"
|
||||
inst_script "$moddir/dmsquash-generator.sh" $systemdutildir/system-generators/dracut-dmsquash-generator
|
||||
inst_hook pre-pivot 10 "$moddir/ayarlar.sh"
|
||||
# should probably just be generally included
|
||||
inst_rules 60-cdrom_id.rules
|
||||
inst_simple "$moddir/checkisomd5@.service" "/etc/systemd/system/checkisomd5@.service"
|
||||
dracut_need_initqueue
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
#!/bin/sh
|
||||
# live images are specified with
|
||||
# root=live:backingdev
|
||||
|
||||
[ -z "$root" ] && root=$(getarg root=)
|
||||
|
||||
# support legacy syntax of passing liveimg and then just the base root
|
||||
if getargbool 0 rd.live.image -d -y liveimg; then
|
||||
liveroot="live:$root"
|
||||
fi
|
||||
|
||||
if [ "${root%%:*}" = "live" ] ; then
|
||||
liveroot=$root
|
||||
fi
|
||||
|
||||
[ "${liveroot%%:*}" = "live" ] || return 1
|
||||
|
||||
modprobe -q loop
|
||||
|
||||
case "$liveroot" in
|
||||
live:LABEL=*|LABEL=*) \
|
||||
root="${root#live:}"
|
||||
root="$(echo $root | sed 's,/,\\x2f,g')"
|
||||
root="live:/dev/disk/by-label/${root#LABEL=}"
|
||||
rootok=1 ;;
|
||||
live:CDLABEL=*|CDLABEL=*) \
|
||||
root="${root#live:}"
|
||||
root="$(echo $root | sed 's,/,\\x2f,g')"
|
||||
root="live:/dev/disk/by-label/${root#CDLABEL=}"
|
||||
rootok=1 ;;
|
||||
live:UUID=*|UUID=*) \
|
||||
root="${root#live:}"
|
||||
root="live:/dev/disk/by-uuid/${root#UUID=}"
|
||||
rootok=1 ;;
|
||||
live:PARTUUID=*|PARTUUID=*) \
|
||||
root="${root#live:}"
|
||||
root="live:/dev/disk/by-partuuid/${root#PARTUUID=}"
|
||||
rootok=1 ;;
|
||||
live:PARTLABEL=*|PARTLABEL=*) \
|
||||
root="${root#live:}"
|
||||
root="live:/dev/disk/by-partlabel/${root#PARTLABEL=}"
|
||||
rootok=1 ;;
|
||||
live:/*.[Ii][Ss][Oo]|/*.[Ii][Ss][Oo])
|
||||
root="${root#live:}"
|
||||
root="liveiso:${root}"
|
||||
rootok=1 ;;
|
||||
live:/dev/*)
|
||||
rootok=1 ;;
|
||||
live:/*.[Ii][Mm][Gg]|/*.[Ii][Mm][Gg])
|
||||
[ -f "${root#live:}" ] && rootok=1 ;;
|
||||
esac
|
||||
|
||||
[ "$rootok" = "1" ] || return 1
|
||||
|
||||
info "root was $liveroot, is now $root"
|
||||
|
||||
# make sure that init doesn't complain
|
||||
[ -z "$root" ] && root="live"
|
||||
|
||||
wait_for_dev -n /dev/mapper/live-rw
|
||||
|
||||
return 0
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
# live images are specified with
|
||||
# root=live:backingdev
|
||||
|
||||
isofile=$(getarg iso-scan/filename)
|
||||
|
||||
if [ -n "$isofile" ]; then
|
||||
/sbin/initqueue --settled --unique /sbin/iso-scan "$isofile"
|
||||
fi
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
for lib in lib{gmp,mpfr,mpc}.la; do
|
||||
echo $lib: $(if find /usr/lib* -name $lib|
|
||||
grep -q $lib;then :;else echo not;fi) found
|
||||
done
|
||||
unset lib
|
|
@ -0,0 +1,312 @@
|
|||
#!/bin/bash
|
||||
versiyon="0.1"
|
||||
paketdepo="/depo/paketler/"
|
||||
sunucu="192.168.3.193:8000/paketdepo/"
|
||||
ikaynak=""
|
||||
betikad=${0##*/}
|
||||
kurulum_onay="evet"
|
||||
dokunulmaz="/etc/dokunulmaz"
|
||||
talimatname_dizin="/root/talimatname"
|
||||
|
||||
icerik_ekle(){
|
||||
paketad=`echo "$1" | cut -d'#' -f1`
|
||||
paketad=`basename $paketad`
|
||||
echo $paketad" paketi kuruluyor."
|
||||
mkdir -p /var/lib/pkg/DB/"$paketad" &&
|
||||
tar xf $1 -C / &&
|
||||
mv /.MTREE /var/lib/pkg/DB/"$paketad"/files &&
|
||||
mv /.META /var/lib/pkg/DB/"$paketad"/META &&
|
||||
if [ -f /tools/sbin/ldconfig ];then
|
||||
/tools/sbin/ldconfig
|
||||
else
|
||||
/sbin/ldconfig
|
||||
fi
|
||||
echo $paketad" paketi kuruldu."
|
||||
}
|
||||
|
||||
paket_sil(){
|
||||
local paket kkont
|
||||
if [ -f $dokunulmaz ];then
|
||||
kkont=`kurulu_kontrol "$1"`
|
||||
if [ "$kkont" = "kurulu" ];then
|
||||
paket="$1"
|
||||
echo $paket" paketi siliniyor."
|
||||
#while IFS='' read -r line || [[ -n "$line" ]]; do
|
||||
while read -r dosya
|
||||
do
|
||||
if [[ $(grep -c $dosya $dokunulmaz) -eq 0 ]]; then
|
||||
#echo /$dosya
|
||||
rm -r -f /$dosya
|
||||
fi
|
||||
done < /var/lib/pkg/DB/"$paket"/files
|
||||
rm -r -f /var/lib/pkg/DB/"$paket" &&
|
||||
echo $paket" paketi silindi."
|
||||
else
|
||||
echo "paket zaten kurulu değil!"
|
||||
fi
|
||||
else
|
||||
echo "kritik mesaj:$dokunulmaz dosyası yok."
|
||||
#tamirat
|
||||
cp /root/ayarlar/dokunulmaz /etc/
|
||||
echo "dokunulmazlık tamiri yapıldı.,komutu yineleyiniz."
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
paket_bilgi(){
|
||||
local paket kkont
|
||||
kkont=`kurulu_kontrol "$1"`
|
||||
if [ "$kkont" = "kurulu" ];then
|
||||
paket="$1"
|
||||
cat /var/lib/pkg/DB/"$paket"/META
|
||||
else
|
||||
echo "paket kurulu değil!"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
derleme_listyap(){
|
||||
bagimlist=`bagimli_bilgi "$1"`
|
||||
for bagim in $bagimlist;do
|
||||
if [ "`cat derleme.liste | grep $bagim`" != "$bagim" ];then
|
||||
derleme_listyap "$bagim"
|
||||
fi
|
||||
done
|
||||
#if [ "`cat derleme.liste | grep $1`" != "$1" ];then
|
||||
# echo "derleme.liste yazılıyor:" "$1"
|
||||
# echo "$1" >> derleme.liste
|
||||
#fi
|
||||
if ! grep -Fxq "$1" derleme.liste
|
||||
then
|
||||
# echo "pas"
|
||||
#else
|
||||
echo "derleme.liste yazılıyor:" "$1"
|
||||
echo "$1" >> derleme.liste
|
||||
fi
|
||||
}
|
||||
|
||||
paket_derle_oto(){
|
||||
rm derleme.liste
|
||||
touch derleme.liste
|
||||
derleme_listyap "$1"
|
||||
for dpkt in `cat derleme.liste`;do
|
||||
echo $dpkt "derleniyor...."
|
||||
paket_derle $dpkt
|
||||
done
|
||||
}
|
||||
|
||||
paket_derle(){
|
||||
local konum derleme_onay eh bagimd
|
||||
derleme_onay="h"
|
||||
konum="`find "$talimatname_dizin" -name $1`"
|
||||
if [ -d "$konum" ];then
|
||||
mkdir -p tmp."$1"
|
||||
cp -a $konum/* tmp."$1"/
|
||||
cd tmp."$1"
|
||||
|
||||
if [ `kurulu_kontrol "$1"` = "kurulu" ];then
|
||||
while true; do
|
||||
read -p "$1 paketi zaten kurulu yine de derlensin mi?" eh
|
||||
case $eh in
|
||||
[Ee]* ) derleme_onay="e"; break;;
|
||||
[Hh]* ) break;;
|
||||
* ) echo "e veya h";;
|
||||
esac
|
||||
done
|
||||
else
|
||||
derleme_onay="e"
|
||||
fi
|
||||
if [ "$derleme_onay" = "e" ];then
|
||||
echo "$1" "derleniyor...."
|
||||
#mpsd -d > /dev/null
|
||||
mpsd -d
|
||||
if [ "$kurulum_onay" = "evet" ];then
|
||||
for kpkt in `ls $1* | cut -d'#' -f1`;do
|
||||
mps -k "$kpkt#"*
|
||||
done
|
||||
fi
|
||||
mv *.mps.lz ../
|
||||
fi
|
||||
cd ..
|
||||
rm -r tmp."$1"
|
||||
else
|
||||
echo "talimat dosyası bulunamadı."
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
bagimli_bilgi(){
|
||||
local bagimd konum
|
||||
konum="`find "$talimatname_dizin" -name $1`"
|
||||
bagimd=`cat $konum/talimat | grep "Depends" | cut -d':' -f2`
|
||||
#echo $bagimd
|
||||
echo `echo "$bagimd" | sed 's/,/ /g'`
|
||||
}
|
||||
|
||||
kurulu_kontrol(){
|
||||
if [ -d "/var/lib/pkg/DB/$1" ];then
|
||||
echo "kurulu"
|
||||
exit 1
|
||||
fi
|
||||
echo "degil"
|
||||
}
|
||||
|
||||
paketvt_guncelle(){
|
||||
wget -q --spider "$sunucu""paket.vt"
|
||||
#if wget -P /tmp -q "$sunucu""paket.vt" > /dev/null; then
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "paket veritabanı guncellenıyor." "$paketdepo""paket.vt"
|
||||
if [ -f "$paketdepo""paket.vt" ];then
|
||||
mv "$paketdepo""paket.vt" "$paketdepo""paket.vt.eski"
|
||||
fi
|
||||
wget -P "$paketdepo" "$sunucu""paket.vt"
|
||||
#rm /tmp/paket.vt*
|
||||
exit 1
|
||||
fi
|
||||
echo "paket veritabanı guncelleme olumsuz."
|
||||
}
|
||||
|
||||
sistem_kontrol(){
|
||||
paketvt_kontrol
|
||||
sunucu_kontrol
|
||||
}
|
||||
|
||||
sunucu_kontrol(){
|
||||
wget -q --spider $sunucu
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "paket sunucu aktif"
|
||||
else
|
||||
echo "sunucu erişim dışı"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
paketvt_kontrol(){
|
||||
mkdir -p /depo/paketler
|
||||
if [ ! -f /depo/paketler/paket.vt ];then
|
||||
touch /depo/paketler/paket.vt
|
||||
fi
|
||||
}
|
||||
|
||||
yardim(){
|
||||
echo "yardim"
|
||||
}
|
||||
|
||||
|
||||
ayarlar() {
|
||||
|
||||
while [ "$1" ]; do
|
||||
case $1 in
|
||||
-i|--indir)
|
||||
ikaynak="ag"
|
||||
kurulum_onay="olumsuz";;
|
||||
-ik|--inku)
|
||||
ikaynak="ag" ;;
|
||||
-k|--yrku)
|
||||
ikaynak="yerel" ;;
|
||||
-s|--pksl)
|
||||
paket_sil "$2" ;;
|
||||
-d|--pkde)
|
||||
kurulum_onay="olumsuz"
|
||||
paket_derle "$2" ;;
|
||||
-dk|--pkdk)
|
||||
paket_derle "$2" ;;
|
||||
-odk|--pkodk)
|
||||
paket_derle_oto "$2" ;;
|
||||
-dly|--drly)
|
||||
rm derleme.liste
|
||||
touch derleme.liste
|
||||
derleme_listyap "$2" ;;
|
||||
-b|--pkbl)
|
||||
paket_bilgi "$2" ;;
|
||||
-bb|--pkbb)
|
||||
bagimli_bilgi "$2" ;;
|
||||
-G|--pvtg)
|
||||
paketvt_guncelle ;;
|
||||
-g|--pkgu)
|
||||
if [ ! "$2" ]; then
|
||||
echo "paket ismi eksik"
|
||||
exit 1
|
||||
fi
|
||||
paket_guncelle "$2";;
|
||||
-kuko|--kurulu-kontrol)
|
||||
if [ ! "$2" ]; then
|
||||
echo "paket ismi eksik"
|
||||
exit 1
|
||||
fi
|
||||
kurulu_kontrol "$2";;
|
||||
-suko)
|
||||
sunucu_kontrol ;;
|
||||
-cf|--config-file)
|
||||
if [ ! "$2" ]; then
|
||||
echo "ayardosyası gerek $1"
|
||||
exit 1
|
||||
fi
|
||||
ayar_dosyasi="$2"
|
||||
shift ;;
|
||||
-v)
|
||||
echo "$betikad $versiyon"
|
||||
exit 0 ;;
|
||||
-h|--help)
|
||||
yardim
|
||||
exit 0 ;;
|
||||
|
||||
esac
|
||||
shift
|
||||
done
|
||||
}
|
||||
ana(){
|
||||
ayarlar "$@"
|
||||
|
||||
if [ "$ikaynak" = "ag" ]; then
|
||||
|
||||
echo "agdan cekiliyor:" "$2"
|
||||
#pkt=`cat "$paketdepo""paket.vt" | grep -w "$2" | cut -d' ' -f2`
|
||||
pkt=`cat "$paketdepo""paket.vt" | grep "$2"# | cut -d' ' -f2`
|
||||
if [ ! -z "$pkt" -a "$pkt" != "" ]; then
|
||||
cpaket="${pkt/'#'/'%23'}"
|
||||
#paket sunucuda varsa
|
||||
wget -q --spider "$sunucu$cpaket"
|
||||
#if wget -P /tmp -q "$sunucu$cpaket" > /dev/null; then
|
||||
if [ $? -eq 0 ]; then
|
||||
wget -nc -P "$paketdepo" "$sunucu$cpaket"
|
||||
#mv /tmp/$pkt "$paketdepo"
|
||||
if [ "$kurulum_onay" = "evet" ];then
|
||||
kkont=`kurulu_kontrol "$2"`
|
||||
if [ "$kkont" = "degil" ];then
|
||||
icerik_ekle "$paketdepo$pkt"
|
||||
exit 1
|
||||
else
|
||||
echo "paket zaten kurulu!"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
if [ "$ikaynak" = "yerel" ]; then
|
||||
pkontrol=`basename $2 | grep -w "mps.lz"`
|
||||
if [ ! -z "$pkontrol" -a "$pkontrol" != "" ]; then
|
||||
paketad=`echo "$2" | cut -d'#' -f1`
|
||||
kkont=`kurulu_kontrol "$paketad"`
|
||||
if [ "$kkont" = "degil" ];then
|
||||
icerik_ekle "$2"
|
||||
else
|
||||
echo "$2 paketi zaten kurulu"
|
||||
fi
|
||||
else
|
||||
echo "yerelde mps paketi bulunamadı."
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
ana "$@"
|
||||
|
||||
#kurulum oncesi işler yapılır.
|
||||
#paket içeriği hedefe çıkarılır.
|
||||
#kurulum sonrası işler yapılır.
|
||||
#paket veritabanı guncellenir.
|
||||
#ldconfig tetiklenir.
|
||||
#ek olarak çakışma ve güncelleme-geriçekme kontrolleri yapılır.
|
|
@ -0,0 +1,2 @@
|
|||
mpsd -d -cf /etc/mpsd.conf
|
||||
for PACK in *.xz; do /tools/bin/pkgadd -r / $PACK;done
|
|
@ -0,0 +1 @@
|
|||
./lfs-mekanizma -td onsistem
|
|
@ -0,0 +1 @@
|
|||
python setup.py install
|
|
@ -0,0 +1,3 @@
|
|||
#test sonuclarını gor uygunsa -n i kaldır komutu ver.
|
||||
shopt -s globstar
|
||||
rename -n 's/Pkgfile/talimat/' **
|
|
@ -0,0 +1 @@
|
|||
mpsd -d -cf ../../bin/paketci.conf
|
|
@ -0,0 +1 @@
|
|||
grep -rli '${PKGMK_BUILDVER}' * | xargs -i@ sed -i 's/${PKGMK_BUILDVER}/#$version-/g' @
|
|
@ -0,0 +1,620 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# pkgutils
|
||||
#
|
||||
# Copyright (c) 2000-2005 Per Liden
|
||||
# Copyright (c) 2006-2007 by CRUX team (http://crux.nu)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
# USA.
|
||||
#
|
||||
|
||||
info() {
|
||||
echo "=======> $1"
|
||||
}
|
||||
|
||||
warning() {
|
||||
info "WARNING: $1" >&2
|
||||
}
|
||||
|
||||
error() {
|
||||
info "ERROR: $1" >&2
|
||||
}
|
||||
|
||||
get_filename() {
|
||||
local FILE="`echo $1 | sed 's|^.*://.*/||g'`"
|
||||
|
||||
if [ "$FILE" != "$1" ]; then
|
||||
FILE="$PKGMK_SOURCE_DIR/$FILE"
|
||||
fi
|
||||
|
||||
echo $FILE
|
||||
}
|
||||
|
||||
get_basename() {
|
||||
local FILE="`echo $1 | sed 's|^.*://.*/||g'`"
|
||||
echo $FILE
|
||||
}
|
||||
|
||||
check_pkgfile() {
|
||||
if [ "`type -t build`" != "function" ]; then
|
||||
error "Function 'build' not specified in $PKGMK_PKGFILE."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_directory() {
|
||||
if [ ! -d $1 ]; then
|
||||
error "Directory '$1' does not exist."
|
||||
exit 1
|
||||
# elif [ ! -w $1 ]; then
|
||||
# error "Directory '$1' not writable."
|
||||
# exit 1
|
||||
elif [ ! -x $1 ] || [ ! -r $1 ]; then
|
||||
error "Directory '$1' not readable."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
download_file() {
|
||||
info "Downloading '$1'."
|
||||
|
||||
if [ ! "`type -p wget`" ]; then
|
||||
error "Command 'wget' not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LOCAL_FILENAME=`get_filename $1`
|
||||
LOCAL_FILENAME_PARTIAL="$LOCAL_FILENAME.partial"
|
||||
DOWNLOAD_OPTS="--passive-ftp --no-directories --tries=3 --waitretry=3 \
|
||||
--directory-prefix=$PKGMK_SOURCE_DIR \
|
||||
--output-document=$LOCAL_FILENAME_PARTIAL"
|
||||
|
||||
if [ -f "$LOCAL_FILENAME_PARTIAL" ]; then
|
||||
info "Partial download found, trying to resume"
|
||||
RESUME_CMD="-c"
|
||||
fi
|
||||
|
||||
error=1
|
||||
|
||||
BASENAME=`get_basename $1`
|
||||
for REPO in ${PKGMK_SOURCE_MIRRORS[@]}; do
|
||||
REPO="`echo $REPO | sed 's|/$||'`"
|
||||
wget $RESUME_CMD $DOWNLOAD_OPTS $REPO/$BASENAME
|
||||
error=$?
|
||||
if [ $error == 0 ]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $error != 0 ]; then
|
||||
while true; do
|
||||
wget $RESUME_CMD $DOWNLOAD_OPTS $1
|
||||
error=$?
|
||||
if [ $error != 0 ] && [ "$RESUME_CMD" ]; then
|
||||
info "Partial download failed, restarting"
|
||||
rm -f "$LOCAL_FILENAME_PARTIAL"
|
||||
RESUME_CMD=""
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ $error != 0 ]; then
|
||||
error "Downloading '$1' failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mv -f "$LOCAL_FILENAME_PARTIAL" "$LOCAL_FILENAME"
|
||||
}
|
||||
|
||||
download_source() {
|
||||
local FILE LOCAL_FILENAME
|
||||
|
||||
for FILE in ${source[@]}; do
|
||||
LOCAL_FILENAME=`get_filename $FILE`
|
||||
if [ ! -e $LOCAL_FILENAME ]; then
|
||||
if [ "$LOCAL_FILENAME" = "$FILE" ]; then
|
||||
error "Source file '$LOCAL_FILENAME' not found (can not be downloaded, URL not specified)."
|
||||
exit 1
|
||||
else
|
||||
if [ "$PKGMK_DOWNLOAD" = "yes" ]; then
|
||||
download_file $FILE
|
||||
else
|
||||
error "Source file '$LOCAL_FILENAME' not found (use option -d to download)."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
unpack_source() {
|
||||
local FILE LOCAL_FILENAME COMMAND
|
||||
|
||||
for FILE in ${source[@]}; do
|
||||
LOCAL_FILENAME=`get_filename $FILE`
|
||||
case $LOCAL_FILENAME in
|
||||
*.tar.gz|*.tar.Z|*.tgz|*.tar.bz2|*.tbz2|*.tar.xz|*.txz|*.tar.lzma|*.zip|*.rpm)
|
||||
COMMAND="tar -p -o -C $SRC -xf $LOCAL_FILENAME" ;;
|
||||
*)
|
||||
COMMAND="cp $LOCAL_FILENAME $SRC" ;;
|
||||
esac
|
||||
|
||||
echo "$COMMAND"
|
||||
|
||||
$COMMAND
|
||||
|
||||
if [ $? != 0 ]; then
|
||||
if [ "$PKGMK_KEEP_WORK" = "no" ]; then
|
||||
rm -rf $PKGMK_WORK_DIR
|
||||
fi
|
||||
error " '$TARGET' derlenmesi basarisiz"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
make_md5sum() {
|
||||
local FILE LOCAL_FILENAMES
|
||||
|
||||
if [ "$source" ]; then
|
||||
for FILE in ${source[@]}; do
|
||||
LOCAL_FILENAMES="$LOCAL_FILENAMES `get_filename $FILE`"
|
||||
done
|
||||
|
||||
md5sum $LOCAL_FILENAMES | sed -e 's| .*/| |' | sort -k 2
|
||||
fi
|
||||
}
|
||||
|
||||
make_footprint() {
|
||||
pkginfo --footprint $TARGET | \
|
||||
sed "s|\tlib/modules/`uname -r`/|\tlib/modules/<kernel-version>/|g" | \
|
||||
sort -k 3
|
||||
}
|
||||
|
||||
check_md5sum() {
|
||||
local FILE="$PKGMK_WORK_DIR/.tmp"
|
||||
|
||||
cd $PKGMK_ROOT
|
||||
|
||||
if [ -f $PKGMK_MD5SUM ]; then
|
||||
make_md5sum > $FILE.md5sum
|
||||
sort -k 2 $PKGMK_MD5SUM > $FILE.md5sum.orig
|
||||
diff -w -t -U 0 $FILE.md5sum.orig $FILE.md5sum | \
|
||||
sed '/^@@/d' | \
|
||||
sed '/^+++/d' | \
|
||||
sed '/^---/d' | \
|
||||
sed 's/^+/NEW /g' | \
|
||||
sed 's/^-/MISSING /g' > $FILE.md5sum.diff
|
||||
if [ -s $FILE.md5sum.diff ]; then
|
||||
error "Md5sum mismatch found:"
|
||||
cat $FILE.md5sum.diff >&2
|
||||
|
||||
if [ "$PKGMK_KEEP_WORK" = "no" ]; then
|
||||
rm -rf $PKGMK_WORK_DIR
|
||||
fi
|
||||
|
||||
if [ "$PKGMK_CHECK_MD5SUM" = "yes" ]; then
|
||||
error "Md5sum not ok."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
error "Building '$TARGET' failed."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [ "$PKGMK_CHECK_MD5SUM" = "yes" ]; then
|
||||
if [ "$PKGMK_KEEP_WORK" = "no" ]; then
|
||||
rm -rf $PKGMK_WORK_DIR
|
||||
fi
|
||||
info "Md5sum not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
warning "Md5sum not found, creating new."
|
||||
make_md5sum > $PKGMK_MD5SUM
|
||||
fi
|
||||
|
||||
if [ "$PKGMK_CHECK_MD5SUM" = "yes" ]; then
|
||||
if [ "$PKGMK_KEEP_WORK" = "no" ]; then
|
||||
rm -rf $PKGMK_WORK_DIR
|
||||
fi
|
||||
info "Md5sum ok."
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
strip_files() {
|
||||
local FILE FILTER
|
||||
|
||||
cd $PKG
|
||||
|
||||
if [ -f $PKGMK_ROOT/$PKGMK_NOSTRIP ]; then
|
||||
FILTER="grep -v -f $PKGMK_ROOT/$PKGMK_NOSTRIP"
|
||||
else
|
||||
FILTER="cat"
|
||||
fi
|
||||
|
||||
find . -type f -printf "%P\n" | $FILTER | while read FILE; do
|
||||
case $(file -b "$FILE") in
|
||||
*ELF*executable*not\ stripped)
|
||||
strip --strip-all "$FILE"
|
||||
;;
|
||||
*ELF*shared\ object*not\ stripped)
|
||||
strip --strip-unneeded "$FILE"
|
||||
;;
|
||||
current\ ar\ archive)
|
||||
strip --strip-debug "$FILE"
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
compress_manpages() {
|
||||
local FILE DIR TARGET
|
||||
|
||||
cd $PKG
|
||||
|
||||
find . -type f -path "*/man/man*/*" | while read FILE; do
|
||||
if [ "$FILE" = "${FILE%%.gz}" ]; then
|
||||
gzip -9 "$FILE"
|
||||
fi
|
||||
done
|
||||
|
||||
find . -type l -path "*/man/man*/*" | while read FILE; do
|
||||
TARGET=`readlink -n "$FILE"`
|
||||
TARGET="${TARGET##*/}"
|
||||
TARGET="${TARGET%%.gz}.gz"
|
||||
rm -f "$FILE"
|
||||
FILE="${FILE%%.gz}.gz"
|
||||
DIR=`dirname "$FILE"`
|
||||
|
||||
if [ -e "$DIR/$TARGET" ]; then
|
||||
ln -sf "$TARGET" "$FILE"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
check_footprint() {
|
||||
local FILE="$PKGMK_WORK_DIR/.tmp"
|
||||
|
||||
cd $PKGMK_ROOT
|
||||
|
||||
if [ -f $TARGET ]; then
|
||||
make_footprint > $FILE.footprint
|
||||
if [ -f $PKGMK_FOOTPRINT ]; then
|
||||
sort -k 3 $PKGMK_FOOTPRINT > $FILE.footprint.orig
|
||||
diff -w -t -U 0 $FILE.footprint.orig $FILE.footprint | \
|
||||
sed '/^@@/d' | \
|
||||
sed '/^+++/d' | \
|
||||
sed '/^---/d' | \
|
||||
sed 's/^+/NEW /g' | \
|
||||
sed 's/^-/MISSING /g' > $FILE.footprint.diff
|
||||
if [ -s $FILE.footprint.diff ]; then
|
||||
error "Footprint mismatch found:"
|
||||
cat $FILE.footprint.diff >&2
|
||||
BUILD_SUCCESSFUL="no"
|
||||
fi
|
||||
else
|
||||
warning "Footprint not found, creating new."
|
||||
mv $FILE.footprint $PKGMK_FOOTPRINT
|
||||
fi
|
||||
else
|
||||
error "Package '$TARGET' was not found."
|
||||
BUILD_SUCCESSFUL="no"
|
||||
fi
|
||||
}
|
||||
|
||||
build_package() {
|
||||
local BUILD_SUCCESSFUL="no"
|
||||
|
||||
export PKG="/"
|
||||
export SRC="$PKGMK_WORK_DIR/src"
|
||||
umask 022
|
||||
|
||||
cd $PKGMK_ROOT
|
||||
rm -rf $PKGMK_WORK_DIR
|
||||
mkdir -p $SRC
|
||||
|
||||
info "Building '$TARGET'."
|
||||
|
||||
if [ "$PKGMK_DOWNLOAD" = "yes" ]; then
|
||||
download_source
|
||||
fi
|
||||
unpack_source
|
||||
|
||||
cd $SRC
|
||||
(set -e -x ; build)
|
||||
|
||||
|
||||
# cd $PKG
|
||||
|
||||
if [ $? = 0 ]; then
|
||||
BUILD_SUCCESSFUL="yes"
|
||||
|
||||
fi
|
||||
if [ "$PKGMK_KEEP_WORK" = "no" ]; then
|
||||
rm -rf $PKGMK_WORK_DIR
|
||||
fi
|
||||
|
||||
if [ "$BUILD_SUCCESSFUL" = "yes" ]; then
|
||||
info " '$TARGET' derleme basarili"
|
||||
else
|
||||
if [ -f $TARGET ]; then
|
||||
touch -r $PKGMK_ROOT/$PKGMK_PKGFILE $TARGET &> /dev/null
|
||||
fi
|
||||
error " '$TARGET' derleme basarisiz"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
install_package() {
|
||||
local COMMAND
|
||||
|
||||
info "Installing '$TARGET'."
|
||||
|
||||
if [ "$PKGMK_INSTALL" = "install" ]; then
|
||||
COMMAND="pkgadd $TARGET"
|
||||
else
|
||||
COMMAND="pkgadd -u $TARGET"
|
||||
fi
|
||||
|
||||
cd $PKGMK_ROOT
|
||||
echo "$COMMAND"
|
||||
$COMMAND
|
||||
|
||||
if [ $? = 0 ]; then
|
||||
info "Installing '$TARGET' succeeded."
|
||||
else
|
||||
error "Installing '$TARGET' failed."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
recursive() {
|
||||
local ARGS FILE DIR
|
||||
|
||||
ARGS=`echo "$@" | sed -e "s/--recursive//g" -e "s/-r//g"`
|
||||
|
||||
for FILE in `find $PKGMK_ROOT -name $PKGMK_PKGFILE | sort`; do
|
||||
DIR="`dirname $FILE`/"
|
||||
if [ -d $DIR ]; then
|
||||
info "Entering directory '$DIR'."
|
||||
(cd $DIR && $PKGMK_COMMAND $ARGS)
|
||||
info "Leaving directory '$DIR'."
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
clean() {
|
||||
local FILE LOCAL_FILENAME
|
||||
|
||||
if [ -f $TARGET ]; then
|
||||
info "Removing $TARGET"
|
||||
rm -f $TARGET
|
||||
fi
|
||||
|
||||
for FILE in ${source[@]}; do
|
||||
LOCAL_FILENAME=`get_filename $FILE`
|
||||
if [ -e $LOCAL_FILENAME ] && [ "$LOCAL_FILENAME" != "$FILE" ]; then
|
||||
info "Removing $LOCAL_FILENAME"
|
||||
rm -f $LOCAL_FILENAME
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
update_footprint() {
|
||||
if [ ! -f $TARGET ]; then
|
||||
error "Unable to update footprint. File '$TARGET' not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
make_footprint > $PKGMK_FOOTPRINT
|
||||
touch $TARGET
|
||||
|
||||
info "Footprint updated."
|
||||
}
|
||||
|
||||
build_needed() {
|
||||
local FILE RESULT
|
||||
|
||||
RESULT="yes"
|
||||
if [ -f $TARGET ]; then
|
||||
RESULT="no"
|
||||
for FILE in $PKGMK_PKGFILE ${source[@]}; do
|
||||
FILE=`get_filename $FILE`
|
||||
if [ ! -e $FILE ] || [ ! $TARGET -nt $FILE ]; then
|
||||
RESULT="yes"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
echo $RESULT
|
||||
}
|
||||
|
||||
interrupted() {
|
||||
echo ""
|
||||
error "Interrupted."
|
||||
|
||||
if [ "$PKGMK_KEEP_WORK" = "no" ]; then
|
||||
rm -rf $PKGMK_WORK_DIR
|
||||
fi
|
||||
|
||||
exit 1
|
||||
}
|
||||
|
||||
print_help() {
|
||||
echo "usage: `basename $PKGMK_COMMAND` [options]"
|
||||
echo "options:"
|
||||
echo " -i, --install build and install package"
|
||||
echo " -u, --upgrade build and install package (as upgrade)"
|
||||
echo " -r, --recursive search for and build packages recursively"
|
||||
echo " -d, --download download missing source file(s)"
|
||||
echo " -do, --download-only do not build, only download missing source file(s)"
|
||||
echo " -utd, --up-to-date do not build, only check if package is up to date"
|
||||
echo " -uf, --update-footprint update footprint using result from last build"
|
||||
echo " -if, --ignore-footprint build package without checking footprint"
|
||||
echo " -um, --update-md5sum update md5sum"
|
||||
echo " -im, --ignore-md5sum build package without checking md5sum"
|
||||
echo " -cm, --check-md5sum do not build, only check md5sum"
|
||||
echo " -ns, --no-strip do not strip executable binaries or libraries"
|
||||
echo " -f, --force build package even if it appears to be up to date"
|
||||
echo " -c, --clean remove package and downloaded files"
|
||||
echo " -kw, --keep-work keep temporary working directory"
|
||||
echo " -cf, --config-file <file> use alternative configuration file"
|
||||
echo " -v, --version print version and exit "
|
||||
echo " -h, --help print help and exit"
|
||||
}
|
||||
remove_locale() {
|
||||
cd $PKG/usr/share
|
||||
if [ -d locale/fr ]; then
|
||||
mv locale/fr fr
|
||||
fi
|
||||
rm -rf locale
|
||||
if [ -d fr ]; then
|
||||
mkdir locale
|
||||
mv fr locale/
|
||||
fi
|
||||
}
|
||||
parse_options() {
|
||||
while [ "$1" ]; do
|
||||
case $1 in
|
||||
-i|--install)
|
||||
PKGMK_INSTALL="install" ;;
|
||||
-u|--upgrade)
|
||||
PKGMK_INSTALL="upgrade" ;;
|
||||
-r|--recursive)
|
||||
PKGMK_RECURSIVE="yes" ;;
|
||||
-d|--download)
|
||||
PKGMK_DOWNLOAD="yes" ;;
|
||||
-do|--download-only)
|
||||
PKGMK_DOWNLOAD="yes"
|
||||
PKGMK_DOWNLOAD_ONLY="yes" ;;
|
||||
-utd|--up-to-date)
|
||||
PKGMK_UP_TO_DATE="yes" ;;
|
||||
-uf|--update-footprint)
|
||||
PKGMK_UPDATE_FOOTPRINT="yes" ;;
|
||||
-if|--ignore-footprint)
|
||||
PKGMK_IGNORE_FOOTPRINT="yes" ;;
|
||||
-um|--update-md5sum)
|
||||
PKGMK_UPDATE_MD5SUM="yes" ;;
|
||||
-im|--ignore-md5sum)
|
||||
PKGMK_IGNORE_MD5SUM="yes" ;;
|
||||
-cm|--check-md5sum)
|
||||
PKGMK_CHECK_MD5SUM="yes" ;;
|
||||
-ns|--no-strip)
|
||||
PKGMK_NO_STRIP="yes" ;;
|
||||
-f|--force)
|
||||
PKGMK_FORCE="yes" ;;
|
||||
-c|--clean)
|
||||
PKGMK_CLEAN="yes" ;;
|
||||
-kw|--keep-work)
|
||||
PKGMK_KEEP_WORK="yes" ;;
|
||||
-kl|--keep-locale)
|
||||
PKGMK_KEEP_LOCALE="yes" ;;
|
||||
-cf|--config-file)
|
||||
if [ ! "$2" ]; then
|
||||
echo "`basename $PKGMK_COMMAND`: option $1 requires an argument"
|
||||
exit 1
|
||||
fi
|
||||
PKGMK_CONFFILE="$2"
|
||||
shift ;;
|
||||
-v|--version)
|
||||
echo "`basename $PKGMK_COMMAND` (pkgutils) $PKGMK_VERSION"
|
||||
exit 0 ;;
|
||||
-h|--help)
|
||||
print_help
|
||||
exit 0 ;;
|
||||
*)
|
||||
echo "`basename $PKGMK_COMMAND`: invalid option $1"
|
||||
exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
local FILE TARGET
|
||||
|
||||
parse_options "$@"
|
||||
|
||||
if [ "$PKGMK_RECURSIVE" = "yes" ]; then
|
||||
recursive "$@"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for FILE in $PKGMK_CONFFILE $PKGMK_PKGFILE ; do
|
||||
if [ ! -f $FILE ]; then
|
||||
error "File '$FILE' not found."
|
||||
exit 1
|
||||
fi
|
||||
. $FILE
|
||||
done
|
||||
|
||||
check_directory "$PKGMK_SOURCE_DIR"
|
||||
check_directory "$PKGMK_PACKAGE_DIR"
|
||||
check_directory "`dirname $PKGMK_WORK_DIR`"
|
||||
|
||||
check_pkgfile
|
||||
|
||||
TARGET="$PKGMK_PACKAGE_DIR/$PKGMK_PKGFILE"
|
||||
|
||||
if [ "$PKGMK_CLEAN" = "yes" ]; then
|
||||
clean
|
||||
exit 0
|
||||
fi
|
||||
build_package
|
||||
exit 0
|
||||
}
|
||||
|
||||
trap "interrupted" SIGHUP SIGINT SIGQUIT SIGTERM
|
||||
|
||||
export LC_ALL=POSIX
|
||||
|
||||
readonly PKGMK_VERSION="5.32.0"
|
||||
readonly PKGMK_COMMAND="$0"
|
||||
readonly PKGMK_ROOT="$PWD"
|
||||
|
||||
PKGMK_CONFFILE="paketci.conf"
|
||||
PKGMK_PKGFILE="talimat"
|
||||
PKGMK_FOOTPRINT=".footprint"
|
||||
PKGMK_MD5SUM=".md5sum"
|
||||
PKGMK_NOSTRIP=".nostrip"
|
||||
|
||||
PKGMK_SOURCE_MIRRORS=()
|
||||
PKGMK_SOURCE_DIR="/mnt/lfs/sources"
|
||||
PKGMK_PACKAGE_DIR="$PWD"
|
||||
PKGMK_WORK_DIR="/tmp/work"
|
||||
|
||||
PKGMK_RECURSIVE="no"
|
||||
PKGMK_DOWNLOAD="no"
|
||||
PKGMK_DOWNLOAD_ONLY="no"
|
||||
PKGMK_UP_TO_DATE="no"
|
||||
PKGMK_UPDATE_FOOTPRINT="no"
|
||||
PKGMK_IGNORE_FOOTPRINT="no"
|
||||
PKGMK_FORCE="no"
|
||||
PKGMK_KEEP_WORK="no"
|
||||
PKGMK_UPDATE_MD5SUM="no"
|
||||
PKGMK_IGNORE_MD5SUM="yes"
|
||||
PKGMK_CHECK_MD5SUM="no"
|
||||
PKGMK_NO_STRIP="no"
|
||||
PKGMK_CLEAN="no"
|
||||
PKGMK_KEEP_LOCALE="no"
|
||||
main "$@"
|
||||
|
||||
# End of file
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
mkdir -p /paket_depo
|
||||
find /root -iname "*.mps.xz" -type f | xargs -I '{}' mv {} /paket_depo/
|
|
@ -0,0 +1,2 @@
|
|||
mkdir -p /paket_depo
|
||||
find /var/lib/pkg/depotrepo/ -iname "*.cards.tar.xz" -type f | xargs -I '{}' mv {} /paket_depo/
|
|
@ -0,0 +1,3 @@
|
|||
perl Makefile.PL PREFIX=/tools
|
||||
make test
|
||||
make install
|
|
@ -0,0 +1 @@
|
|||
python setup.py install --prefix=/tools
|
|
@ -0,0 +1,2 @@
|
|||
grep -rli '${PKGMK_BUILDVER}' * | xargs -i@ sed -i 's/${PKGMK_BUILDVER}/#$version-/g' @
|
||||
grep -rli 'cards.tar' * | xargs -i@ sed -i 's/cards.tar/mps/g' @
|
|
@ -0,0 +1,54 @@
|
|||
#!/bin/bash
|
||||
# Simple script to list version numbers of critical development tools
|
||||
export LC_ALL=C
|
||||
bash --version | head -n1 | cut -d" " -f2-4
|
||||
MYSH=$(readlink -f /bin/sh)
|
||||
echo "/bin/sh -> $MYSH"
|
||||
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
|
||||
unset MYSH
|
||||
|
||||
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
|
||||
bison --version | head -n1
|
||||
|
||||
if [ -h /usr/bin/yacc ]; then
|
||||
echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
|
||||
elif [ -x /usr/bin/yacc ]; then
|
||||
echo yacc is `/usr/bin/yacc --version | head -n1`
|
||||
else
|
||||
echo "yacc not found"
|
||||
fi
|
||||
|
||||
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
|
||||
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
|
||||
diff --version | head -n1
|
||||
find --version | head -n1
|
||||
gawk --version | head -n1
|
||||
|
||||
if [ -h /usr/bin/awk ]; then
|
||||
echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
|
||||
elif [ -x /usr/bin/awk ]; then
|
||||
echo awk is `/usr/bin/awk --version | head -n1`
|
||||
else
|
||||
echo "awk not found"
|
||||
fi
|
||||
|
||||
gcc --version | head -n1
|
||||
g++ --version | head -n1
|
||||
ldd --version | head -n1 | cut -d" " -f2- # glibc version
|
||||
grep --version | head -n1
|
||||
gzip --version | head -n1
|
||||
cat /proc/version
|
||||
m4 --version | head -n1
|
||||
make --version | head -n1
|
||||
patch --version | head -n1
|
||||
echo Perl `perl -V:version`
|
||||
sed --version | head -n1
|
||||
tar --version | head -n1
|
||||
makeinfo --version | head -n1
|
||||
xz --version | head -n1
|
||||
|
||||
echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
|
||||
if [ -x dummy ]
|
||||
then echo "g++ compilation OK";
|
||||
else echo "g++ compilation failed"; fi
|
||||
rm -f dummy.c dummy
|
|
@ -0,0 +1,4 @@
|
|||
ack="malfs mekanizma guncelleme"
|
||||
git add .
|
||||
git commit -a -m "$ack"
|
||||
git push origin master
|
Binary file not shown.
|
@ -0,0 +1,163 @@
|
|||
antiX gfxboot Configuration README
|
||||
==================================
|
||||
Gfxboot is highly configurable. Some configuration changes
|
||||
require a recompile but very many changes can be made by editing
|
||||
the gfxboot.cfg file. In addition, the user can create up to 3
|
||||
custom menus by making text files called options1.men,
|
||||
custom1.men, and custom2.men.
|
||||
|
||||
|
||||
The gfxboot.cfg File
|
||||
====================
|
||||
This file is laid out in sections. The sections are named like
|
||||
this:
|
||||
|
||||
[base]
|
||||
|
||||
The base section is processed first. Only sections that appear
|
||||
in the layout= line in the base section will be processed. They
|
||||
are read in the order they appear in that line.
|
||||
|
||||
NOTE: Options are "first come, first served" so in order to
|
||||
override an existing setting your new setting must either be in
|
||||
an earlier section or come before (above) the setting you want to
|
||||
override.
|
||||
|
||||
Lines starting with the characters ; or # will be ignored. You
|
||||
assigned menus to Fn function keys with lines like:
|
||||
|
||||
key.F1=help
|
||||
|
||||
You can assign more than 6 Fn keys but you are likely to run out
|
||||
of room if you do.
|
||||
|
||||
|
||||
gfxboot.cfg Settings
|
||||
--------------------
|
||||
The majority of the settings affect colors and the position of
|
||||
elements on the screen. Most, but not all, colors can be
|
||||
adjusted.
|
||||
|
||||
The term "panel" refers to the row of Fn Function keys near the
|
||||
bottom of the screen. You can move it around with panel.xoffset
|
||||
and panel.yoffset. You adjust the gap between Fn keys with
|
||||
panel.gap.
|
||||
|
||||
The term "sbox" stands for "selection box". When enabled it
|
||||
draws a box around each selected menu item in the panel.
|
||||
|
||||
Most of the gfxboot.cfg color options should be obvious.
|
||||
Here are is a brief description of some of the less obvious
|
||||
options that were added:
|
||||
|
||||
timeout.fg The color of the timeout icon(s)
|
||||
|
||||
timeout.leftside Move the timeout icons to the left of
|
||||
the selected main menu item
|
||||
|
||||
timeout.copies Make this many timeout icons and cycle
|
||||
through each one successively
|
||||
|
||||
timeout.gap The gap in pixels between multiple
|
||||
timeout icons
|
||||
|
||||
timeout.revframes Run the timeout frames in reverse order
|
||||
|
||||
timeout.test Don't erase timeout icons when they normally
|
||||
get erased. This makes it easier to take
|
||||
screen shots show the timeout icon(s).
|
||||
|
||||
sbox.enabled Draw a bordered box around each selected
|
||||
item at the bottom of the screen
|
||||
|
||||
menu.xoffset Move the pop-up menus and their selected
|
||||
items this many pixels to the *left*.
|
||||
|
||||
panel.xoffset Move the entire panel this many pixels
|
||||
to the right
|
||||
|
||||
panel.yoffset Move the entire panel this many pixels up
|
||||
|
||||
panel.gap The gap between items in the panel
|
||||
|
||||
main.rtl.xoff Offset the main menu for right-to-left
|
||||
languages
|
||||
|
||||
Custom Menus
|
||||
============
|
||||
You can create 3 different custom menus using files named
|
||||
options1.men, custom1.men, and custom2.men. You would make
|
||||
corresponding Fn key assignments like this:
|
||||
|
||||
key.F4=options1
|
||||
key.F5=custom1
|
||||
key.F6=custom2
|
||||
|
||||
|
||||
Custom Menu file Format
|
||||
-----------------------
|
||||
The file format for .men files is straightforward. The first
|
||||
line is the title. The following lines are the label followed by
|
||||
optional spaces (not tabs) a back-tick character (`) and then the
|
||||
boot parameters associated with the label.
|
||||
|
||||
|
||||
Custom Desktop Menu
|
||||
-------------------
|
||||
TL;DR: don't use it
|
||||
|
||||
The Desktop menu can be customized by using a desktop.men file.
|
||||
The format is slightly different. There is no title line, just
|
||||
menu entries. The title is always "Desktop" (or a translations
|
||||
thereof). The last menu entry for a command line interface will
|
||||
be added automatically.
|
||||
|
||||
You can set a new/different default desktop by putting its name
|
||||
in a file called:
|
||||
|
||||
desktop
|
||||
|
||||
This will add a new entry at the top of the Desktop menu. The
|
||||
label will be whatever is set by this parameter and the parameter
|
||||
will be the empty string. The parameter string for the first
|
||||
entry in the desktop.men file will now be used because it is no
|
||||
longer the default. If there is an entry in the desktop file
|
||||
with a label that matches the default.desktop, it will be
|
||||
ignored.
|
||||
|
||||
Finally, the desktop.men file may get overwritten when you run
|
||||
the update-default-desktop program. Therefore we suggest that
|
||||
you don't use desktop.men as a 4th custom menu and just make use
|
||||
of the 3 other menus that you can customize.
|
||||
|
||||
Predefined Function Keys
|
||||
========================
|
||||
Three of the Fn function keys were preassigned:
|
||||
|
||||
F10 Power-off/Reboot
|
||||
F11 Toggle sbox enabled
|
||||
F12 Show boot parameters
|
||||
|
||||
Enabling the F7 Save Menu
|
||||
=========================
|
||||
If a file called enable.save exists and is not empty then if the
|
||||
F7 menu does not exist or if it is set to "dpi" then it is
|
||||
replaced by the "F7 Save" menu. The purpose of this feature is
|
||||
to allow us to enable the "F7 Save" menu only on Live systems on
|
||||
read-write media.
|
||||
|
||||
Default Menu settings
|
||||
=====================
|
||||
The default entry for most of our menus can be selection with a
|
||||
<menu-name>.def file. The file must contain the parameters
|
||||
of the default entry in the correct order and with the correct
|
||||
spacing. This format is convenient for setting the defaults to
|
||||
the current menu choices since the only information we have to go
|
||||
on is the list of all the boot parameters.
|
||||
|
||||
For historical reasons there are two exceptions to this rule.
|
||||
Both the language and the timezone must have the leading
|
||||
"<name>=" stripped off. So you would use "fr" not "lang=fr"
|
||||
and you would use "America/Denver" not "tz=American/Denver".
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
|
@ -0,0 +1,9 @@
|
|||
Rox-Fluxbox `desktop=rox-fluxbox
|
||||
Space-Fluxbox `desktop=space-fluxbox
|
||||
Fluxbox `desktop=fluxbox
|
||||
Rox-Jwm `desktop=rox-jwm
|
||||
Space-Jwm `desktop=space-jwm
|
||||
Jwm `desktop=jwm
|
||||
Dwm `desktop=dwm
|
||||
Wmii `desktop=wmii
|
||||
|
Binary file not shown.
|
@ -0,0 +1,11 @@
|
|||
Break Pnts
|
||||
break pnt 1 `bp=1,e db+
|
||||
break pnt 2 `bp=2,e db+
|
||||
break pnt 3 `bp=3,e db+
|
||||
break pnt 4 `bp=4,e db+
|
||||
break pnt 5 `bp=5,e db+
|
||||
break pnt 6 `bp=6,e db+
|
||||
break pnt 7 `bp=7,e db+
|
||||
break pnt 8 `bp=8,e db+
|
||||
break pnt 9 `bp=9,e db+
|
||||
all `bp=a db+
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,73 @@
|
|||
mainHelpWELCOME to MX Linux
|
||||
The demo user password is "demo" (no quotes)
|
||||
The root password is "root" (no quotes)
|
||||
|
||||
• helpF1: the Help System • languageF2: Select Language • timezoneF3: Select Timezone • options1F4: Miscellaneous Options • video_modeF5: Video Mode • consoleF6: Console • saveF7: Save Bootloader Settings • persistencePersistence Options • bo_instructBoot Option Instructions • bo_antixMX Boot Options • aboutAbout MX Linux
|
||||
Press the [Esc] key to leave the help systemhelpUsing the Help System The help system consists of a set of linked pages that you can navigate through with the follow keys.
|
||||
• [Up Arrow] -- highlight previous link • [Down Arrow] -- highlight next link • [Left Arrow], [Backspace] -- return to previous page • [Right Arrow], [Enter], [Space] -- follow link • [Page Up], [Home] -- go to first link on page • [Page Down], [End] -- go to last link on page • [Esc] -- leave help
|
||||
Using [Left Arrow] or [Backspace] will take you to your place (same highlighted link) on the previous page.
|
||||
Go to general-helpGeneral Help
|
||||
Return to the mainMain Menu | prev | general-helpnextgeneral-helpGeneral HelpThis bootloader lets you select which program to launch (MX Linux or memtest) and in the case of MX Linux select which boot parameters (cheat codes) get set when the program launches. There are 3 ways to do this:
|
||||
• Main Menu
|
||||
[Up Arrow] and [Down Arrow] select which program to run and some boot options. [Enter] launches the program. • Boot Options
|
||||
[Left Arrow], [Right Arrow], and [Backspace] edit some main menu options directly. You can also type in new options. • Function Key Pop-up Menus
|
||||
[F2] through [f6] open menus. Navigate them with the arrow keys. [Enter] selects highlighted option. [Esc] leaves the pop-up menu without selecting an entry.
|
||||
Go to helpUsing the Help System
|
||||
Return to the mainMain Menu | helpprev | languagenextlanguageF2: Select LanguagePress F2 to get a list of supported languages. Select your language. This will automatically set the keyboard layout and the timezone. If your country has more than one timezone then use F3 to explicitly set the timezone for your area.
|
||||
The menu is an easy shortcut for entering lang=language-code directly on the boot line.
|
||||
Return to the mainMain Menu | general-helpprev | timezonenexttimezoneF3: Select TimezonePress F3 to get at list of cities in various time zones. The cities are listed time zone order so they circle the globe eastward. If your area uses Daylight Savings Time then make sure you select a city that does also. Your system will be started using the timezone selected. Locations that observe Daylight Savings Time are marked with a trailing * (asterisk).
|
||||
NOTE: You do not have to use this option if you have set a language and your country has only one time-zone.
|
||||
The menu is an easy shortcut for entering tz=timezone directly on the boot line.
|
||||
Return to the mainMain Menu | languageprev | options1nextoptions1F4: Miscellaneous Options • check md5
|
||||
check integrity of the install media. • check fs
|
||||
check integrity of the LivUSB and persistent file systems (if any). • to ram
|
||||
copy the compressed file system to RAM. This takes extra time when you boot but results in a very fast system (if you have enough RAM). • no usb-2
|
||||
Disable all usb-2 devices. This helps a few older systems boot LiveUSB. • no acpi
|
||||
Disable the whole ACPI system. May be useful if your computer does not support ACPI or its implementation causes random reboots or system lockups. • HP laptop
|
||||
Some HP laptops need a cheat to get brightness working correctly.video_modeF5: Video ModeThere are 3 options. Default should work for most users.
|
||||
• default
|
||||
Detect the correct video driver and screen resolution. • vesa
|
||||
Use the Vesa driver. Disable modeset • safe
|
||||
Use X11 defaults. Disable modeset.
|
||||
You can also set the resolution by directly typing in xres=resolution. This is useful if you want to force a resolution.
|
||||
Return to the mainMain Menu | mountingprev | consolenextconsoleF6: ConsoleSets the size of the boot console.
|
||||
Return to the mainMain Menu | video_modeprev | savenextsaveF7: Save Bootloader SettingsOn LiveUSBs and Frugal installs, the F7 Save menu should appear.
|
||||
LiveCDs have a dpiDPI menu instead.
|
||||
• menus
|
||||
Save the current menus settings as the defaults. • custom
|
||||
Create/replace a Custom main menu entry with all the options that were typed in that don't exist in the menus. • both
|
||||
Save the current menu settings and create/replace the custom main entry. • reset
|
||||
Restore the original menu defaults. Does not affect the main menu.
|
||||
Return to the mainMain Menu | consoleprev | dpinextdpiSet X-Windows Dots per InchThe DPI (dots per inch) scales most font sizes inside of X-windows. The larger the DPI, the larger the fonts will be. The default value is 96.
|
||||
Return to the saveF7 Save menu.
|
||||
Return to the mainMain Menu | saveprev | persistencenextpersistencePersistence OptionsPersistence allows you to save files and settings between reboots. There are three types of persistence in the main menu.
|
||||
• Root Persistence
|
||||
Save all the changes to the file-system in RAM and then transfer these changes to disk right before you shutdown or reboot. Fast, but space is limited by how much RAM you have. • Static Root Persistence
|
||||
Saves all your file-system changes directly to a file. This can be slow but it requires no extra RAM and no changes need to be transfered when you shutdown. • Home Persistence
|
||||
Only save changes to files and directories under /home. This will include all of your bookmarks and personal settings. Like static root persistence, changes are stored immediately to a file but in this case speed is almost never an issue.
|
||||
Return to the mainMain Menu | dpiprev | bo_instructnextbo_instructBoot Option InstructionsThere are many boot options available. They are usually only necessary if your system will not boot properly. To use the boot options just place the appropriate code in the Boot Options box at the bottom of the main screen. You may also need to edit or delete options that are already in the Boot Options box.
|
||||
You can't make changes permanent on a LiveCD or a LiveDVD. You have to enter them each time you boot. You can make permanent changes on some LiveUSBs.
|
||||
Go to bo_antixMX Boot Options
|
||||
Go to mm_bootKernel Boot Options
|
||||
Return to mainMain Menu | persistenceprev | bo_antixnextbo_antixMX Boot OptionsThese are options that are only available in MX
|
||||
• lean -- disable some services including wicd for a fast boot • mean -- disable dhclient (Internet connection) • Xtralean -- disable more services for a faster boot • nodbus -- disable dbus service • dpi=XX -- set dpi. Default is 96
|
||||
NOTE: Four of these options are combined into the single antiX= option. For example antiX=LMX.
|
||||
• L stands for lean • M stands for mean • X stands for Xtralean • D stands for nodbus
|
||||
Back to bo_instructBoot Option Instructions
|
||||
Return to mainMain Menu | bo_instructprev | mm_bootnextmm_bootKernel Boot OptionsSelect a Boot Option to learn more about it.
|
||||
• bo_acpiACPI -- Advanced Configuration and Power Interface • bo_ideIDE DMA -- enable/disable DMA for IDE-Drives • bo_nonoXXXX -- skip detection of specific hardware • bo_pciPCI -- options for non-working PS2 mice and bad PCI controllers
|
||||
Back to bo_instructBoot Option Instructions
|
||||
Return to the mainMain Menu | bo_antixprev | bo_acpinextbo_acpiACPIACPI (Advanced Configuration and Power Interface) is a standard that defines power and configuration management interfaces between an operating system and the BIOS. By default, acpi is switched on when boot detects a BIOS newer than the year 2000. There are several commonly used parameters to control the behavior of ACPI:
|
||||
• pci=noacpi -- do not use ACPI to route PCI interrupts • acpi=off -- turn off ACPI completely • acpi=force -- turn on ACPI, for pre-2000 BIOS
|
||||
Return to mm_bootBoot Options | mainMain Menu | mm_bootprev | bo_nonextbo_nonoXXXX Skips detection of or enables support for specific hardware.
|
||||
• noauto -- turn off hardware autodetection • noparallel -- turn off parallel printer support • nopcmcia -- turn off PCMCIA support • nousb -- turn off usb device probing • nousebios -- enable NoUseBios mode needed for some Savage cards • smouse -- enable only a serial mouse • swcursor -- enable sw_cursor mode needed for some ATI and Trident cards
|
||||
Return to mm_bootBoot Options | mainMain Menu | bo_acpiprev | bo_pcinextbo_pciPCISome PCI options:
|
||||
• pci=irqmask=0x0e98 -- try this if your PS/2 mouse doesn't work • pci=bios -- workaround for bad PCI controllers
|
||||
Return to mm_bootBoot Options | mainMain Menu | bo_noprev | bo_idenextbo_idenodmaTo mitigate some hardware problems that occur with IDE hard drives, try this kernel parameter:
|
||||
ide=nodma -- switch off dma for IDE drives
|
||||
Return to mm_bootBoot Options | mainMain Menu | bo_pciprev | aboutnextaboutInformation about MXWeb site: http://www.mepiscommunity.org/mx14
|
||||
Forums: http://antix.freeforums.org
|
||||
Forums: http://forum.mepiscommunity.org/viewforum.php?f=91
|
||||
MX-14 is a midweight OS designed to combine an elegant and efficient desktop with simple configuration, solid performance and medium-sized footprint. It is a collaborative product from the Mepis and antiX developers and communities, relying on the excellent upstream work by Linux, Debian, and Xfce. It also incorporates the independent and innovative development products Whisker Menu, simsu and gottet, Midori Browser, smxi and inxi.
|
||||
MX is compiled to work with Pentium-class Intel and AMD processors or better. antiX will not work with 386 and 486 class processors. To install MX on a hard drive, at least 2.5 GB of free space is required and a minimum of 3.5 GB is recommended.
|
||||
Return to the mainMain Menu | bo_ideprev | next |