1. 程式人生 > >能當主力,能入虛擬機器,還能隨時打包帶走,Linux 就是這麼強大

能當主力,能入虛擬機器,還能隨時打包帶走,Linux 就是這麼強大

這裡介紹一下自己管理自己的Linux桌面的一點經驗吧,我覺得還是有不少可取之處的。先來說一下大多數人管理Linux桌面的方法有哪些不方便的地方吧:

  • 買新電腦了,又得在新電腦上安裝Linux,安裝各種軟體,各種庫,各種開發環境,配置各種服務,真麻煩。
  • 最近一直在用電腦A,幹了好多事情安裝了好多軟體,也配置了不少開發環境跟各種服務,然而處於某種原因,我又要開始使用好久沒用過的電腦B了,難道我要把在A上的做的各種配置在B上再重新做一遍?
  • 在Windows下做著PPT呢,發現需要調出自己之前的程式,然後根據若干組輸入跑幾個結果畫張圖好插到PPT裡,然而這個程式是在Linux下寫的,編譯等的過程也嚴重依賴自己用的Linux環境,重啟進Linux拿到結果再回Windows太不方便,想在Windows下配置好環境把自己的程式跑通更不容易。
  • 要對系統安裝某個軟體,或者進行一些比較危險的更新操作(要知道Archlinux滾動更新滾掛了太正常了),擔心把系統搞掛了,系統備份又實在太麻煩,要真掛了,系統恢復起來更麻煩。
  • 我一直用Archlinux做主力,然而最近做的某件事情要用某個軟體,這個軟體官方只給了Ubuntu上的安裝方式,Archlinux裡面沒有相應的包,在Archlinux上手動安裝也太不方便。裝個Ubuntu,然後暫時用幾天Ubuntu吧,也是夠折騰的。更何況有時候只是想用一小下而已,怎樣才能最小化自己在折騰上浪費的時間呢?
  • 有的軟體官方軟體倉庫裡面沒有,而make install的話則會在系統中安裝上不被包管理器所管理的檔案,將來解除安裝也不方便,我還是更希望所有的檔案都在一個包管理器中管理的。
  • 聽說新版本核心引入了某個牛逼的東西?我就想快速測試一下玩玩,我電腦還有計算在跑著呢,我可不想重啟,那就只能用虛擬機器嘗試了。而且,一定要快速,我可不想為此特地裝一個虛擬機器。

上述的這些不方便之處是可以通過自己管理系統時的一些技巧來克服的,本文目的就是來介紹一下這些技巧。通過這些技巧,我們實現的功能是:一臺機器上,可以同時安裝Windows跟若干Linux系統,Windows下可以通過虛擬機器來執行位於本地磁碟的這些Linux系統,而這些Linux系統下也可以通過容器或者虛擬機器的方式互相執行。並且這些系統可以非常方便地備份跟刪除,也可以隨時建立以及執行快照。並且這些Linux系統可以隨時打包帶走,只需要經過很少的修改,就能直接在U盤或者其他機器上執行。如果要換電腦,或者新裝一臺電腦,也不需要重新安裝系統,只需要把已有的系統同步到新電腦就行。這也正是這篇文章標題的意思。

為了行文的方便,我們假定讀者有一臺全新的機器,硬碟還沒分割槽,也還沒裝任何系統。如果已經什麼都裝好了,而只是想遷移到我這種管理方式的話,我相信讀者能夠判斷這個安裝教程中哪些步驟是需要做的哪些步驟是不需要做的。 另外需要注意的是這不是一個手把手的一步一步的教程,中間有一些顯然的步驟我就略去不寫了,所以希望讀者不要照著文章裡的的命令不加思考地一條一條貼上執行,而是要搞明白這些命令的目的是什麼,然後根據你自己的情況來做相應的修改。

分割槽與子卷

具體怎麼分割槽我就不說了,隨便找個livecd啟動進去,然後找到你自己最喜歡的分割槽程式,按照你的喜好把區分了就好。注意別忘了EFI分割槽。我這裡需要說的是,分割槽的時候,不論有多少個發行版要安裝,總共只給Linux劃分兩個分割槽:一個是swap,另一個則是一個大的btrfs分割槽。那個btrfs分割槽裡面裝著所有的檔案,包括使用者的個人資料,以及所有發行版的rootfs。這兩個分割槽在格式化的時候,一定要給他們取Label,這麼做的好處接下來我們很快就會看到。我的習慣是,swap分割槽的Label我就叫他“swap”,而那個btrfs分割槽我則叫他“linux”。建立好分割槽以後,如果格式化工作是在圖形的分割槽管理程式下完成的,那麼指定Label是個非常簡單的工作,右鍵屬性裡面就有。如果是使用命令列工具格式化分割槽的,則可以使用-L label選項來指定label,比如:

12 mkswap-Lswap/dev/sdb4mkfs.btrfs-Llinux/dev/nvme0n1p4

那個大的btrfs分割槽上的不同內容是通過btrfs的子捲來管理的,具體來講就是為自己想安裝的每個不同的Linux系統來建立一個單獨的子卷。 比如說我電腦上同時安裝了Archlinux、Ubuntu、Kali、Debian四個系統,那麼的btrfs分割槽裡面就有四個子卷:archlinux、ubuntu、kali、debian。 子卷的建立可以通過btrfs subvolume create <name>命令完成,比如說要建立我這五個子卷,需要做的事情就是:

123456 mount/dev/disk/by-label/linux/mntcd/mntbtrfs subvolume create archlinuxbtrfs subvolume create ubuntubtrfs subvolume create kalibtrfs subvolume create debian

如果你只想裝一個發行版,比如archlinux,那麼只需要archlinux子卷就夠了。另外,如果你想把使用者資料單獨放在一個子卷裡,也是完全可以的,不過這裡不推薦多個Linux系統共享同一個家目錄,因為不同系統上安裝的軟體不同,同樣的軟體版本也不相同,即使版本相同,不同發行版也可能應用了不同的patch,這就導致在一個系統上使用者家目錄裡面產生的配置檔案,在另一個系統裡無法相容,產生奇怪的行為。

系統安裝

建立好分割槽與子卷,下一步就是安裝作業系統了。這裡分兩種情況來講:第一種情況是你想要全新安裝一個Linux作業系統;第二種情況則是你已經有了某個可用的作業系統了,而只是想把這個作業系統遷移到文章所說的管理方式上。

全新安裝

如果想要全新安裝一個作業系統,安裝方式上,作者只推薦純手工安裝,而不是用官方給的安裝光碟不斷點著“下一步”來進行安裝。這麼做是為了防止官方安裝程式做一些我們不想讓他做的事情,比如說自動安裝grub。對於Archlinux跟Gentoo來講,唯一的安裝方法就是純手工安裝,所以只要按照官方的教程來就好了。對於deb系的系統,可以使用debootstrap程式。對於其他的發行版,可能會找不到手工安裝的教程,這時候可以新建一個虛擬機器,在虛擬機器中使用官方的安裝程式不斷點選“下一步”來完成安裝,然後按照下一節即將介紹的現有系統遷移教程把系統從虛擬機器中遷移到現實機器上;除此之外,讀者還可以找到發行版官方提供的安裝程式的原始碼閱讀一下,看明白這些安裝程式都在幹啥,就知道怎麼手工安裝了,安裝程式的程式碼還是相對簡單的,有時間的讀者不妨嘗試一下。下面來具體說一下安裝過程,這裡只介紹Archlinux跟deb系。如果有多個Linux系統需要安裝,建議先安裝並完全配置好其中一個,讓這個系統處於可用並且方便使用的狀態,然後再在這個可用的系統中安裝其他系統。這裡我們假設讀者已經完成了分割槽,建立了對應的子卷,並且把那個btrfs分割槽掛載在了/mnt上。

Archlinux的手動安裝

Archlinux的手動安裝主要還是看官方教程。分割槽的時候注意按照上文介紹的方法。非常關鍵的pacstrap那一步注意使用如下命令安裝到子卷裡,而不是整個btrfs分割槽中:

1 pacstrap-d/mnt/archlinux base

至於fstab,就不要使用教程中的方法來生成了,我們的管理方式比較非常規,還是自己寫fstab比較好。bootloader也要按照本文下文說的方式來安裝跟配置。至於其他的設定鍵盤、設定網路、設定時區等操作,照著教程來就行。

deb系的手動安裝

deb系的系統網上找到的教程都是使用發行版自帶的安裝程式的教程,並沒有像Archlinux那麼詳細的手動安裝教程。因為我們想要手動安裝,所以我們就不參照網上的deb系的安裝教程了。但是我們還是有教程可以參照的,那就是Archlinux的wiki裡面關於systemd-nspawn的教程,這個教程裡面有一節介紹如何使用debootstrap安裝Debian或者Ubuntu。具體安裝過程請參照上述教程,其中關鍵命令如下:

1 debootstrap--arch amd64 zesty/mnt/ubuntu http://archive.ubuntu.com/ubuntu/

值得一提的是,我們安裝deb系的發行版並不一定要使用deb系的livecd,任何能夠安裝debootstrap程式的livecd都是可以的。比如說我們完全可以使用Archlinux的livecd來啟動,然後安裝debootstrap並通過debootstrap來安裝Ubuntu。

注意的是,debootstrap並不會像官方安裝程式那樣安裝一個完整齊全開袋即食的作業系統,而只是安裝最基本的軟體包,讀者需要根據自己的情況單獨安裝桌面環境等的軟體包。同時fstab跟bootloader也要根據本文的方法自己配置。

現有系統遷移

Linux系統的遷移其實非常簡單,無非就是把rootfs的檔案全都拷貝到目的地即可。不過這個過程雖然看似簡單,但是還是有一些需要注意的東西的。比如說對於符號連結,如果處理不當,則會不小心把符號連結搞成實體檔案,這就不好了。再比如說,檔案的許可權等元資料的問題,如果處理不當,可能會導致拷貝過程中元資料的丟失。這兩種問題,都有可能會導致系統不能正常執行。還有一個需要注意的地方就是,正常執行的作業系統裡,會有/proc、/dev等目錄,這些目錄都是單獨的虛擬檔案系統,是不需要拷貝的,也是無法拷貝的。

我們現在假設使用者想要把位於A的Ubuntu系統遷移到目標子卷/mnt/ubuntu去。其中,A可能位於虛擬機器中,可能位於另一臺電腦上,也可能位於本地磁碟。對系統進行遷移,大方向上來講,需要做的有兩步:

  1. 掛載相應分割槽,設定ssh,保證我們能夠訪問到A。
  2. 使用rsync或者btrfs send命令來把資料從A傳送到目標子卷中去。

第一步具體怎麼做就不說了,分三種情況簡單幾句話概括一下怎麼做:

  • 如果只是一個分割槽的話,mount就可以了
  • 如果是另一臺機器,把那臺機器配置好ssh,保證root使用者可以用ssh訪問
  • 如果是虛擬機器,有兩種選擇,一種是想辦法掛載虛擬機器的磁碟映象,然後像情況1那樣處理;另一種則是配置好網路跟ssh,像情況2那樣處理。具體採取哪種措施請讀者根據自己的情況來自行決定。

第二步我們來分別介紹rsyncbtrfs send兩種方法。

rsync的方法這裡有教程可以參照。我們現在假設A的ip地址為192.168.88.3。則只需執行如下命令即可:

1 rsync-aAXv--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}root@192.168.88.3://mnt/ubuntu

這裡提醒讀者注意自己系統上是否還有其他不想要同步的檔案,記得一併排除掉。

btrfs send只在A的rootfs也是btrfs的情況下才能使用。這個方法的教程參見這裡。首先需要做的是在A機器上給rootfs建立一個只讀快照(注意下面命令是在A機器上執行的):

1 btrfs subvolume snapshot-r//ubuntu

注意上面命令中快照的名字要和目標子卷的名字相同,這樣可以省去將來改名的麻煩。然後就可以使用btrfs send命令來把快照/ubuntu中的內容傳送到目的地了,在這之前我們需要暫時刪除我們分割槽的時候建立的ubuntu子卷,這個子卷會在接收過程中自動重新建立:

12 btrfs subvolume delete/mnt/ubuntussh root@192.168.88.3btrfs send/ubuntu|btrfs receive/mnt

最後在A機器上把剛剛建立的快照刪除就可以了

1 btrfs subvolume delete/ubuntu

bootloader與fstab

系統裝好了,我們的fstab還沒設定,啟動管理器也還沒安裝配置。下面來講講怎麼配置這兩樣東西。我們之前說過一定要給分割槽取一個Label,玄機在這裡。如何在虛擬機器中直接執行本地磁碟上安裝的Linux,以及如何能把一個系統直接進行打包帶走而不需要更改太多配置,關鍵也在這裡。

fstab

先來說說fstab,fstab總共有五列,分別為fs、mountpoint、type、opts跟dump/pass。這五列分別為什麼意思、以及fstab該怎麼填,網上一查便知,在此不再贅述。這裡只說我們需要做的跟常規不一樣的地方。

第一個要注意的事情是,大家在填寫fstab的時候,通常喜歡在fs那一列填寫類似/dev/sda4或者UUID=d5acc217-d524-4a2d-a937-bad945a047b2,而在這裡這樣是不行的,這裡我們填寫的是形如/dev/disk/by-label/linux這樣的東西。也就是說,我們的fstab裡面是通過分割槽的Label來找分割槽的。這麼做的原因是,我們希望我們的rootfs不光能在這臺機器上啟動,還希望它能在虛擬機器的環境中,或者當我們把rootfs打包帶走同步到別的機器上的時候,也能正常啟動。在這臺機器上rootfs所在的分割槽叫做/dev/sda4,在別的機器上或者虛擬機器裡就不一定還叫/dev/sda4了。但是我們只要遵守自己的命名規則,所有機器上的這些分割槽我們都取相同的Label,那麼我們的fstab就是放之四海而皆準的,不需要為不同的環境而更改。

第二個需要注意的問題是,不要填寫rootfs的條目。這種做法跟通常發行版或者其他使用者的預設做法是非常不相同的。為了理解這一點,先來說說Linux系統的啟動過程。通常情況下,Linux啟動的時候,首先由bootloader把核心裝載到記憶體,並向核心傳遞引數告訴核心rootfs的位置。接下來核心就會根據傳遞的引數,以只讀方式掛載rootfs,並執行rootfs中的init程式。init程式會呼叫相應的初始化程式執行各種初始化操作。其中一項初始化操作就是根據fstab的配置,來重新以讀寫方式掛載rootfs,並且掛載fstab裡面配置的其他各個分割槽到指定位置。明白了Linux啟動的過程,我們就知道,fstab裡面的rootfs那一行其實不是必須的。刪掉了rootfs那一行,我們只需要通過修改bootloader傳遞給核心的引數,就可以告訴核心直接以讀寫而不是隻讀的方式掛載rootfs。

那麼,我們在寫fstab的時候不寫rootfs那一項有啥好處呢?好處就是,我們不僅希望我們的系統能在裸機上用,還希望我們的系統能在虛擬機器上用。在下文設定qemu虛擬機器的時候,我們會以virtfs的方式把我們的子卷傳遞給虛擬機器,這個時候rootfs就已經不再是/dev/disk/by-label/linux了,如果我們把rootfs的掛載方式硬編碼到fstab裡面,那麼會導致init程式的失敗,進而無法啟動。

另外有一點值得一提的小技巧是,很多時候我們還有別的一些個分割槽想要自動掛載。問題在於,這些分割槽在虛擬機器環境中,並不一定是存在的,這就會導致啟動的時候由於無法掛載而啟動失敗。其實系統的設計者早就考慮到這個問題了。如果你不希望fstab中的某些條目自動掛載,在選項裡面增加noauto即可。如果你希望一些條目自動掛載,但是這些條目不是那麼重要,即使掛載失敗也不希望這些條目導致啟動失敗,可以在選項中增加nofail。這兩個選項真的是給我們的系統管理工作提供了非常大的方便。比如說我們可能會在fstab中增加/dev/disk/by-label/swap的條目,以便開機自動將這個分割槽設定為交換分割槽供系統使用。然而後面我們會看到,我們設定虛擬機器的時候,這個分割槽在虛擬機器環境下,並不一定是可用的。這種情況下,我們希望系統在找不到這個分割槽的時候直接忽略錯誤不用swap便是,而不是報錯拒絕啟動。

說了這麼多,直接貼一個fstab的例子好了:

12 tmpfs/tmp tmpfs defaults00/dev/disk/by-label/swap none swap defaults,nofail00

bootloader

再來說說啟動管理器,這裡作者推薦的啟動管理器是refind,安裝教程官網有,在此不贅述。這裡只講一下啟動項怎麼寫。先貼示例程式碼:

1234567 menuentryarchlinux{icon EFI/refind/icons/os_arch.pngvolume linuxloader archlinux/boot/vmlinuz-linuxoptions"root=/dev/disk/by-label/linux rootflags=subvol=archlinux rw"initrd archlinux/boot/initramfs-linux.img}

其中第三行的volume用來指定核心存放的分割槽,此分割槽可以通過多種方式來指定,比如通過分割槽的GUID,但是對我們來說最重要的是可以通過檔案系統的Label來指定。我們的rootfs分割槽Label是”linux”,所以這一行寫作volume linux

接下來就是指定核心位置、核心引數跟initramfs的位置了。其中loader用來指定核心位置,options用來指定核心引數,initrd則用來指定initramfs的位置。示例中的是Archlinux系統,核心是archlinux子卷中的boot/vmlinuz-linux檔案,所以寫作loader archlinux/boot/vmlinuz-linux。類似,initrd那一行則寫作initrd archlinux/boot/initramfs-linux.img。至於核心引數,root=/dev/disk/by-label/linux告訴核心我們的rootfs所在的分割槽,rootflags=subvol=archlinux告訴核心掛載名為archlinux的子卷,rw則告訴核心以讀寫方式掛載。對於Ubuntu系統,這三行應該寫作:

123 loader ubuntu/vmlinuzoptions"root=/dev/disk/by-label/linux rootflags=subvol=ubuntu rw"initrd ubuntu/initrd.img

細心的讀者可能已經發現,我們的refind的配置檔案中在指定分割槽的時候用的全是他們的Label,這就保證了這個配置檔案的普適性,換臺電腦,只要你用同樣的管理方式,同樣的命名習慣,配置檔案裡面的東西動都不用動,直接拷貝過去就行。

系統的備份與恢復以及快照的應用

由於使用了btrfs的動態卷,所以備份恢復工作做起來非常簡單。備份系統只需要建立快照即可:

12 cd/mntbtrfs subvolume snapshot archlinux backup

至於恢復,其實我們根本不需要恢復,直接把快照作為rootfs用就行。我們只需要去refind的配置檔案裡面,把相應的啟動項改改即可。比如說對於Archlinux而言,只需要改成:

1234567 menuentryarchlinux{icon EFI/refind/icons/os_arch.pngvolume linuxloader backup/boot/vmlinuz-linuxoptions"root=/dev/disk/by-label/linux rootflags=subvol=backup rw"initrd backup/boot/initramfs-linux.img}

如果有強迫症,覺得rootfs名字不叫archlinux很不爽,那其實改名也很簡單:

123 cd/mntbtrfs subvolume delete archlinuxbtrfs subvolume snapshot backup archlinux

其實,btrfs的快照功能不僅可以用來備份與恢復系統,還有很多非常靈活的運用的。比如說我想在系統裡面安裝一個巨大而又混亂的軟體,這個軟體我只想用幾天幹一件事情,幹完這件事情我就不想用了。問題是,這個軟體在官方的軟體倉庫並沒有,要安裝,我只能使用軟體提供的安裝程式來安裝,然而軟體並沒有提供解除安裝程式,或者解除安裝程式解除安裝的很不徹底,會在系統殘留垃圾。我想用這軟體,然而又不想髒了我的系統,這該怎麼辦?很簡單:建立一個快照,新增加一條以快照為rootfs的啟動項,要用軟體了就啟動到快照中去,用完這個軟體以後把快照刪除即可。再比如說,我想要搞個虛擬機器跟實體機一起來測試某個東西(比如說測試某些網路協議、測試某些叢集管理軟體等),這個時候我根本沒必要重新用安裝光碟去裝一個虛擬機器,只需要建立一個快照,然後把快照作為虛擬機器的rootfs啟動即可,具體方法下文會介紹,在此不多說。當然,快照的應用還遠遠不止我說的這些,更多好玩的應用還待讀者自己探索。

Windows下訪問Linux

從文章的剛開頭我們就說,有時候我們是有在Windows下執行本地安裝的Linux的需求的。這個需求可以通過VirtualBox來滿足,只需要在VirtualBox中使用本地磁碟來作虛擬磁碟即可。說起來簡單,但是實現起來還是需要折騰一下子的。

首先我們需要新建一個虛擬機器,具體過程不多說,一路“下一步”就行了,唯一需要注意的是,在建立虛擬磁碟的那一步,選擇“不新增虛擬硬碟”:
virt_hdd.png

這裡我的虛擬機器取名為“Linux”。建立完虛擬機器了以後,就需要把本地磁碟設定為虛擬磁碟了。VirtualBox只能通過命令來做這件事情,教程可以在這裡找到。首先要做的是尋找我們安裝Linux的磁碟的編號,這個可以在系統自帶的磁碟管理程式中找到,在我的機器上這個磁碟編號為2:
dskmgr.png
知道了磁碟的編號,就可以建立虛擬盤了。這裡我們使用的命令如下,注意使用管理員身份執行:

1 VBoxManage internalcommands createrawvmdk-filename"C:\Users\gaoxiang\VirtualBox VMs\Linux\localdisk.vmdk"-rawdisk\\.\PhysicalDrive2

有了虛擬磁碟了,就可以將虛擬磁碟新增到虛擬機器中去了:
newdisk.png

虛擬磁碟設定好了,最後一步就是設定EFI了。由於我們之前在分割槽的時候給檔案系統都賦予了Label,並且在refind設定的時候也是用的Label來指定分割槽,所以同一套refind的配置在虛擬機器上也能用。因此我們不需要單獨給虛擬機器安裝bootloader,而是直接用我們之前安裝在物理磁碟上的EFI分割槽中的refind就行。VitualBox預設是不開啟EFI的,我們需要在虛擬機器的系統設定裡面手動勾選EFI:
efi.png
為了要讓VirtualBox自動啟動refind,還要對EFI的分割槽做一些簡單的設定,設定的教程參考這裡。設定的時候一定要注意,這些設定一定要是通用的,即同一份檔案既能在物理機上正常工作也能在虛擬機器上正常工作,不要改完了設定以後虛擬機器上能跑了物理機卻掛了,這就不好玩了。VirtualBox的EFI在啟動的時候會優先選擇/EFI/BOOT/BOOTX64.EFI,如果找不到的話,才會啟動EFI分割槽根目錄下的startup.nsh中指定的bootloader。知道了這一點,為了實現自動啟動refind,首先需要檢查一下/EFI/BOOT/BOOTX64.EFI這個檔案是否存在,若存在,備份並刪除之:

12 cd EFI/BOOTmv bootx64.efi bootx64-backup.efi

然後就是在EFI分割槽根目錄下新建一個startup.nsh了,這個檔案只需要一行,內容如下:

1 \EFI\refind\refind_x64.efi

一切設定完畢,執行虛擬機器,就能看到我們熟悉的refind介面了:
refind.png
開啟其中的Ubuntu系統,測試一切正常就大功告成了:

相關推薦

主力虛擬機器隨時打包帶走Linux 就是這麼強大

這裡介紹一下自己管理自己的Linux桌面的一點經驗吧,我覺得還是有不少可取之處的。先來說一下大多數人管理Linux桌面的方法有哪些不方便的地方吧: 買新電腦了,又得在新電腦上安裝Linux,安裝各種軟體,各種庫,各種開發環境,配置各種服務,真麻煩。 最近一直在用電

虛擬機器CentOS7 不上網問題解決親測有效

最近在VMware虛擬機器裡玩Centos,裝好後發現上不了網。經過一番艱辛的折騰,終於找到出解決問題的方法了。最終的效果是無論是ping內網IP還是ping外網ip,都能正常ping通。方法四步走: 第一步,我們進入/etc/sysconfig/network-scr

解決虛擬機器鍵盤不使用使用但會模糊錯亂的問題

一直以來有個困擾我的關於虛擬機器的問題,今天終於解決了,特寫出來與大家分享! 問題:鍵盤在虛擬機器裡不能使用,偶爾能使用但還會出現模糊錯亂的情況。 我的解決方法: 1、將虛擬機器關閉,然後啟動(注意先不要啟動虛擬機器裡安裝的Linux或win等系統)。 編輯--》首選項--

java客戶端進行kafka測試時生產者不生產資訊消費者不消費資訊而且沒有報錯但是在虛擬機器中沒有任何錯誤

我的kafka在虛擬機器中都正常啟動,而且在虛擬機器中生產和消費資訊都沒有錯誤,但是使用window客戶端生產和消費時不成功,而且也不報任何錯誤,生產和消費訊息時都停留一段時間然後結束。以下是我提供的一種思路,但不一定適合所有這樣的錯誤:1.先看一下虛擬機器系統中kafka安

派克斯寬頻不同時登入如何更改VM虛擬機器mac地址

有很多客戶有許多裝置的時候,會用虛擬機器來代替一臺臺電腦裝置,在虛擬機器裡面安裝使用派克斯軟體,也有很多客戶為了節省時間都會選擇克隆虛擬機器,這樣就會導致資訊會完全一致,連線寬頻的時候會出現只能連線一個的情況,再連另外一臺的寬頻前一臺就會下線,多數是mac地址一樣的原因導致,那如何更改虛擬機器的ma

虛擬機器中不上外網

虛擬機器中不能上外網,報錯如下: curl: (6) Could not resolve host: www.baidu.com; 一般是DNS配置得不對。因此修改一下DNS [[email protected] ~]# vim /etc/resolv.conf // 原先的DN

發現你的OpenStack虛擬機器網路有問題不妨先試一下這16個步驟

1. Security Group全部開啟,這是最基本的,但是很多人容易忘記 其實遇到過無數這種場景了,Debug了半天網路問題,各種手段都用上了,最後發現安全組竟然沒有開啟。   2. 通過介面檢視虛擬機器的log,也可以在compute節點上檢視console.log檔案,看看裡面是否有DHCP

解決論壇內吾愛破解專用虛擬機器系統不安裝VMwaretools問題!

必大家在論壇在論壇裡下載虛擬機器系統裝好後不能安裝VMwaretools苦惱了很久,論壇裡面也沒有相關教程,下面教大家如何可以安裝,很簡單!先把論壇下載的虛擬機器系統解壓到自己要儲存的碟符! 然後 找到裡面的Windows XP By 52PoJie.vmx 這個檔案 用記

XP不ping通開發板與虛擬機器原因

    臺式PC機與開發板、虛擬機器互ping,後兩者可以ping通前者。前者ping不通後者。     開發板、虛擬機器與臺式PC用交叉網線直連。由於桌上型電腦使用了360wifi,在物理網絡卡上虛擬出來的無線網絡卡,所以悲劇了。     臺式PC機對外盤ping都被虛擬

win10 Ping通卻無法訪問虛擬機器Ubuntu 14.04 samba的問題(已解決)

windows系統版本:Win10虛擬機器版本:VMware® Workstation 12 ProUbuntu版本:14.04在更新windows10補丁之前,Win10是能訪問Ubuntu系統的Samba服務的,更新之後不能訪問了。現象如下圖:Win10也能正常Ping通

變身遊戲利器?這些古怪的功能型手機殼讓你驚訝腦洞這樣開

手機殼不得不說,3D打印技術的普及,讓手機殼這門腦洞玩法,有了更多的民間元素,而且中,必須要有的關鍵詞是功能拓展。否則,一個花哨的手機殼,就只是一個保護罩而已,無法驚艷。比如2016年夏天,正是任天堂出品的AR手遊《精靈寶可夢Go》大熱的時段。然而,這個手遊各種體驗都極佳的同時,也有個大Bug——耗電。要知道

安裝虛擬機器的兩種方法(圖形化指令碼)

圖形化安裝虛擬機器 安裝虛擬機器需要計算機CPU支援虛擬化功能 /proc/cpuinfo 中可以檢視CPU的具體資訊,指令集含有vmx(intel)或svm(amd)說明此CPU具有全虛擬化功能 虛擬機器圖形化安裝步驟 root使用者開啟virt-manager,可用f

contos7 ping不通百度無法連線虛擬機器

之前可以連線上正常使用,重啟之後今天連不上虛擬機器了,找一圈發現是Windows上的net服務關閉了 ping: www.baidu.com: 未知的名稱或服務   1.重啟網路試試 systemctl restart network或者service network restart

使用kubeadm安裝單節點kubernetes叢集在vmware虛擬機器centos7

關閉防火牆 systemctl stop firewalld && sudo systemctl disable firewalld 安裝docker-ce 17.06 yum remove docker \ docker-c

為 Notepad++ 安裝 NppFTP 外掛檢視修改虛擬機器上的文字檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

mac的虛擬機器上安裝wampservermac訪問虛擬機器伺服器

其中遇到很多問題: 1,You don't have permission to access /index.php on this server(這個不是防火牆問題,好像是修改deny from all 為 allow from all 就可以解決) 2,the requested URL /

Linux】主機可以ping通Ubuntu虛擬機器但Ubuntu虛擬機器ping不通主機的解決方案

使用的Windows10的主機,Ubuntu16.04的虛擬機器 使用橋接模式,可以從主機ping通虛擬機器,但是反過來的時候不可以ping通,所以猜測是防火牆的問題,但是關閉防火牆這個辦法,有點因噎廢食。 在網上查資料發現是Windows10的防火牆沒有開啟ICMPv4-In這個規則。所以

ubuntu作業系統虛擬機器掛起繼續執行虛擬機器無網路連線該怎麼辦?

每次把虛擬機器關機後,網路就可以通了,但是很多時候,我們需要它能在我們下次再來的時候能夠保持原樣。 我的虛擬機器是ubuntu作業系統,所以開啟終端 輸入命令:vim /etc/network/interfaces 然後發現自己沒有許可權 這時候我們給這個檔案新增可執行,讀寫,

【原創】一個執行緒oom程序裡其他執行緒執行嗎?

引言 這題是一個網友@大臉貓愛吃魚給我的提問,出自今年校招美團三面的一個真題。大致如下 一個程序有3個執行緒,如果一個執行緒丟擲oom,其他兩個執行緒還能執行麼? 先說一下答案,答案是還能執行 不瞞大家說,真在面試中,我遇到這一題,我估計也是答錯。因為我初看到這一題,內心嘿嘿一笑,覺得這題是在考察JVM的

網路環境切換會導致虛擬機器網路地址更換

網路環境切換,會導致虛擬機器網路地址更換,這個時候又不想修改host檔案 開啟虛擬機器設定,開啟網路:連線方式 => 下拉選擇:網路地址轉接(NAT) 高階 => 新增埠轉發 設定為:ssh TCP 空格 22 空格 22   重啟虛擬機器終端 => 輸入