Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1





Cenzor wirtualnego świata
Istnieje jakieś narzędzie, które by pozwoliło wygenerować plik /etc/fstab podczas instalacji za pomocą debootstrap? W archu jest odpowiedzialny za to skrypt genfstab, który ma postać:
#!/bin/bash
shopt -s extglob
out() { printf "$1 $2\n" "${@:3}"; }
error() { out "==> ERROR:" "$@"; } >&2
msg() { out "==>" "$@"; }
msg2() { out " ->" "$@";}
die() { error "$@"; exit 1; }
in_array() {
local i
for i in "${@:2}"; do
[[ $1 = "$i" ]] && return
done
}
track_mount() {
mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}")
}
api_fs_mount() {
CHROOT_ACTIVE_MOUNTS=()
{ mountpoint -q "$1" || track_mount "$1" "$1" --bind; } &&
track_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev &&
track_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev &&
track_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid &&
track_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
track_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
track_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
track_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
}
api_fs_umount() {
umount "${CHROOT_ACTIVE_MOUNTS[@]}"
}
valid_number_of_base() {
local base=$1 len=${#2} i=
for (( i = 0; i < len; i++ )); do
(( (${2:i:1} & ~(base - 1)) == 0 )) || return
done
}
mangle() {
local i= chr= out=
unset {a..f} {A..F}
for (( i = 0; i < ${#1}; i++ )); do
chr=${1:i:1}
case $chr in
[[:space:]\\])
printf -v chr '%03o' "'$chr"
out+=\\
;;&
# fallthrough
*)
out+=$chr
;;
esac
done
printf '%s' "$out"
}
unmangle() {
local i= chr= out= len=$(( ${#1} - 4 ))
unset {a..f} {A..F}
for (( i = 0; i < len; i++ )); do
chr=${1:i:1}
case $chr in
\\)
if valid_number_of_base 8 "${1:i+1:3}" ||
valid_number_of_base 16 "${1:i+1:3}"; then
printf -v chr '%b' "${1:i:4}"
(( i += 3 ))
fi
;;&
# fallthrough
*)
out+=$chr
esac
done
printf '%s' "$out${1:i}"
}
dm_name_for_devnode() {
read dm_name <"/sys/class/block/${1#/dev/}/dm/name"
if [[ $dm_name ]]; then
printf '/dev/mapper/%s' "$dm_name"
else
# don't leave the caller hanging, just print the original name
# along with the failure.
print '%s' "$1"
error 'Failed to resolve device mapper name for: %s' "$1"
fi
}
fstype_is_pseudofs() {
# list taken from util-linux source: libmount/src/utils.c
local -A pseudofs_types=([anon_inodefs]=1
[autofs]=1
[bdev]=1
[binfmt_misc]=1
[cgroup]=1
[configfs]=1
[cpuset]=1
[debugfs]=1
[devfs]=1
[devpts]=1
[devtmpfs]=1
[dlmfs]=1
[fuse.gvfs-fuse-daemon]=1
[fusectl]=1
[hugetlbfs]=1
[mqueue]=1
[nfsd]=1
[none]=1
[pipefs]=1
[proc]=1
[pstore]=1
[ramfs]=1
[rootfs]=1
[rpc_pipefs]=1
[securityfs]=1
[sockfs]=1
[spufs]=1
[sysfs]=1
[tmpfs]=1)
(( pseudofs_types["$1"] ))
}
write_source() {
local src=$1 spec= label= uuid= comment=()
label=$(blkid -s LABEL -o value "$1" 2>/dev/null)
uuid=$(blkid -s UUID -o value "$1" 2>/dev/null)
# bind mounts do not have a UUID!
case $bytag in
'')
[[ $uuid ]] && comment=("UUID=$uuid")
[[ $label ]] && comment+=("LABEL=$label")
;;
LABEL)
spec=$label
[[ $uuid ]] && comment=("$src" "UUID=$uuid")
;;
UUID)
spec=$uuid
comment=("$src")
[[ $label ]] && comment+=("LABEL=$label")
;;
*)
[[ $uuid ]] && comment=("$1" "UUID=$uuid")
[[ $label ]] && comment+=("LABEL=$label")
[[ $bytag ]] && spec=$(blkid -s "$bytag" -o value "$1")
;;
esac
[[ $comment ]] && printf '# %s\n' "${comment[*]}"
if [[ $spec ]]; then
printf '%-20s' "$bytag=$spec"
else
printf '%-20s' "$(mangle "$src")"
fi
}
usage() {
cat <<EOF
usage: ${0##*/} [options] root
Options:
-L Use labels for source identifiers (shortcut for -t LABEL)
-p Avoid printing pseudofs mounts
-t TAG Use TAG for source identifiers
-U Use UUIDs for source identifiers (shortcut for -t UUID)
-h Print this help message
genfstab generates output suitable for addition to an fstab file based on the
devices mounted under the mountpoint specified by the given root.
EOF
}
if [[ -z $1 || $1 = @(-h|--help) ]]; then
usage
exit $(( $# ? 0 : 1 ))
fi
while getopts ':Lpt:U' flag; do
case $flag in
L)
bytag=LABEL
;;
U)
bytag=UUID
;;
p)
nopseudofs=1
;;
t)
bytag=${OPTARG^^}
;;
:)
die '%s: option requires an argument -- '\''%s'\' "${0##*/}" "$OPTARG"
;;
?)
die '%s: invalid option -- '\''%s'\' "${0##*/}" "$OPTARG"
;;
esac
done
shift $(( OPTIND - 1 ))
(( $# )) || die "No root directory specified"
root=$1; shift
if ! mountpoint -q "$root"; then
die "$root is not a mountpoint"
fi
if (( bylabel && byuuid )); then
die "cannot specify both -U and -L"
fi
# handle block devices
findmnt -Recvruno SOURCE,TARGET,FSTYPE,OPTIONS,FSROOT "$root" |
while read -r src target fstype opts fsroot; do
# default 5th and 6th columns
dump=0 pass=2
src=$(unmangle "$src")
target=$(unmangle "$target")
target=${target#$root}
if (( !foundroot )) && findmnt "$src" "$root" >/dev/null; then
# this is root. we can't possibly have more than one...
pass=1 foundroot=1
fi
# we don't fsck pseudofs
if fstype_is_pseudofs "$fstype"; then
(( nopseudofs )) && continue
pass=0
fi
if [[ $fsroot != / ]]; then
if [[ $fstype = btrfs ]]; then
opts+=,subvol=${fsroot#/}
else
# it's a bind mount
src=$(findmnt -funcevo TARGET "$src")$fsroot
if [[ $src -ef $target ]]; then
# hrmm, this is weird. we're probably looking at a file or directory
# that was bound into a chroot from the host machine. Ignore it,
# because this won't actually be a valid mount. Worst case, the user
# just re-adds it.
continue
fi
fstype=none
opts+=,bind
pass=0
fi
fi
# write one line
write_source "$src"
printf '\t%-10s' "/$(mangle "${target#/}")" "$fstype" "$opts"
printf '\t%s %s' "$dump" "$pass"
printf '\n\n'
done
# handle swaps devices
{
# ignore header
read
while read -r device type _ _ prio; do
options=defaults
if [[ $prio != -1 ]]; then
options+=,pri=$prio
fi
# skip files marked deleted by the kernel
[[ $device = *'\\040(deleted)' ]] && continue
if [[ $type = file ]]; then
printf '%-20s' "$device"
elif [[ $device = /dev/dm-+([0-9]) ]]; then
# device mapper doesn't allow characters we need to worry
# about being mangled, and it does the escaping of dashes
# for us in sysfs.
write_source "$(dm_name_for_devnode "$device")"
else
write_source "$(unmangle "$device")"
fi
printf '\t%-10s\t%-10s\t%-10s\t0 0\n\n' 'none' 'swap' "$options"
done
} </proc/swaps
# vim: et ts=2 sw=2 ft=sh:Niestety odpalenie go czy to na debianie czy na ubuntu live cd skutkuje poniższym komunikatem:
root@ubuntu:/home# ./genfstab -p -U /mnt findmnt: unknown column: FSROOT # /dev/mapper/deb_crypt-swap UUID=e0b1508e-ab42-4a88-8eda-1cc11a52097e none swap defaults 0 0
Jest generowany wpis tylko dla swap.
Tak się prezentuje dysk:
root@ubuntu:/home# lsblk -o name,fstype,mountpoint,label,uuid,ro,rm,size,type NAME FSTYPE MOUNTPOINT LABEL UUID RO RM SIZE TYPE sda 0 0 74.5G disk ├─sda1 ntfs WinXP 5668FA8468FA6263 0 0 28G part ├─sda2 ext4 /mnt/boot boot 27e5bccf-256b-4239-a3a4-c0ed81892869 0 0 957M part ├─sda3 0 0 1K part ├─sda5 crypto_LUKS a8bf24ad-c8da-4a4b-bb1b-647144a873c8 0 0 18.6G part ├─sda6 crypto_LUKS 194f4523-475d-45e7-9bfe-e1fe500c250a 0 0 18.6G part │ └─sda6_crypt (dm-0) LVM2_member k54xxU-RxHg-agNb-M2cY-AQh4-sKzx-PxRSBD 0 0 18.6G crypt │ ├─deb_crypt-root (dm-1) ext4 /mnt root 27cf5e5f-ffaa-4db0-8337-ecff43656386 0 0 12G lvm │ ├─deb_crypt-home (dm-2) ext4 /mnt/home home 1cbeec68-59c9-4d46-9db8-dfff06f13018 0 0 3G lvm │ ├─deb_crypt-tmp (dm-3) ext4 /mnt/tmp tmp b55c540a-573a-42a5-a648-bc037e2eb23f 0 0 2G lvm │ └─deb_crypt-swap (dm-4) swap [SWAP] e0b1508e-ab42-4a88-8eda-1cc11a52097e 0 0 1.6G lvm └─sda7 ext4 /mnt/media/backup backup c751ab48-fe9b-4c83-920e-d3205c6ba7ff 0 0 8.4G part sdb 0 1 14.5G disk ├─sdb1 ext4 /media/ubuntu/arch arch 77ef557b-c739-4d96-8072-1aa8ac2ab20f 0 1 6.6G part ├─sdb2 0 1 4.9G part └─sdb3 vfat /media/ubuntu/fat fat 9798-CEE7 0 1 3.1G part sr0 iso9660 /cdrom Ubuntu 13.04 i386 0 1 4.4G rom loop0 squashfs /rofs 1 0 757.3M loop
Jak debian z instalatora generuje /etc/fstab, może da radę wyciągnąć coś z niego i ręcznie odpalić ?
Offline







Podobno człowiek...;)








Debootsrap z dzialającego systemu?
Skopiować i zmienić wpis dla partycji root nie wystarczy?
Przecież na dzialąjącym systemie musisz mieć dzialający, poprawny debootstrap, chyba że ten debootstrap na Windzie odpaliłeś, jeśli tak, to gratuluję. :D
Offline





Cenzor wirtualnego świata
No jest odpalony na ubuntu live-cd. Pobrał pakiety, zrobił swoje i teraz system czeka na konfigurację. Ręcznie mi się nie chce pisać za bardzo tych linijek w /etc/fstab. Jakby to była jedna partycja to może jeszcze jakoś bym wytrzymał. xD
Offline







Podobno człowiek...;)








Ubuntu Live myszki nie obsluguje? koniec świata. :D
Robisz wpis dla jednej partycji, potem 127 razy kopiujesz ten wpis, po czym wpisujesz 127 punktow montowania, i masz wszystkie 128 partycji usiawione.
Poza tym, możesz na zywca kopiować wpisy z wyniku
cat /proc/mounts
Może nie wszystkie, ale wygląda na to, że mają format zgodny z fstab.
Z resztą rzuć okiem, jak ci jakieś jeszcze zostało, na to:
http://stackoverflow.com/questions/13645778/completely-missing-fstab
Masz tu z resztą mój fstab na wzór:
proc /proc proc defaults 0 0 /dev/sda1 / ext4 noatime,acl,data=writeback,barrier=0,nobh,errors=remount-ro 0 0 /dev/sda3 /home ext4 noatime,acl,usrquota,grpquota,nodev,nosuid,barrier=0 0 2 /dev/sda9 none swap sw 0 0 /dev/sda5 /media/box reiserfs noatime,acl,usrquota,grpquota,nodev,nosuid,noexec 0 2 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto,noexec,nosuid,nodev,utf8,mode=1777 0 0 /dev/sda7 /Debian ext4 noatime,acl 0 2 /dev/sda8 /G8 ext4 noatime,acl 0 2 tmpfs /tmp tmpfs noatime,nosuid,nodev,mode=1777 0 0 tmpfs /var/tmp tmpfs noatime,size=3G,mode=1777 0 0 tmpfs /var/run tmpfs noatime,noexec,nosuid,nodev,mode=1777 0 0
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2013-06-06 14:07:47)
Offline





Cenzor wirtualnego świata
E to jakiś sposób na murzyna. xD
cat /proc/mounts > /etc/fstab, edit as needed -- to już lepsze ale naprawdę nie ma żadnego skryptu czy coś? Jak instalator debiana sobie z tym radzi? Robi "wpis dla jednej partycji, potem 127 razy kopiuje ten wpis, po czym wpisuje 127 punktow montowania"? xD
Offline







Podobno człowiek...;)








Tablica GPT obsuguje max 128 partycji fizycznych, także myślałem, że chcesz ją wykorzystać totalnie. :D
Ostatnio edytowany przez Jacekalex (2013-06-06 14:09:57)
Offline





Cenzor wirtualnego świata
Na archu mam tak ładnie wygenerowane:
# # /etc/fstab: static file system information # # <file system> <dir> <type> <options> <dump> <pass> # /dev/mapper/arch_crypt-root UUID=41d6214c-6b59-4324-a5c1-983400c0dfc3 / ext4 rw,relatime,data=ordered 0 1 # /dev/sda2 UUID=27e5bccf-256b-4239-a3a4-c0ed81892869 /boot ext4 rw,relatime,data=ordered 0 2 # /dev/mapper/arch_crypt-home UUID=820f959c-e88a-47fb-8d2d-a47e094a26b1 /home ext4 rw,relatime,data=ordered 0 2 # /dev/mapper/arch_crypt-tmp UUID=b1299e95-5fe8-4d4b-b5b7-2d5ca96a3026 /tmp ext4 rw,relatime,data=ordered 0 2 # /dev/sda7 LABEL=backup UUID=c751ab48-fe9b-4c83-920e-d3205c6ba7ff /media/backup ext4 rw,relatime,data=ordered 0 2 # /dev/mapper/arch_crypt-swap UUID=ba9a3d82-b83f-4903-9c4b-71b51bb151de none swap defaults 0 0
I w tym /proc/mounts nie ma UUID. xD
Offline







Podobno człowiek...;)








A masz w Archowym fstab partycję Debiana?
Czy to jest na innym kompie?
Do skrawdzenia uuid partycji sluży
blkid
A poza tym jest kilka klikajek do fstaba, kiedyś był mount-manager, jest też jakiś palimpsest,
takze możesz w chroocie odpalić, i wyklikac co trzeba.
EDIT:
apt-cache search palimpsest gnome-disk-utility - Zarządzanie i konfiguracja dysków oraz mediów
*buntu nawet powinien mieć go na Live.
Ostatnio edytowany przez Jacekalex (2013-06-06 14:53:07)
Offline





Cenzor wirtualnego świata
W sumie to już wyjście blkid jest w miarę przyzwoite:
/dev/sda1: LABEL="boot" UUID="1388432a-9bc1-47e8-a977-1a740e9e61f6" TYPE="ext4"
Można by to łatwo przepisać do:
# /dev/sda1: LABEL="boot" UUID="1388432a-9bc1-47e8-a977-1a740e9e61f6" ... ext4
Ale to nadal nie jest to czego ja oczekuję.
Jacekalex napisał(-a):
A masz w Archowym fstab partycję Debiana?
Nie mam ale mógłbym odpalić arch live-cd, otworzyć wszystkie zaszyfrowane kontenery, podmontować wszystkie partycje i wygenerować fstab i pozmieniać wpisy. Ale to też nie jest drogą którą chce iść. Na dobrą srpawę w AUR jest https://aur.archlinux.org/packages/debootstrap/ i może by dało radę zainstalować debiana z arch live-cd zamiast ubuntu i bym wtedy bez problemu wygenerował sobie ten pliczek.
Ale patrząc po zainstalowanym debianie z instalatora fstab ma postać:
morfik:~/Desktop$ cat /etc/fstab # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> #Entry for /dev/dm-1 : UUID=36283630-3b78-48be-8267-a9d84ca26522 / ext4 errors=remount-ro,commit=30 0 1 #Entry for /dev/sda1 : UUID=1388432a-9bc1-47e8-a977-1a740e9e61f6 /boot ext4 noatime,commit=30 0 2 #Entry for /dev/dm-7 : UUID=f3c36c8a-e442-4841-a8c7-a863e0383486 /tmp ext2 noatime 0 2 #Entry for /dev/dm-3 : UUID=db8a5b7b-b50b-4883-a0a0-361d099a7f84 /var ext4 noatime,commit=30 0 2 #Entry for /dev/dm-5 : UUID=6ef8183a-1493-4321-bfc3-68b46f2fee89 /var/cache/apt ext4 noatime,commit=30 0 2 #Entry for /dev/dm-4 : UUID=21a84e78-79aa-4750-87b1-458dcdfe4d81 /var/log ext4 commit=30 0 2 #Entry for /dev/sda8 : UUID=4d57a799-631b-4ebd-a40f-1f8695a405f2 /media/Server ext3 user_xattr,commit=30 0 2 #Entry for /dev/sda5 : UUID=5AF418976A7CB32C /media/ntfs ntfs-3g defaults,locale=pl_PL.UTF-8 0 0 #Entry for /dev/dm-8 : UUID=d1443a72-1588-458a-b124-d44c6db0814e /usr ext4 noatime,commit=30 0 2 #Entry for /dev/dm-2 : UUID=bff005d0-c13d-4ca0-a956-c6141e0ca300 /home ext4 noatime,commit=30 0 2 #Entry for /dev/dm-6 : UUID=e3e57b86-30e6-4ba2-b18c-c1ea6034589e none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Także coś go musiało wygenerować. Pytanie jest co. xD
palimpsest — mam to na debianie zainstalowane ale tam nic od generowania fstaba nie widzę. Są opcję od formatu, zarządzenie partycjami, dane smart i test wydajności. I nawet można hasło do zaszyfrowanego lvm zmienić. xD
Offline





Cenzor wirtualnego świata
Wychodzi na to, że util-linux, który jest w debianie w wersji 2.20.1-5.4 nie potrafi sprostać wymaganiom skryptu genfstab z archa. Tamten skrypt wymaga jednej z nowszych wersji tego pakietu i dlatego wszystko się pieprzy. xD
Czy istnieje możliwość w jakiś prosty sposób zaktualizować ten pakiet? On jest z kategorii essential i w przypadku tych pakietów jest wielce prawdopodobne, że system się rozleci, tak jak się rozleciał u mnie przy próbie ręcznego budowania paczki i próbie aktualizacji tego pakietu -- systemu nie udało się uratować, nawet wgrywając starą wersję paczki. xD
Z tego co się dowiedziałem, trzeba by wersji co najmniej 2.22 -- https://www.kernel.org/pub/linux/utils/util-linux/v2.22/ -- są jakieś wieści kiedy ta paczka zostanie zaktualizowana w debianie?
Offline



Członek DUG




Może zainteresuj się Archem?

Offline





Szczawiożerca






Podczas instalacji generują to skrypty partmana:
Chyba ten: partman-target
W sumie to już wyjście blkid jest w miarę przyzwoite:
Kod:
/dev/sda1: LABEL="boot" UUID="1388432a-9bc1-47e8-a977-1a740e9e61f6" TYPE="ext4"Można by to łatwo przepisać do:
Kod:
# /dev/sda1: LABEL="boot" UUID="1388432a-9bc1-47e8-a977-1a740e9e61f6" ... ext4Ale to nadal nie jest to czego ja oczekuję.
Czego w końcu oczekujesz? Narzędzi z Archa działających w Debianie?
Offline





Cenzor wirtualnego świata
Ja chce mieć dwa systemy. Póki co zamroziłem sobie ten genfstab, jak dobrze pójdzie za rok albo dwa będę mógł go używać! xD
EDIT:
@yossarian -- gdyby ten pakiet był aktualny, nie było by problemu.
Rzucę okiem na partman-target
Ostatnio edytowany przez morfik (2013-06-13 12:19:48)
Offline



Członek DUG




yossarian napisał(-a):
Czego w końcu oczekujesz? Narzędzi z Archa działających w Debianie?
Wiesz, dla niektórych to nic nadzwyczajnego :)
https://aur.archlinux.org/packages/portage-git/
https://aur.archlinux.org/packages/ies4linux/
https://aur.archlinux.org/packages/dpkg/
https://aur.archlinux.org/packages/debianutils/
https://aur.archlinux.org/packages/checkbashisms/
https://aur.archlinux.org/packages/rpm/
Ostatnio edytowany przez dominbik (2013-06-13 14:42:15)

Offline




Imperator





blkid >> /etc/fstab
a reszte recznie
Offline
Strony: 1