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
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
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
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
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
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
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
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
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
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
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
Może zainteresuj się Archem?
Offline
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
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
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
blkid >> /etc/fstab
a reszte recznie
Offline
Strony: 1